Coverage for src/mesh/tests/test_auth.py: 100%
50 statements
« prev ^ index » next coverage.py v7.9.0, created at 2026-02-04 09:42 +0000
« prev ^ index » next coverage.py v7.9.0, created at 2026-02-04 09:42 +0000
1from unittest.mock import patch
3from mesh.model.roles.role_handler import ROLE_HANDLER_CACHE, RoleHandler
4from mesh.model.user.auth import TokenBackend
6from ..models.factories import UserFactory
7from ..models.user_models import User, UserToken
8from .base_test_case import BaseTestCase
11class TokenBackendTestCase(BaseTestCase):
12 used_models = [UserToken, User]
14 def setUp(self) -> None:
15 super().setUp()
16 self.user_base = UserFactory.create()
17 self.user_base_token = UserToken.get_token(self.user_base)
18 self.request = self.dummy_request()
19 self.backend = TokenBackend()
21 def test_no_token(self):
22 UserToken.objects.all().delete()
23 self.assertFalse(UserToken.objects.exists())
25 token_key = "my_token"
26 user = self.backend.authenticate(self.request, token=token_key)
28 self.assertIsNone(user)
30 def test_base_user(self):
31 user = self.backend.authenticate(self.request, token=self.user_base_token.key)
32 self.assertEqual(user.pk, self.user_base.pk) # type:ignore
34 # Test the caching of the role_handler
35 role_handler_cache = getattr(self.request, ROLE_HANDLER_CACHE)
36 self.assertTrue(isinstance(role_handler_cache, RoleHandler))
37 self.assertEqual(role_handler_cache.user.pk, self.user_base.pk)
39 def test_staff_user(self):
40 self.user_base.is_staff = True
41 self.user_base.save()
43 user = self.backend.authenticate(self.request, token=self.user_base_token.key)
44 self.assertIsNone(user)
46 def test_admin_user(self):
47 self.user_base.is_superuser = True
48 self.user_base.save()
50 user = self.backend.authenticate(self.request, token=self.user_base_token.key)
51 self.assertIsNone(user)
53 def test_journal_manager_user(self):
54 self.user_base.journal_manager = True
55 self.user_base.save()
57 user = self.backend.authenticate(self.request, token=self.user_base_token.key)
58 self.assertIsNone(user)
60 def test_role_unauthorized_user(self):
61 with patch.object(RoleHandler, "token_authentication_allowed") as mock_method:
62 mock_method.return_value = True
64 user = self.backend.authenticate(self.request, token=self.user_base_token.key)
65 self.assertEqual(user.pk, self.user_base.pk) # type:ignore
67 with patch.object(RoleHandler, "token_authentication_allowed") as mock_method:
68 mock_method.return_value = False
70 user = self.backend.authenticate(self.request, token=self.user_base_token.key)
71 self.assertIsNone(user)