Coverage for api/endpoints/misc/verifications.py: 81%

16 statements  

« prev     ^ index     » next       coverage.py v7.6.2, created at 2024-10-10 03:02 +0300

1from typing import Annotated 

2 

3from fastapi import APIRouter, Depends 

4from handlers.misc.verification import on_verify 

5from keycloak import idp 

6from sotrans_models.models._mongo import PydanticObjectIdPath 

7from sotrans_models.models.misc.verification import ( 

8 VerificationCreateModel, 

9 VerificationDBModel, 

10) 

11from sotrans_models.models.responses import ErrorRepr 

12from sotrans_models.models.roles import SotransRole 

13from sotrans_models.models.users import SotransOIDCUserModel 

14from starlette import status 

15 

16verifications_router = APIRouter() 

17 

18 

19@verifications_router.put( 

20 "/{collection}/{object_id}/verification", 

21 status_code=status.HTTP_201_CREATED, 

22 responses={400: {"model": ErrorRepr}, 404: {"model": ErrorRepr}}, 

23) 

24async def verify( 

25 collection: str, 

26 object_id: PydanticObjectIdPath, 

27 user: Annotated[ 

28 SotransOIDCUserModel, 

29 Depends( 

30 idp.get_current_user( 

31 required_role_names=[ 

32 SotransRole.company_director, 

33 SotransRole.security_service, 

34 ] 

35 ) 

36 ), 

37 ], 

38 verification: VerificationCreateModel, 

39) -> VerificationDBModel: 

40 verification.collection = collection 

41 verification.object_id = object_id 

42 return await on_verify(user, verification)