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

35 statements  

« prev     ^ index     » next       coverage.py v7.9.0, created at 2026-02-04 09:42 +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.model.user.user_interfaces import ImpersonateData, UserInfo 

8 

9from ...models.factories import UserFactory 

10 

11middleware = SessionMiddleware(lambda x: x) # type:ignore 

12 

13 

14def get_dummy_session() -> SessionBase: 

15 return middleware.SessionStore(None) 

16 

17 

18def test_user_info(): 

19 user = UserFactory.build() 

20 user_info = UserInfo.from_user(user) 

21 

22 assert user.pk == user_info.pk 

23 assert user.first_name == user_info.first_name 

24 assert user.last_name == user_info.last_name 

25 assert user.email == user_info.email 

26 

27 

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

29def test_impersonate_data(): 

30 session = get_dummy_session() 

31 data = ImpersonateData.from_session(session) 

32 assert data is None 

33 

34 user = UserFactory.build() 

35 user_info = UserInfo.from_user(user) 

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

37 

38 assert data.is_valid() is True 

39 data.serialize(session) 

40 

41 data_from_session = ImpersonateData.from_session(session) 

42 assert data is not None 

43 assert data == data_from_session 

44 assert data.source == data_from_session.source # type:ignore 

45 

46 ImpersonateData.clean_session(session) 

47 data_from_session = ImpersonateData.from_session(session) 

48 assert data_from_session is None 

49 

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

51 assert data.is_valid() is False