Skip to content

Commit 02a1ea8

Browse files
committed
added tests for async-only middlewares
1 parent df7893d commit 02a1ea8

File tree

3 files changed

+429
-0
lines changed

3 files changed

+429
-0
lines changed

tests/test_middlewares/__init__.py

Whitespace-only changes.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from inspect import iscoroutinefunction
2+
3+
import pytest
4+
from django.core.exceptions import ImproperlyConfigured
5+
from django.http.response import HttpResponse
6+
7+
from django_async_extensions.amiddleware.base import AsyncMiddlewareMixin
8+
from django_async_extensions.amiddleware.security import AsyncSecurityMiddleware
9+
10+
11+
class TestMiddlewareMixin:
12+
middlewares = [
13+
AsyncSecurityMiddleware,
14+
]
15+
16+
def test_repr(self):
17+
class GetResponse:
18+
async def __call__(self):
19+
return HttpResponse()
20+
21+
async def get_response():
22+
return HttpResponse()
23+
24+
assert (
25+
repr(AsyncMiddlewareMixin(GetResponse()))
26+
== "<AsyncMiddlewareMixin get_response=GetResponse>"
27+
)
28+
assert (
29+
repr(AsyncMiddlewareMixin(get_response))
30+
== "<AsyncMiddlewareMixin get_response="
31+
"TestMiddlewareMixin.test_repr.<locals>.get_response>"
32+
)
33+
34+
def test_passing_explicit_none(self, subtests):
35+
msg = "get_response must be provided"
36+
for middleware in self.middlewares:
37+
with subtests.test(middleware=middleware):
38+
with pytest.raises(ValueError, match=msg):
39+
middleware(None)
40+
41+
def test_coroutine(self, subtests):
42+
async def async_get_response(request):
43+
return HttpResponse()
44+
45+
def sync_get_response(request):
46+
return HttpResponse()
47+
48+
for middleware in self.middlewares:
49+
with subtests.test(middleware=middleware.__qualname__):
50+
middleware_instance = middleware(async_get_response)
51+
assert iscoroutinefunction(middleware_instance)
52+
53+
with pytest.raises(ImproperlyConfigured):
54+
middleware(sync_get_response)

0 commit comments

Comments
 (0)