test_sessions.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import pytest
  2. import sys
  3. from unittest.mock import patch, MagicMock
  4. # Force reload of session_utils to bypass the global mock in conftest
  5. if "session_utils" in sys.modules:
  6. del sys.modules["session_utils"]
  7. import session_utils
  8. from session_utils import create_session, validate_session, delete_session, get_user_id_from_session, track_user_ping, is_user_online
  9. def test_create_session():
  10. with patch("session_utils.r") as mock_redis:
  11. sid = create_session(1, 10)
  12. assert sid is not None
  13. # Check if setex was called with correct key and user_id
  14. mock_redis.setex.assert_called_once()
  15. args = mock_redis.setex.call_args[0]
  16. assert args[0].startswith("session:")
  17. assert args[2] == "1"
  18. def test_validate_session():
  19. with patch("session_utils.r") as mock_redis:
  20. mock_redis.exists.return_value = 1
  21. assert validate_session("test-sid") is True
  22. mock_redis.exists.return_value = 0
  23. assert validate_session("wrong-sid") is False
  24. def test_track_user_ping():
  25. with patch("session_utils.r") as mock_redis:
  26. track_user_ping(5)
  27. mock_redis.setex.assert_called_once()
  28. args = mock_redis.setex.call_args[0]
  29. assert args[0] == "user_ping:5"
  30. assert args[1] == 60
  31. def test_is_user_online():
  32. with patch("session_utils.r") as mock_redis:
  33. mock_redis.exists.return_value = 1
  34. assert is_user_online(5) is True
  35. mock_redis.exists.return_value = 0
  36. assert is_user_online(10) is False