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
« prev ^ index » next coverage.py v7.9.0, created at 2026-02-04 09:42 +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.model.user.user_interfaces import ImpersonateData, UserInfo
9from ...models.factories import UserFactory
11middleware = SessionMiddleware(lambda x: x) # type:ignore
14def get_dummy_session() -> SessionBase:
15 return middleware.SessionStore(None)
18def test_user_info():
19 user = UserFactory.build()
20 user_info = UserInfo.from_user(user)
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
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
34 user = UserFactory.build()
35 user_info = UserInfo.from_user(user)
36 data = ImpersonateData(source=user_info, target_id=10)
38 assert data.is_valid() is True
39 data.serialize(session)
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
46 ImpersonateData.clean_session(session)
47 data_from_session = ImpersonateData.from_session(session)
48 assert data_from_session is None
50 data.timestamp_start = (datetime.utcnow() - timedelta(days=100)).timestamp()
51 assert data.is_valid() is False