Skip to content

[TEST] Testar as rotas de API do front que fazem login e listam documentos #971

Description

@MouzinhoA

Qual é o problema?

apps/apae/src/app/api/ tem 38 route.ts (o BFF que o front usa pra falar com a API Java) e nenhum tem teste. Duas concentram lógica de decisão própria, não só repasse de chamada:

  • apps/apae/src/app/api/auth/login/route.ts: tem uma flag DISABLE_AUTH (linha 6) que, se true, pula a chamada à API e loga com um token fixo ('fake-token-dev', linhas 8-19). Hoje está false, mas é um if sem teste que, se alguém trocar sem querer (ou um merge reverter a troca), autentica qualquer usuário sem checar credencial.
  • apps/apae/src/app/api/documents/[patientId]/route.ts: valida year/category obrigatórios (linhas 31-39), traduz categoria via categoryMap (linhas 5-15, com sinônimo em português e inglês), valida year numérico (linhas 50-57), e trata 404 da API como lista vazia em vez de erro (linhas 78-81).
find apps/apae/src/app/api -iname "*.test.*"

A busca acima não retorna nenhum arquivo de teste para os arquivos listados.

Tarefas Relacionadas

Objetivo da Solução

Testes (Vitest, chamando o handler exportado diretamente com um Request/NextRequest construído no teste) para:

  1. auth/login/route.ts: usuário/senha ausentes (406), sucesso (200, cookie de sessão setado), credencial inválida (401 da API vira 401 com mensagem "Credenciais inválidas"), e erro genérico da API (repassa o status). Confirmar também que, com DISABLE_AUTH no valor atual do arquivo (false), a rota exige credencial. Não é suficiente testar só o ramo de produção, o teste deve travar se alguém trocar a constante sem querer.
  2. documents/[patientId]/route.ts: year ou category ausentes (400), categoria inválida (400), year não numérico (400), sucesso com filtro por type, e 404 da API virando lista vazia (200 com []).

Mockar @/lib/axios (createBaseApi/createDocumentsAPI) e @/lib/cookies (setSessionCookie). Os testes não devem depender da API Java nem do Next rodando.

Critérios de Aceite

  • apps/apae/src/app/api/auth/login/route.test.ts existe e cobre os cinco cenários listados, incluindo o valor atual de DISABLE_AUTH
  • apps/apae/src/app/api/documents/[patientId]/route.test.ts existe e cobre os cinco cenários listados
  • pnpm --filter agendamento test -- app/api/auth/login app/api/documents passa
  • Nenhum teste faz requisição HTTP real

Artefatos

Nenhum.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    3Complexidade 3TestTríadefrontendLista de tarefas para frontend

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions