summaryrefslogtreecommitdiff
path: root/tests/async
diff options
context:
space:
mode:
authorJon Janzen <jon@jonjanzen.com>2023-02-10 20:43:26 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-06-27 11:17:17 +0200
commit5e98959d9242c57a55c65847758781f82d386fa4 (patch)
treee137f31489e3bf6893b79b5fe9984b2368e7682c /tests/async
parent2360ba22742c3ee8729697bfe2d508110465af56 (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.py98
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)