Merge pull request #1644 from sindrigunnars:fix-issue-1641-database-session-service

PiperOrigin-RevId: 778630365
This commit is contained in:
Copybara-Service
2025-07-02 13:51:34 -07:00
2 changed files with 14 additions and 0 deletions
@@ -459,7 +459,9 @@ class DatabaseSessionService(BaseSessionService):
storage_events = (
session_factory.query(StorageEvent)
.filter(StorageEvent.app_name == app_name)
.filter(StorageEvent.session_id == storage_session.id)
.filter(StorageEvent.user_id == user_id)
.filter(timestamp_filter)
.order_by(StorageEvent.timestamp.desc())
.limit(
@@ -126,6 +126,7 @@ async def test_session_state(service_type):
app_name = 'my_app'
user_id_1 = 'user1'
user_id_2 = 'user2'
user_id_malicious = 'malicious'
session_id_11 = 'session11'
session_id_12 = 'session12'
session_id_2 = 'session2'
@@ -148,6 +149,10 @@ async def test_session_state(service_type):
app_name=app_name, user_id=user_id_2, session_id=session_id_2
)
await session_service.create_session(
app_name=app_name, user_id=user_id_malicious, session_id=session_id_11
)
assert session_11.state.get('key11') == 'value11'
event = Event(
@@ -196,6 +201,13 @@ async def test_session_state(service_type):
assert session_11.state.get('user:key1') == 'value1'
assert not session_11.state.get('temp:key')
# Make sure a malicious user can obtain a session and events not belonging to them
session_mismatch = await session_service.get_session(
app_name=app_name, user_id=user_id_malicious, session_id=session_id_11
)
assert len(session_mismatch.events) == 0
@pytest.mark.asyncio
@pytest.mark.parametrize(