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
« 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."""
3import pytest
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
15pytestmark = pytest.mark.db
18@pytest.fixture(scope="module")
19def repo(database: Database) -> UserRecoveryRepository:
20 """Fixture for creating a user recovery repository."""
21 return UserRecoveryDbRepository(database)
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"
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"
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"
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)
53 with pytest.raises(UserRecoveryNotFoundException):
54 await repo.get_by_uuid(user_recovery.uuid)