Skip to content

Commit b1cb141

Browse files
authored
add test for session.py (#118)
1 parent 30a7429 commit b1cb141

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

backend/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ build-backend = "setuptools.build_meta"
2626
dev = [
2727
"pytest>=8.3.5",
2828
"pytest-cov>=6.1.1",
29+
"pytest-mock>=3.14.1",
2930
"ruff>=0.11.13",
3031
"ty>=0.0.1a8",
3132
"types-Flask>=1.1.6",

backend/tests/test_session.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import pytest
2+
from tenantfirstaid.session import TenantSession
3+
4+
5+
@pytest.fixture
6+
def mock_valkey(mocker):
7+
"""Mock the Valkey class with the db_con.ping(), db_con.get(), and db_con.set() methods."""
8+
mock_client = mocker.Mock()
9+
mocker.patch("tenantfirstaid.session.Valkey", return_value=mock_client)
10+
11+
_data = {}
12+
13+
mock_client.set = mocker.Mock(
14+
side_effect=lambda key, value: _data.update({key: value})
15+
)
16+
mock_client.get = mocker.Mock(side_effect=lambda key: _data.get(key, None))
17+
mock_client.ping = mocker.Mock()
18+
return mock_client
19+
20+
21+
@pytest.fixture
22+
def mock_environ(monkeypatch):
23+
monkeypatch.setenv("DB_HOST", "8.8.8.8")
24+
monkeypatch.setenv("DB_PORT", "8888")
25+
monkeypatch.setenv("DB_PASSWORD", "test_password")
26+
monkeypatch.setenv("DB_USE_SSL", "false")
27+
28+
29+
def test_session_set_and_get(mock_valkey, mock_environ):
30+
tenant_session = TenantSession()
31+
32+
mock_valkey.get.return_value = '"test_value"'
33+
tenant_session.set("some_session_id", "test_value")
34+
value = tenant_session.get("some_session_id")
35+
assert value == "test_value"
36+
37+
38+
def test_session_get_unknown_session_id(mock_valkey, mock_environ):
39+
tenant_session = TenantSession()
40+
41+
mock_valkey.get.return_value = None
42+
value = tenant_session.get("some_session_id")
43+
assert value == []
44+
45+
46+
def test_session_init_ping_exception(mocker, mock_environ, capsys):
47+
# Patch Valkey so that ping raises an exception
48+
mock_client = mocker.Mock()
49+
mock_client.ping = mocker.Mock(side_effect=Exception("Ping failed"))
50+
mocker.patch("tenantfirstaid.session.Valkey", return_value=mock_client)
51+
# Should not raise, but print the exception
52+
_obj = TenantSession()
53+
captured = capsys.readouterr()
54+
assert "Ping failed" in captured.out

backend/uv.lock

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)