@@ -29,17 +29,20 @@ async def create_v0_db(db_path):
2929 await engine .dispose ()
3030
3131
32+ # Use async context managers so DatabaseSessionService always closes.
33+
34+
3235@pytest .mark .asyncio
3336async def test_new_db_uses_latest_schema (tmp_path ):
3437 db_path = tmp_path / 'new_db.db'
3538 db_url = f'sqlite+aiosqlite:///{ db_path } '
36- session_service = DatabaseSessionService (db_url )
37- assert session_service ._db_schema_version is None
38- await session_service .create_session (app_name = 'my_app' , user_id = 'test_user' )
39- assert (
40- session_service ._db_schema_version
41- == _schema_check_utils .LATEST_SCHEMA_VERSION
42- )
39+ async with DatabaseSessionService (db_url ) as session_service :
40+ assert session_service ._db_schema_version is None
41+ await session_service .create_session (app_name = 'my_app' , user_id = 'test_user' )
42+ assert (
43+ session_service ._db_schema_version
44+ == _schema_check_utils .LATEST_SCHEMA_VERSION
45+ )
4346
4447 # Verify metadata table
4548 engine = create_async_engine (db_url )
@@ -71,21 +74,20 @@ async def test_existing_v0_db_uses_v0_schema(tmp_path):
7174 db_path = tmp_path / 'v0_db.db'
7275 await create_v0_db (db_path )
7376 db_url = f'sqlite+aiosqlite:///{ db_path } '
74- session_service = DatabaseSessionService (db_url )
75-
76- assert session_service ._db_schema_version is None
77- await session_service .create_session (
78- app_name = 'my_app' , user_id = 'test_user' , session_id = 's1'
79- )
80- assert (
81- session_service ._db_schema_version
82- == _schema_check_utils .SCHEMA_VERSION_0_PICKLE
83- )
84-
85- session = await session_service .get_session (
86- app_name = 'my_app' , user_id = 'test_user' , session_id = 's1'
87- )
88- assert session .id == 's1'
77+ async with DatabaseSessionService (db_url ) as session_service :
78+ assert session_service ._db_schema_version is None
79+ await session_service .create_session (
80+ app_name = 'my_app' , user_id = 'test_user' , session_id = 's1'
81+ )
82+ assert (
83+ session_service ._db_schema_version
84+ == _schema_check_utils .SCHEMA_VERSION_0_PICKLE
85+ )
86+
87+ session = await session_service .get_session (
88+ app_name = 'my_app' , user_id = 'test_user' , session_id = 's1'
89+ )
90+ assert session .id == 's1'
8991
9092 # Verify schema tables
9193 engine = create_async_engine (db_url )
@@ -111,38 +113,38 @@ async def test_existing_latest_db_uses_latest_schema(tmp_path):
111113 db_url = f'sqlite+aiosqlite:///{ db_path } '
112114
113115 # Create session service which creates db with latest schema
114- session_service1 = DatabaseSessionService (db_url )
115- await session_service1 .create_session (
116- app_name = 'my_app' , user_id = 'test_user' , session_id = 's1'
117- )
118- assert (
119- session_service1 ._db_schema_version
120- == _schema_check_utils .LATEST_SCHEMA_VERSION
121- )
122-
123- # Create another session service on same db and check it detects latest schema
124- session_service2 = DatabaseSessionService (db_url )
125- await session_service2 .create_session (
126- app_name = 'my_app' , user_id = 'test_user2' , session_id = 's2'
127- )
128- assert (
129- session_service2 ._db_schema_version
130- == _schema_check_utils .LATEST_SCHEMA_VERSION
131- )
132- s2 = await session_service2 .get_session (
133- app_name = 'my_app' , user_id = 'test_user2' , session_id = 's2'
134- )
135- assert s2 .id == 's2'
136-
137- s1 = await session_service2 .get_session (
138- app_name = 'my_app' , user_id = 'test_user' , session_id = 's1'
139- )
140- assert s1 .id == 's1'
141-
142- list_sessions_response = await session_service2 .list_sessions (
143- app_name = 'my_app'
144- )
145- assert len (list_sessions_response .sessions ) == 2
116+ async with DatabaseSessionService (db_url ) as session_service1 :
117+ await session_service1 .create_session (
118+ app_name = 'my_app' , user_id = 'test_user' , session_id = 's1'
119+ )
120+ assert (
121+ session_service1 ._db_schema_version
122+ == _schema_check_utils .LATEST_SCHEMA_VERSION
123+ )
124+
125+ # Create another session service on same db and check it detects latest schema
126+ async with DatabaseSessionService (db_url ) as session_service2 :
127+ await session_service2 .create_session (
128+ app_name = 'my_app' , user_id = 'test_user2' , session_id = 's2'
129+ )
130+ assert (
131+ session_service2 ._db_schema_version
132+ == _schema_check_utils .LATEST_SCHEMA_VERSION
133+ )
134+ s2 = await session_service2 .get_session (
135+ app_name = 'my_app' , user_id = 'test_user2' , session_id = 's2'
136+ )
137+ assert s2 .id == 's2'
138+
139+ s1 = await session_service2 .get_session (
140+ app_name = 'my_app' , user_id = 'test_user' , session_id = 's1'
141+ )
142+ assert s1 .id == 's1'
143+
144+ list_sessions_response = await session_service2 .list_sessions (
145+ app_name = 'my_app'
146+ )
147+ assert len (list_sessions_response .sessions ) == 2
146148
147149 # Verify schema tables
148150 engine = create_async_engine (db_url )
0 commit comments