animetix-web / tests /backend /test_middleware_async.py
MissawB's picture
Upload folder using huggingface_hub (part 6)
4e19890 verified
Raw
History Blame Contribute Delete
2.54 kB
import asyncio
import pytest
from animetix.middleware import (
UserTierMiddleware,
UserTrackingMiddleware,
user_id_var,
user_tier_var,
)
from django.contrib.auth.models import User
from django.test import RequestFactory
@pytest.mark.django_db
class TestMiddlewareAsync:
@pytest.fixture(autouse=True)
def setup_method(self, db):
self.factory = RequestFactory()
self.user = User.objects.create_user(username="testuser", password="password")
def test_user_tracking_middleware_sync(self):
def get_response(request):
assert user_id_var.get() == self.user.id
return "OK"
middleware = UserTrackingMiddleware(get_response)
request = self.factory.get("/")
request.user = self.user
response = middleware(request)
assert response == "OK"
assert user_id_var.get() is None
@pytest.mark.asyncio
async def test_user_tracking_middleware_async(self):
async def get_response(request):
assert user_id_var.get() == self.user.id
return "OK"
middleware = UserTrackingMiddleware(get_response)
request = self.factory.get("/")
request.user = self.user
# Django's middleware __call__ handles the dispatch if we implemented it that way
response = middleware(request)
if asyncio.iscoroutine(response):
response = await response
assert response == "OK"
assert user_id_var.get() is None
def test_user_tier_middleware_sync(self):
def get_response(request):
assert user_tier_var.get() == "free"
assert request.user_tier == "free"
return "OK"
middleware = UserTierMiddleware(get_response)
request = self.factory.get("/")
request.user = self.user
response = middleware(request)
assert response == "OK"
assert user_tier_var.get() == "free" # default is free
@pytest.mark.asyncio
async def test_user_tier_middleware_async(self):
async def get_response(request):
assert user_tier_var.get() == "free"
assert request.user_tier == "free"
return "OK"
middleware = UserTierMiddleware(get_response)
request = self.factory.get("/")
request.user = self.user
response = middleware(request)
if asyncio.iscoroutine(response):
response = await response
assert response == "OK"
assert user_tier_var.get() == "free"