Coverage for src / auth / auth_router.py: 100%

19 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-03-18 14:29 -0300

1"""Rotas HTTP do modulo de autenticacao.""" 

2 

3from fastapi import APIRouter 

4 

5from src.auth.schemas import AuthLoginRequestSchema 

6from src.auth.schemas import AuthLoginResponseSchema 

7from src.auth.schemas import AuthProviderPublicConfigSchema 

8from src.auth.schemas import AuthProvidersResponseSchema 

9from src.auth.services import get_provider_config, list_provider_configs 

10from src.auth.services import login_with_provider, to_public_provider_config 

11 

12router = APIRouter(prefix="/auth", tags=["auth"]) 

13 

14 

15@router.get("/providers", response_model=AuthProvidersResponseSchema) 

16async def read_auth_providers() -> AuthProvidersResponseSchema: 

17 """Lista as configuracoes de provedores sem segredos.""" 

18 providers = [ 

19 to_public_provider_config(item) for item in list_provider_configs() 

20 ] 

21 return AuthProvidersResponseSchema(providers=providers) 

22 

23 

24@router.get( 

25 "/providers/{provider_name}", 

26 response_model=AuthProviderPublicConfigSchema, 

27) 

28async def read_auth_provider( 

29 provider_name: str, 

30) -> AuthProviderPublicConfigSchema: 

31 """Retorna a configuracao de um provedor sem campos sensiveis.""" 

32 provider_config = get_provider_config(provider_name) 

33 return to_public_provider_config(provider_config) 

34 

35 

36@router.post("/login", response_model=AuthLoginResponseSchema) 

37async def login(payload: AuthLoginRequestSchema) -> AuthLoginResponseSchema: 

38 """Autentica usuario usando o provedor selecionado.""" 

39 return login_with_provider(payload)