63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
import os
|
|
from contextlib import closing
|
|
|
|
from werkzeug.middleware.shared_data import SharedDataMiddleware
|
|
from werkzeug.test import create_environ
|
|
from werkzeug.test import run_wsgi_app
|
|
|
|
|
|
def test_get_file_loader():
|
|
app = SharedDataMiddleware(None, {})
|
|
assert callable(app.get_file_loader("foo"))
|
|
|
|
|
|
def test_shared_data_middleware(tmpdir):
|
|
def null_application(environ, start_response):
|
|
start_response("404 NOT FOUND", [("Content-Type", "text/plain")])
|
|
yield b"NOT FOUND"
|
|
|
|
test_dir = str(tmpdir)
|
|
|
|
with open(os.path.join(test_dir, "äöü"), "w") as test_file:
|
|
test_file.write("FOUND")
|
|
|
|
for t in [list, dict]:
|
|
app = SharedDataMiddleware(
|
|
null_application,
|
|
t(
|
|
[
|
|
("/", os.path.join(os.path.dirname(__file__), "..", "res")),
|
|
("/sources", os.path.join(os.path.dirname(__file__), "..", "res")),
|
|
("/pkg", ("werkzeug.debug", "shared")),
|
|
("/foo", test_dir),
|
|
]
|
|
),
|
|
)
|
|
|
|
for p in "/test.txt", "/sources/test.txt", "/foo/äöü":
|
|
app_iter, status, headers = run_wsgi_app(app, create_environ(p))
|
|
assert status == "200 OK"
|
|
|
|
if p.endswith(".txt"):
|
|
content_type = next(v for k, v in headers if k == "Content-Type")
|
|
assert content_type == "text/plain; charset=utf-8"
|
|
|
|
with closing(app_iter) as app_iter:
|
|
data = b"".join(app_iter).strip()
|
|
|
|
assert data == b"FOUND"
|
|
|
|
app_iter, status, headers = run_wsgi_app(
|
|
app, create_environ("/pkg/debugger.js")
|
|
)
|
|
|
|
with closing(app_iter) as app_iter:
|
|
contents = b"".join(app_iter)
|
|
|
|
assert b"docReady(() =>" in contents
|
|
|
|
for path in ("/missing", "/pkg", "/pkg/", "/pkg/missing.txt"):
|
|
app_iter, status, headers = run_wsgi_app(app, create_environ(path))
|
|
assert status == "404 NOT FOUND"
|
|
assert b"".join(app_iter).strip() == b"NOT FOUND"
|