skinscreen / tests /test_auth.py
soleil-kamitto
feat: bootstrap admin — first registered user on an empty DB gets admin role
5ee8192
Raw
History Blame Contribute Delete
1.6 kB
def test_signup_and_login(client):
response = client.post("/auth/signup", json={"email": "a@example.com", "password": "secret123"})
assert response.status_code == 201
assert response.json()["email"] == "a@example.com"
response = client.post("/auth/login", json={"email": "a@example.com", "password": "secret123"})
assert response.status_code == 200
body = response.json()
assert body["token_type"] == "bearer"
assert body["access_token"]
def test_signup_duplicate_email_rejected(client):
client.post("/auth/signup", json={"email": "dup@example.com", "password": "secret123"})
response = client.post("/auth/signup", json={"email": "dup@example.com", "password": "secret123"})
assert response.status_code == 400
def test_login_wrong_password_rejected(client):
client.post("/auth/signup", json={"email": "b@example.com", "password": "secret123"})
response = client.post("/auth/login", json={"email": "b@example.com", "password": "wrong"})
assert response.status_code == 401
def test_protected_route_requires_token(client):
response = client.get("/patients")
assert response.status_code == 401
def test_first_user_becomes_admin_and_second_does_not(client):
first = client.post("/auth/signup", json={"email": "first@example.com", "password": "secret123"})
assert first.status_code == 201
assert first.json()["is_admin"] is True
second = client.post("/auth/signup", json={"email": "second@example.com", "password": "secret123"})
assert second.status_code == 201
assert second.json()["is_admin"] is False