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

1from unittest.mock import patch 

2 

3from mesh.model.roles.role_handler import ROLE_HANDLER_CACHE, RoleHandler 

4from mesh.model.user.auth import TokenBackend 

5 

6from ..models.factories import UserFactory 

7from ..models.user_models import User, UserToken 

8from .base_test_case import BaseTestCase 

9 

10 

11class TokenBackendTestCase(BaseTestCase): 

12 used_models = [UserToken, User] 

13 

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() 

20 

21 def test_no_token(self): 

22 UserToken.objects.all().delete() 

23 self.assertFalse(UserToken.objects.exists()) 

24 

25 token_key = "my_token" 

26 user = self.backend.authenticate(self.request, token=token_key) 

27 

28 self.assertIsNone(user) 

29 

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 

33 

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) 

38 

39 def test_staff_user(self): 

40 self.user_base.is_staff = True 

41 self.user_base.save() 

42 

43 user = self.backend.authenticate(self.request, token=self.user_base_token.key) 

44 self.assertIsNone(user) 

45 

46 def test_admin_user(self): 

47 self.user_base.is_superuser = True 

48 self.user_base.save() 

49 

50 user = self.backend.authenticate(self.request, token=self.user_base_token.key) 

51 self.assertIsNone(user) 

52 

53 def test_journal_manager_user(self): 

54 self.user_base.journal_manager = True 

55 self.user_base.save() 

56 

57 user = self.backend.authenticate(self.request, token=self.user_base_token.key) 

58 self.assertIsNone(user) 

59 

60 def test_role_unauthorized_user(self): 

61 with patch.object(RoleHandler, "token_authentication_allowed") as mock_method: 

62 mock_method.return_value = True 

63 

64 user = self.backend.authenticate(self.request, token=self.user_base_token.key) 

65 self.assertEqual(user.pk, self.user_base.pk) # type:ignore 

66 

67 with patch.object(RoleHandler, "token_authentication_allowed") as mock_method: 

68 mock_method.return_value = False 

69 

70 user = self.backend.authenticate(self.request, token=self.user_base_token.key) 

71 self.assertIsNone(user)