31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
# tests/test_auth.py
|
|
|
|
from fastapi.testclient import TestClient
|
|
from backend.main import app
|
|
|
|
client = TestClient(app)
|
|
|
|
|
|
def test_login_success():
|
|
response = client.post("/auth/token/login", data={"username": "testuser", "password": "testpass"})
|
|
assert response.status_code == 200
|
|
assert "access_token" in response.json()
|
|
|
|
|
|
def test_login_failure():
|
|
response = client.post("/auth/token/login", data={"username": "wrong", "password": "wrongpass"})
|
|
assert response.status_code == 401
|
|
assert response.json() == {"detail": "Incorrect username or password"}
|
|
|
|
|
|
def test_protected_route():
|
|
# Step 1: Login
|
|
response = client.post("/auth/token/login", data={"username": "testuser", "password": "testpass"})
|
|
token = response.json()["access_token"]
|
|
|
|
# Step 2: Access protected route
|
|
headers = {"Authorization": f"Bearer {token}"}
|
|
response = client.get("/auth/protected-route", headers=headers)
|
|
assert response.status_code == 200
|
|
assert response.json() == {"username": "testuser", "pgroups": [20000, 20001, 20003]}
|