Coverage for src/mesh/tests/test_middleware.py: 100%

42 statements  

« prev     ^ index     » next       coverage.py v7.9.0, created at 2026-02-04 09:42 +0000

1from django.contrib.auth.models import AnonymousUser 

2 

3from mesh.model.user.user_interfaces import ImpersonateData, UserInfo 

4from mesh.views.middleware import process_impersonate_session 

5 

6from ..models.factories import UserFactory 

7from ..models.user_models import User 

8from .base_test_case import BaseTestCase 

9 

10 

11class ImpersonateMiddlewareTestCase(BaseTestCase): 

12 used_models = [User] 

13 

14 def setUp(self): 

15 super().setUp() 

16 self.request = self.dummy_request() 

17 self.request.user = AnonymousUser() 

18 

19 self.user_admin = UserFactory.create() 

20 self.user_to_impersonate = UserFactory.create() 

21 

22 # Serialize the data into the base request session 

23 self.impersonate_data = ImpersonateData( 

24 source=UserInfo.from_user(self.user_admin), 

25 target_id=self.user_to_impersonate.pk, 

26 ) 

27 self.impersonate_data.serialize(self.request.session) 

28 

29 def test_processing_impersonate_data_anonymous_user(self): 

30 process_impersonate_session(self.request) 

31 self.assertTrue(self.request.user.is_anonymous) 

32 

33 def test_processing_impersonate_data_normal_use(self): 

34 self.request.user = self.user_admin 

35 self.assertEqual(self.request.user.pk, self.user_admin.pk) 

36 process_impersonate_session(self.request) 

37 

38 self.assertEqual(self.request.user.pk, self.user_to_impersonate.pk) 

39 data_from_session = ImpersonateData.from_session(self.request.session) 

40 self.assertIsNotNone(data_from_session) 

41 self.assertEqual(data_from_session, self.impersonate_data) 

42 

43 def test_processing_impersonate_data_user_not_found(self): 

44 self.user_to_impersonate.delete() 

45 self.request.user = self.user_admin 

46 self.assertEqual(self.request.user.pk, self.user_admin.pk) 

47 process_impersonate_session(self.request) 

48 

49 self.assertEqual(self.request.user.pk, self.user_admin.pk) 

50 self.assertIsNone(ImpersonateData.from_session(self.request.session)) 

51 

52 def test_processing_impersonate_data_invalid(self): 

53 self.impersonate_data.timestamp_start -= 10**6 # type:ignore 

54 self.impersonate_data.serialize(self.request.session) 

55 

56 self.request.user = self.user_admin 

57 self.assertEqual(self.request.user.pk, self.user_admin.pk) 

58 process_impersonate_session(self.request) 

59 

60 self.assertEqual(self.request.user.pk, self.user_admin.pk) 

61 self.assertIsNone(ImpersonateData.from_session(self.request.session))