Coverage for src/tests/modules/identity/user_recoveries/test_user_recovery_db_repository.py: 100%

28 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2024-01-01 00:00 +0000

1"""Module that defines tests for user recovery database.""" 

2 

3import pytest 

4 

5from kwai_bc_identity.user_recoveries.user_recovery_db_repository import ( 

6 UserRecoveryDbRepository, 

7) 

8from kwai_bc_identity.user_recoveries.user_recovery_repository import ( 

9 UserRecoveryNotFoundException, 

10 UserRecoveryRepository, 

11) 

12from kwai_core.db.database import Database 

13 

14 

15pytestmark = pytest.mark.db 

16 

17 

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

19def repo(database: Database) -> UserRecoveryRepository: 

20 """Fixture for creating a user recovery repository.""" 

21 return UserRecoveryDbRepository(database) 

22 

23 

24async def test_create(make_user_recovery, repo: UserRecoveryRepository) -> None: 

25 """Test if the user recovery was created.""" 

26 user_recovery = make_user_recovery() 

27 user_recovery = await repo.create(user_recovery) 

28 assert user_recovery.id, "There should be a user recovery created" 

29 

30 

31async def test_get_by_uuid(repo: UserRecoveryRepository, make_user_recovery_in_db): 

32 """Test if the user recovery can be fetched with the uuid.""" 

33 user_recovery = await make_user_recovery_in_db() 

34 recovery = await repo.get_by_uuid(user_recovery.uuid) 

35 assert recovery, "There should be a recovery with the given uuid" 

36 

37 

38async def test_update(repo: UserRecoveryRepository, make_user_recovery_in_db): 

39 """Test if the user recovery can be updated.""" 

40 user_recovery = await make_user_recovery_in_db() 

41 user_recovery = user_recovery.confirm() 

42 await repo.update(user_recovery) 

43 recovery = await repo.get_by_uuid(user_recovery.uuid) 

44 assert not recovery.confirmation.empty, "There should be a confirmation date" 

45 assert recovery.confirmed, "The user recovery should be a confirmed" 

46 

47 

48async def test_delete(repo: UserRecoveryRepository, make_user_recovery_in_db): 

49 """Test if the user recovery can be deleted.""" 

50 user_recovery = await make_user_recovery_in_db() 

51 await repo.delete(user_recovery) 

52 

53 with pytest.raises(UserRecoveryNotFoundException): 

54 await repo.get_by_uuid(user_recovery.uuid)