Coverage for apps/inners/use_cases/authentications/register_authentication.py: 67%
21 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-22 19:03 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-22 19:03 +0000
1from starlette.datastructures import State
3from apps.inners.exceptions import repository_exception
4from apps.inners.exceptions import use_case_exception
5from apps.inners.models.daos.account import Account
6from apps.inners.models.dtos.contracts.requests.authentications.registers.register_by_email_and_password_body import \
7 RegisterByEmailAndPasswordBody
8from apps.inners.models.dtos.contracts.requests.managements.accounts.create_one_body import CreateOneBody
9from apps.inners.models.dtos.contracts.responses.authentications.registers.register_response import \
10 RegisterResponse
11from apps.inners.use_cases.managements.account_management import AccountManagement
14class RegisterAuthentication:
15 def __init__(
16 self,
17 account_management: AccountManagement
18 ):
19 self.account_management = account_management
21 async def register_by_email_and_password(
22 self,
23 state: State,
24 body: RegisterByEmailAndPasswordBody
25 ) -> RegisterResponse:
26 try:
27 await self.account_management.find_one_by_email(
28 state=state,
29 email=body.email
30 )
31 except repository_exception.NotFound:
32 pass
33 else:
34 raise use_case_exception.EmailAlreadyExists()
36 account_creator_body: CreateOneBody = CreateOneBody(
37 email=body.email,
38 password=body.password
39 )
40 created_account: Account = await self.account_management.create_one(
41 state=state,
42 body=account_creator_body
43 )
44 register_response: RegisterResponse = RegisterResponse(
45 account=created_account
46 )
47 return register_response