Coverage for apps/inners/use_cases/authorizations/session_authorization.py: 72%

18 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2024-09-22 19:03 +0000

1import uuid 

2from datetime import datetime, timedelta, timezone 

3 

4from starlette.datastructures import State 

5 

6from apps.inners.models.daos.session import Session 

7from apps.inners.models.dtos.contracts.requests.authorizations.refresh_access_token_body import RefreshAccessTokenBody 

8from apps.inners.use_cases.managements.account_management import AccountManagement 

9from apps.inners.use_cases.managements.session_management import SessionManagement 

10 

11 

12class SessionAuthorization: 

13 def __init__( 

14 self, 

15 session_management: SessionManagement, 

16 account_management: AccountManagement 

17 ): 

18 self.session_management = session_management 

19 self.account_management = account_management 

20 

21 async def refresh_access_token(self, state: State, body: RefreshAccessTokenBody) -> Session: 

22 found_session: Session = await self.session_management.find_one_by_refresh_token( 

23 state=state, 

24 refresh_token=body.refresh_token 

25 ) 

26 current_time = datetime.now(tz=timezone.utc) 

27 found_session.access_token = str(uuid.uuid4()) 

28 found_session.access_token_expired_at = current_time + timedelta(minutes=15) 

29 patched_session: Session = await self.session_management.patch_one_by_id_raw( 

30 state=state, 

31 id=found_session.id, 

32 session_patcher=found_session 

33 ) 

34 

35 return patched_session