Coverage for src/tests/api/v1/auth/endpoints/test_user_invitations.py: 91%
33 statements
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
1"""Test the endpoint users."""
3import json
5import pytest
7from fastapi import status
8from fastapi.testclient import TestClient
9from kwai_bc_identity.user_invitations.user_invitation_db_repository import (
10 UserInvitationDbRepository,
11)
12from kwai_bc_identity.user_invitations.user_invitation_repository import (
13 UserInvitationRepository,
14)
15from kwai_core.db.database import Database
18pytestmark = [pytest.mark.api, pytest.mark.db]
21@pytest.fixture(scope="module")
22def repo(database: Database) -> UserInvitationRepository:
23 """Create the invitation repository."""
24 return UserInvitationDbRepository(database)
27@pytest.fixture(scope="module")
28def invitation_data() -> list[str]:
29 """Create array to capture the uuid created in test_create_user_invitation."""
30 return []
33@pytest.mark.mail
34def test_create_user_invitation(secure_client: TestClient, invitation_data: list[str]):
35 """Test POST users/invitations."""
36 data = {
37 "data": {
38 "type": "user_invitations",
39 "attributes": {
40 "email": "ichiro.abe@kwai.com",
41 "first_name": "Ichiro",
42 "last_name": "Abe",
43 "remark": "Invitation created in test_create_user_invitation",
44 "revoked": False,
45 },
46 }
47 }
48 response = secure_client.post(
49 "api/v1/auth/users/invitations", content=json.dumps(data)
50 )
51 assert response.status_code == status.HTTP_201_CREATED, response.content
53 invitation_data.append(response.json()["data"]["id"])
56def test_get_user_invitations(secure_client: TestClient):
57 """Test GET users/invitations."""
58 response = secure_client.get("api/v1/auth/users/invitations")
59 assert response.status_code == status.HTTP_200_OK
62def test_get_user_invitation(
63 secure_client: TestClient,
64 invitation_data: list[str],
65):
66 """Test GET users/invitations/<uuid>."""
67 if len(invitation_data) > 0:
68 response = secure_client.get(
69 f"api/v1/auth/users/invitations/{invitation_data[0]}"
70 )
71 assert response.status_code == status.HTTP_200_OK
72 else:
73 pytest.skip("Test skipped because there is no user invitation")
76def test_delete_user_invitation(secure_client: TestClient, invitation_data: list[str]):
77 """Test DELETE users/invitations/<uuid>."""
78 if len(invitation_data) > 0:
79 response = secure_client.delete(
80 f"api/v1/auth/users/invitations/{invitation_data[0]}"
81 )
82 assert response.status_code == status.HTTP_200_OK
83 else:
84 pytest.skip("Test skipped because there is no user invitation")