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
« prev ^ index » next coverage.py v7.13.1, created at 2026-08-11 09:47 +0000
1from django.contrib.auth.models import AnonymousUser
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
10class ImpersonateMiddlewareTestCase(BaseTestCase):
11 used_models = [User]
13 def setUp(self):
14 super().setUp()
15 self.request = self.dummy_request()
16 self.request.user = AnonymousUser()
18 self.user_admin = UserFactory.create()
19 self.user_to_impersonate = UserFactory.create()
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)
28 def test_processing_impersonate_data_anonymous_user(self):
29 process_impersonate_session(self.request)
30 self.assertTrue(self.request.user.is_anonymous)
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)
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)
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)
48 self.assertEqual(self.request.user.pk, self.user_admin.pk)
49 self.assertIsNone(ImpersonateData.from_session(self.request.session))
51 def test_processing_impersonate_data_invalid(self):
52 self.impersonate_data.timestamp_start -= 10**6
53 self.impersonate_data.serialize(self.request.session)
55 self.request.user = self.user_admin
56 self.assertEqual(self.request.user.pk, self.user_admin.pk)
57 process_impersonate_session(self.request)
59 self.assertEqual(self.request.user.pk, self.user_admin.pk)
60 self.assertIsNone(ImpersonateData.from_session(self.request.session))