"""Tester för invitation-flödet.""" import pytest from httpx import AsyncClient from app.models import User @pytest.mark.asyncio async def test_create_invitation(client: AsyncClient, admin_token: str): response = await client.post("/api/v1/invitations", headers={"Authorization": f"Bearer {admin_token}"}, json={ "email": "invited@landvex.se", "role": "viewer", }) assert response.status_code == 201 data = response.json() assert data["email"] == "invited@landvex.se" assert data["role"] == "viewer" assert "token" in data @pytest.mark.asyncio async def test_validate_invitation(client: AsyncClient, admin_token: str): # Skapa inbjudan response = await client.post("/api/v1/invitations", headers={"Authorization": f"Bearer {admin_token}"}, json={ "email": "validate@landvex.se", "role": "analyst", }) token = response.json()["token"] response = await client.get(f"/api/v1/invitations/validate/{token}") assert response.status_code == 200 data = response.json() assert data["valid"] is True assert data["email"] == "validate@landvex.se" @pytest.mark.asyncio async def test_accept_invitation(client: AsyncClient, admin_token: str): # Skapa inbjudan response = await client.post("/api/v1/invitations", headers={"Authorization": f"Bearer {admin_token}"}, json={ "email": "accept@landvex.se", "role": "manager", }) token = response.json()["token"] response = await client.post("/api/v1/invitations/accept", json={ "token": token, "first_name": "Accepted", "last_name": "User", "password": "newpassword123", }) assert response.status_code == 200 data = response.json() assert data["email"] == "accept@landvex.se" assert data["role"] == "manager" assert data["status"] == "active" # Försök acceptera igen — ska misslyckas response = await client.post("/api/v1/invitations/accept", json={ "token": token, "first_name": "Accepted", "last_name": "User", "password": "newpassword123", }) assert response.status_code == 400