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

42 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-08-11 09:47 +0000

1from django.contrib.auth.models import AnonymousUser 

2 

3from mesh.models.orm.factories import UserFactory 

4from mesh.models.orm.user_models import User 

5from mesh.models.user.user_interfaces import ImpersonateData, UserInfo 

6from mesh.tests.base_test_case import BaseTestCase 

7from mesh.views.middlewares.impersonate import process_impersonate_session 

8 

9 

10class ImpersonateMiddlewareTestCase(BaseTestCase): 

11 used_models = [User] 

12 

13 def setUp(self): 

14 super().setUp() 

15 self.request = self.dummy_request() 

16 self.request.user = AnonymousUser() 

17 

18 self.user_admin = UserFactory.create() 

19 self.user_to_impersonate = UserFactory.create() 

20 

21 # Serialize the data into the base request session 

22 self.impersonate_data = ImpersonateData( 

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

24 target_id=self.user_to_impersonate.pk, 

25 ) 

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

27 

28 def test_processing_impersonate_data_anonymous_user(self): 

29 process_impersonate_session(self.request) 

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

31 

32 def test_processing_impersonate_data_normal_use(self): 

33 self.request.user = self.user_admin 

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

35 process_impersonate_session(self.request) 

36 

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

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

39 self.assertIsNotNone(data_from_session) 

40 self.assertEqual(data_from_session, self.impersonate_data) 

41 

42 def test_processing_impersonate_data_user_not_found(self): 

43 self.user_to_impersonate.delete() 

44 self.request.user = self.user_admin 

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

46 process_impersonate_session(self.request) 

47 

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

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

50 

51 def test_processing_impersonate_data_invalid(self): 

52 self.impersonate_data.timestamp_start -= 10**6 

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

54 

55 self.request.user = self.user_admin 

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

57 process_impersonate_session(self.request) 

58 

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

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