diff options
| author | Jon Janzen <jon@jonjanzen.com> | 2023-02-10 20:43:26 -0500 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-06-27 11:17:17 +0200 |
| commit | 5e98959d9242c57a55c65847758781f82d386fa4 (patch) | |
| tree | e137f31489e3bf6893b79b5fe9984b2368e7682c /tests/async | |
| parent | 2360ba22742c3ee8729697bfe2d508110465af56 (diff) | |
Fixed #34391 -- Added async-compatible interface to auth functions and related methods test clients.
Diffstat (limited to 'tests/async')
| -rw-r--r-- | tests/async/test_async_auth.py | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/tests/async/test_async_auth.py b/tests/async/test_async_auth.py new file mode 100644 index 0000000000..f6551c63ee --- /dev/null +++ b/tests/async/test_async_auth.py @@ -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) |
