import unittest from fastapi.testclient import TestClient import main from db import connect, create class TestLogoutV2(unittest.IsolatedAsyncioTestCase): async def asyncSetUp(self): self.conn = await connect(":memory:") await create(self.conn) async def override_get_db(): try: yield self.conn finally: pass main.app.dependency_overrides[main.get_db] = override_get_db self.client = TestClient(main.app) async def asyncTearDown(self): await self.conn.close() main.app.dependency_overrides.clear() def test_logout_clears_refresh_cookie(self): # Register to receive refresh cookie and access token r = self.client.post( "/api/v1/auth/register", json={"email": "logout@test.com", "password": "pw", "displayName": "User"}, ) assert r.status_code == 200, r.text # Refresh should succeed (cookie automatically sent by TestClient) r2 = self.client.post("/api/v1/auth/refresh") assert r2.status_code == 200, r2.text assert "accessToken" in r2.json() # Call logout to clear refresh cookie r3 = self.client.post("/api/v1/auth/logout") assert r3.status_code == 200, r3.text # Subsequent refresh should fail with 401 (cookie cleared) r4 = self.client.post("/api/v1/auth/refresh") assert r4.status_code == 401, r4.text