|
1 | 1 | from unittest.mock import AsyncMock, Mock |
2 | 2 |
|
3 | 3 | import pytest |
| 4 | +from asgiref.sync import sync_to_async |
| 5 | +from django.contrib.sessions.middleware import SessionMiddleware |
4 | 6 | from django.http import HttpRequest |
5 | 7 |
|
6 | | -from ninja_extra.security.session import AsyncSessionAuth |
| 8 | +from ninja_extra.security import async_django_auth |
7 | 9 |
|
8 | 10 |
|
9 | 11 | @pytest.mark.asyncio |
| 12 | +@pytest.mark.django_db |
10 | 13 | async def test_async_session_auth(): |
11 | | - auth = AsyncSessionAuth() |
12 | 14 | request = HttpRequest() |
13 | 15 |
|
| 16 | + # Add session to request |
| 17 | + middleware = SessionMiddleware(lambda x: x) |
| 18 | + await sync_to_async(middleware.process_request)(request) |
| 19 | + await sync_to_async(request.session.save)() |
| 20 | + |
14 | 21 | # Test async authenticated user |
15 | 22 | async_user = AsyncMock() |
16 | 23 | async_user.is_authenticated = True |
17 | 24 | request.auser = AsyncMock(return_value=async_user) |
18 | 25 |
|
19 | | - authenticated_user = await auth.authenticate(request, None) |
| 26 | + authenticated_user = await async_django_auth.authenticate(request, None) |
20 | 27 | assert authenticated_user == async_user |
21 | 28 | request.auser.assert_called_once() |
22 | 29 |
|
23 | 30 | # Test async non-authenticated user |
24 | 31 | async_user.is_authenticated = False |
25 | | - authenticated_user = await auth.authenticate(request, None) |
| 32 | + authenticated_user = await async_django_auth.authenticate(request, None) |
26 | 33 | assert authenticated_user is None |
27 | 34 |
|
28 | 35 | # Test non-async authenticated user |
29 | 36 | delattr(request, "auser") |
30 | 37 | sync_user = Mock() |
31 | 38 | sync_user.is_authenticated = True |
32 | | - request.user = sync_user |
| 39 | + request._cached_user = sync_user |
33 | 40 |
|
34 | | - authenticated_user = await auth.authenticate(request, None) |
| 41 | + authenticated_user = await async_django_auth.authenticate(request, None) |
35 | 42 | assert authenticated_user == sync_user |
36 | 43 |
|
37 | 44 | # Test non-async non-authenticated user |
38 | 45 | sync_user.is_authenticated = False |
39 | | - authenticated_user = await auth.authenticate(request, None) |
| 46 | + authenticated_user = await async_django_auth.authenticate(request, None) |
40 | 47 | assert authenticated_user is None |
0 commit comments