mirror of
https://github.com/django/django.git
synced 2025-08-04 02:48:35 +00:00
Fixed #34391 -- Added async-compatible interface to auth functions and related methods test clients.
This commit is contained in:
parent
2360ba2274
commit
5e98959d92
10 changed files with 307 additions and 14 deletions
98
tests/async/test_async_auth.py
Normal file
98
tests/async/test_async_auth.py
Normal file
|
@ -0,0 +1,98 @@
|
|||
from django.contrib.auth import (
|
||||
aauthenticate,
|
||||
aget_user,
|
||||
alogin,
|
||||
alogout,
|
||||
aupdate_session_auth_hash,
|
||||
)
|
||||
from django.contrib.auth.models import AnonymousUser, User
|
||||
from django.http import HttpRequest
|
||||
from django.test import TestCase, override_settings
|
||||
|
||||
|
||||
class AsyncAuthTest(TestCase):
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
cls.test_user = User.objects.create_user(
|
||||
"testuser", "test@example.com", "testpw"
|
||||
)
|
||||
|
||||
async def test_aauthenticate(self):
|
||||
user = await aauthenticate(username="testuser", password="testpw")
|
||||
self.assertIsInstance(user, User)
|
||||
self.assertEqual(user.username, self.test_user.username)
|
||||
user.is_active = False
|
||||
await user.asave()
|
||||
self.assertIsNone(await aauthenticate(username="testuser", password="testpw"))
|
||||
|
||||
async def test_alogin(self):
|
||||
request = HttpRequest()
|
||||
request.session = await self.client.asession()
|
||||
await alogin(request, self.test_user)
|
||||
user = await aget_user(request)
|
||||
self.assertIsInstance(user, User)
|
||||
self.assertEqual(user.username, self.test_user.username)
|
||||
|
||||
async def test_alogin_without_user(self):
|
||||
request = HttpRequest()
|
||||
request.user = self.test_user
|
||||
request.session = await self.client.asession()
|
||||
await alogin(request, None)
|
||||
user = await aget_user(request)
|
||||
self.assertIsInstance(user, User)
|
||||
self.assertEqual(user.username, self.test_user.username)
|
||||
|
||||
async def test_alogout(self):
|
||||
await self.client.alogin(username="testuser", password="testpw")
|
||||
request = HttpRequest()
|
||||
request.session = await self.client.asession()
|
||||
await alogout(request)
|
||||
user = await aget_user(request)
|
||||
self.assertIsInstance(user, AnonymousUser)
|
||||
|
||||
async def test_client_alogout(self):
|
||||
await self.client.alogin(username="testuser", password="testpw")
|
||||
request = HttpRequest()
|
||||
request.session = await self.client.asession()
|
||||
await self.client.alogout()
|
||||
user = await aget_user(request)
|
||||
self.assertIsInstance(user, AnonymousUser)
|
||||
|
||||
async def test_change_password(self):
|
||||
await self.client.alogin(username="testuser", password="testpw")
|
||||
request = HttpRequest()
|
||||
request.session = await self.client.asession()
|
||||
request.user = self.test_user
|
||||
await aupdate_session_auth_hash(request, self.test_user)
|
||||
user = await aget_user(request)
|
||||
self.assertIsInstance(user, User)
|
||||
|
||||
async def test_invalid_login(self):
|
||||
self.assertEqual(
|
||||
await self.client.alogin(username="testuser", password=""), False
|
||||
)
|
||||
|
||||
async def test_client_aforce_login(self):
|
||||
await self.client.aforce_login(self.test_user)
|
||||
request = HttpRequest()
|
||||
request.session = await self.client.asession()
|
||||
user = await aget_user(request)
|
||||
self.assertEqual(user.username, self.test_user.username)
|
||||
|
||||
@override_settings(
|
||||
AUTHENTICATION_BACKENDS=[
|
||||
"django.contrib.auth.backends.ModelBackend",
|
||||
"django.contrib.auth.backends.AllowAllUsersModelBackend",
|
||||
]
|
||||
)
|
||||
async def test_client_aforce_login_backend(self):
|
||||
self.test_user.is_active = False
|
||||
await self.test_user.asave()
|
||||
await self.client.aforce_login(
|
||||
self.test_user,
|
||||
backend="django.contrib.auth.backends.AllowAllUsersModelBackend",
|
||||
)
|
||||
request = HttpRequest()
|
||||
request.session = await self.client.asession()
|
||||
user = await aget_user(request)
|
||||
self.assertEqual(user.username, self.test_user.username)
|
Loading…
Add table
Add a link
Reference in a new issue