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
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-18 14:29 -0300
1"""Rotas HTTP do modulo de autenticacao."""
3from fastapi import APIRouter
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
12router = APIRouter(prefix="/auth", tags=["auth"])
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)
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)
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)