✅ add tests to cover new middleware
This commit is contained in:
parent
b9ad2467df
commit
f4ffa14b00
2 changed files with 68 additions and 3 deletions
|
@ -23,8 +23,9 @@ from spiderweb.tests.views_for_tests import (
|
||||||
form_csrf_exempt,
|
form_csrf_exempt,
|
||||||
form_view_without_csrf,
|
form_view_without_csrf,
|
||||||
text_view,
|
text_view,
|
||||||
unauthorized_view,
|
unauthorized_view, file_view,
|
||||||
)
|
)
|
||||||
|
from spiderweb.middleware.gzip import GzipMiddleware, CheckValidGzipMinimumLength, CheckValidGzipCompressionLevel
|
||||||
|
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
|
@ -349,6 +350,67 @@ def test_unused_post_process_middleware():
|
||||||
assert len(app.middleware) == 0
|
assert len(app.middleware) == 0
|
||||||
|
|
||||||
|
|
||||||
|
class TestGzipMiddleware:
|
||||||
|
middleware = {"middleware": ["spiderweb.middleware.gzip.GzipMiddleware"]}
|
||||||
|
|
||||||
|
def test_not_enabled_on_small_response(self):
|
||||||
|
app, environ, start_response = setup(
|
||||||
|
**self.middleware,
|
||||||
|
gzip_minimum_response_length=500,
|
||||||
|
)
|
||||||
|
app.add_route("/", text_view)
|
||||||
|
|
||||||
|
environ["HTTP_USER_AGENT"] = "hi"
|
||||||
|
environ["REMOTE_ADDR"] = "/"
|
||||||
|
environ["REQUEST_METHOD"] = "GET"
|
||||||
|
|
||||||
|
assert app(environ, start_response) == [bytes("Hi!", DEFAULT_ENCODING)]
|
||||||
|
assert "Content-Encoding" not in start_response.get_headers()
|
||||||
|
|
||||||
|
def test_changing_minimum_response_length(self):
|
||||||
|
app, environ, start_response = setup(
|
||||||
|
**self.middleware,
|
||||||
|
gzip_minimum_response_length=1,
|
||||||
|
)
|
||||||
|
app.add_route("/", text_view)
|
||||||
|
|
||||||
|
environ["HTTP_ACCEPT_ENCODING"] = "gzip"
|
||||||
|
environ["HTTP_USER_AGENT"] = "hi"
|
||||||
|
environ["REMOTE_ADDR"] = "/"
|
||||||
|
environ["REQUEST_METHOD"] = "GET"
|
||||||
|
assert str(app(environ, start_response)[0]).startswith("b'\\x1f\\x8b\\x08")
|
||||||
|
assert "content-encoding" in start_response.get_headers()
|
||||||
|
|
||||||
|
def test_not_enabled_on_error_response(self):
|
||||||
|
app, environ, start_response = setup(
|
||||||
|
**self.middleware,
|
||||||
|
gzip_minimum_response_length=1,
|
||||||
|
)
|
||||||
|
app.add_route("/", unauthorized_view)
|
||||||
|
|
||||||
|
environ["HTTP_ACCEPT_ENCODING"] = "gzip"
|
||||||
|
environ["HTTP_USER_AGENT"] = "hi"
|
||||||
|
environ["REMOTE_ADDR"] = "/"
|
||||||
|
environ["REQUEST_METHOD"] = "GET"
|
||||||
|
assert app(environ, start_response) == [bytes("Unauthorized", DEFAULT_ENCODING)]
|
||||||
|
assert "content-encoding" not in start_response.get_headers()
|
||||||
|
|
||||||
|
def test_not_enabled_on_bytes_response(self):
|
||||||
|
app, environ, start_response = setup(
|
||||||
|
**self.middleware,
|
||||||
|
gzip_minimum_response_length=1,
|
||||||
|
)
|
||||||
|
# send a file that's already in bytes form
|
||||||
|
app.add_route("/", file_view)
|
||||||
|
|
||||||
|
environ["HTTP_ACCEPT_ENCODING"] = "gzip"
|
||||||
|
environ["HTTP_USER_AGENT"] = "hi"
|
||||||
|
environ["REMOTE_ADDR"] = "/"
|
||||||
|
environ["REQUEST_METHOD"] = "GET"
|
||||||
|
assert app(environ, start_response) == [bytes("hi", DEFAULT_ENCODING)]
|
||||||
|
assert "content-encoding" not in start_response.get_headers()
|
||||||
|
|
||||||
|
|
||||||
class TestCorsMiddleware:
|
class TestCorsMiddleware:
|
||||||
# adapted from:
|
# adapted from:
|
||||||
# https://github.com/adamchainz/django-cors-headers/blob/main/tests/test_middleware.py
|
# https://github.com/adamchainz/django-cors-headers/blob/main/tests/test_middleware.py
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
from spiderweb import HttpResponse
|
from spiderweb import HttpResponse
|
||||||
from spiderweb.decorators import csrf_exempt
|
from spiderweb.decorators import csrf_exempt
|
||||||
from spiderweb.response import JsonResponse, TemplateResponse
|
from spiderweb.response import JsonResponse, TemplateResponse, FileResponse
|
||||||
|
|
||||||
|
|
||||||
EXAMPLE_HTML_FORM = """
|
EXAMPLE_HTML_FORM = """
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
|
@ -47,3 +46,7 @@ def text_view(request):
|
||||||
|
|
||||||
def unauthorized_view(request):
|
def unauthorized_view(request):
|
||||||
return HttpResponse("Unauthorized", status_code=401)
|
return HttpResponse("Unauthorized", status_code=401)
|
||||||
|
|
||||||
|
|
||||||
|
def file_view(request):
|
||||||
|
return FileResponse("spiderweb/tests/staticfiles/file_for_testing_fileresponse.txt")
|
||||||
|
|
Loading…
Add table
Reference in a new issue