✅ 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_view_without_csrf,
|
||||
text_view,
|
||||
unauthorized_view,
|
||||
unauthorized_view, file_view,
|
||||
)
|
||||
from spiderweb.middleware.gzip import GzipMiddleware, CheckValidGzipMinimumLength, CheckValidGzipCompressionLevel
|
||||
|
||||
|
||||
def index(request):
|
||||
|
@ -349,6 +350,67 @@ def test_unused_post_process_middleware():
|
|||
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:
|
||||
# adapted from:
|
||||
# https://github.com/adamchainz/django-cors-headers/blob/main/tests/test_middleware.py
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
from spiderweb import HttpResponse
|
||||
from spiderweb.decorators import csrf_exempt
|
||||
from spiderweb.response import JsonResponse, TemplateResponse
|
||||
|
||||
from spiderweb.response import JsonResponse, TemplateResponse, FileResponse
|
||||
|
||||
EXAMPLE_HTML_FORM = """
|
||||
<form action="" method="post">
|
||||
|
@ -47,3 +46,7 @@ def text_view(request):
|
|||
|
||||
def unauthorized_view(request):
|
||||
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