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

1"""Test the endpoint users.""" 

2 

3import json 

4 

5import pytest 

6 

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 

16 

17 

18pytestmark = [pytest.mark.api, pytest.mark.db] 

19 

20 

21@pytest.fixture(scope="module") 

22def repo(database: Database) -> UserInvitationRepository: 

23 """Create the invitation repository.""" 

24 return UserInvitationDbRepository(database) 

25 

26 

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 [] 

31 

32 

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 

52 

53 invitation_data.append(response.json()["data"]["id"]) 

54 

55 

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 

60 

61 

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") 

74 

75 

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")