Coverage for bc/kwai-bc-identity/src/kwai_bc_identity/revoke_user.py: 100%
19 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 the use case for revoking a user."""
3from dataclasses import dataclass
5from kwai_core.domain.presenter import Presenter
6from kwai_core.domain.value_objects.unique_id import UniqueId
8from kwai_bc_identity.tokens.user_token_repository import UserTokenRepository
9from kwai_bc_identity.users.user_account import UserAccountEntity
10from kwai_bc_identity.users.user_account_repository import UserAccountRepository
13@dataclass(frozen=True, kw_only=True, slots=True)
14class RevokeUserCommand:
15 """Input for the RevokeUser use case.
17 Attributes:
18 uuid: The UUID of the user to revoke.
19 """
21 uuid: str
24class RevokeUser:
25 """Use case for revoking a user."""
27 def __init__(
28 self,
29 repo: UserAccountRepository,
30 user_token_repo: UserTokenRepository,
31 presenter: Presenter[UserAccountEntity],
32 ):
33 """Initialize the use case.
35 Args:
36 repo: The user account repository to use.
37 user_token_repo: The user token repository to use.
38 presenter: The presenter that will be used to return the user.
39 """
40 self._repo = repo
41 self._user_token_repo = user_token_repo
42 self._presenter = presenter
44 async def execute(self, command: RevokeUserCommand) -> None:
45 """Execute the use case.
47 Raises:
48 UserAccountNotFoundException: If the user does not exist.
49 """
50 user_account = await self._repo.get_user_by_uuid(
51 UniqueId.create_from_string(command.uuid)
52 )
53 user_account = user_account.revoke()
54 await self._repo.update(user_account)
55 await self._user_token_repo.revoke(user_account)
56 self._presenter.present(user_account)