synapse / backend /tests /test_auth.py
adwitiyashukla's picture
pushed Synapse, an agentic AI assistant with hybrid RAG
b2c1c67
Raw
History Blame Contribute Delete
2.55 kB
"""Authentication flow tests."""
from httpx import AsyncClient
from tests.conftest import register_and_login
async def test_register_login_me(client: AsyncClient) -> None:
headers = await register_and_login(client)
me = await client.get("/api/auth/me", headers=headers)
assert me.status_code == 200
body = me.json()
assert body["email"] == "adi@example.com"
assert body["username"] == "adi"
assert "password" not in body and "password_hash" not in body
async def test_duplicate_email_rejected(client: AsyncClient) -> None:
await register_and_login(client)
response = await client.post(
"/api/auth/register",
json={"email": "ADI@example.com", "username": "xx", "password": "supersecret123"},
)
assert response.status_code == 409
async def test_wrong_password_rejected(client: AsyncClient) -> None:
await register_and_login(client)
response = await client.post(
"/api/auth/login",
json={"email": "adi@example.com", "password": "wrong-password"},
)
assert response.status_code == 401
async def test_short_password_rejected(client: AsyncClient) -> None:
response = await client.post(
"/api/auth/register",
json={"email": "a@b.com", "username": "a", "password": "short"},
)
assert response.status_code == 422
async def test_refresh_flow(client: AsyncClient) -> None:
register = await client.post(
"/api/auth/register",
json={"email": "r@example.com", "username": "rr", "password": "supersecret123"},
)
refresh_token = register.json()["refresh_token"]
refreshed = await client.post(
"/api/auth/refresh", json={"refresh_token": refresh_token}
)
assert refreshed.status_code == 200
new_access = refreshed.json()["access_token"]
me = await client.get(
"/api/auth/me", headers={"Authorization": f"Bearer {new_access}"}
)
assert me.status_code == 200
async def test_access_token_cannot_be_used_as_refresh(client: AsyncClient) -> None:
register = await client.post(
"/api/auth/register",
json={"email": "t@example.com", "username": "tt", "password": "supersecret123"},
)
access_token = register.json()["access_token"]
response = await client.post(
"/api/auth/refresh", json={"refresh_token": access_token}
)
assert response.status_code == 401
async def test_protected_route_requires_token(client: AsyncClient) -> None:
response = await client.get("/api/sessions")
assert response.status_code == 401