Coverage for src / mesh / tests / interfaces / test_user_interfaces.py: 100%

35 statements  

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

1from datetime import datetime, timedelta 

2 

3import pytest 

4from django.contrib.sessions.backends.base import SessionBase 

5from django.contrib.sessions.middleware import SessionMiddleware 

6 

7from mesh.models.orm.factories import UserFactory 

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

9 

10middleware = SessionMiddleware(lambda x: x) 

11 

12 

13def get_dummy_session() -> SessionBase: 

14 return middleware.SessionStore(None) 

15 

16 

17def test_user_info(): 

18 user = UserFactory.build() 

19 user_info = UserInfo.from_user(user) 

20 

21 assert user.pk == user_info.pk 

22 assert user.first_name == user_info.first_name 

23 assert user.last_name == user_info.last_name 

24 assert user.email == user_info.email 

25 

26 

27@pytest.mark.django_db # We need DB for session saving.. 

28def test_impersonate_data(): 

29 session = get_dummy_session() 

30 data = ImpersonateData.from_session(session) 

31 assert data is None 

32 

33 user = UserFactory.build() 

34 user_info = UserInfo.from_user(user) 

35 data = ImpersonateData(source=user_info, target_id=10) 

36 

37 assert data.is_valid() is True 

38 data.serialize(session) 

39 

40 data_from_session = ImpersonateData.from_session(session) 

41 assert data is not None 

42 assert data == data_from_session 

43 assert data.source == data_from_session.source 

44 

45 ImpersonateData.clean_session(session) 

46 data_from_session = ImpersonateData.from_session(session) 

47 assert data_from_session is None 

48 

49 data.timestamp_start = (datetime.utcnow() - timedelta(days=100)).timestamp() 

50 assert data.is_valid() is False