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
« prev ^ index » next coverage.py v7.13.1, created at 2026-08-11 09:47 +0000
1from datetime import datetime, timedelta
3import pytest
4from django.contrib.sessions.backends.base import SessionBase
5from django.contrib.sessions.middleware import SessionMiddleware
7from mesh.models.orm.factories import UserFactory
8from mesh.models.user.user_interfaces import ImpersonateData, UserInfo
10middleware = SessionMiddleware(lambda x: x)
13def get_dummy_session() -> SessionBase:
14 return middleware.SessionStore(None)
17def test_user_info():
18 user = UserFactory.build()
19 user_info = UserInfo.from_user(user)
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
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
33 user = UserFactory.build()
34 user_info = UserInfo.from_user(user)
35 data = ImpersonateData(source=user_info, target_id=10)
37 assert data.is_valid() is True
38 data.serialize(session)
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
45 ImpersonateData.clean_session(session)
46 data_from_session = ImpersonateData.from_session(session)
47 assert data_from_session is None
49 data.timestamp_start = (datetime.utcnow() - timedelta(days=100)).timestamp()
50 assert data.is_valid() is False