Skip to content

Adiciona validacao de schema nas respostas da API (Zod) - #65

Merged
ThomasTDS merged 2 commits into
mainfrom
feat/validacao-schema-api
Oct 8, 2026
Merged

ThomasTDS merged 2 commits into
mainfrom
feat/validacao-schema-api

Conversation

@ThomasTDS

Copy link
Copy Markdown
Owner

Resumo

Adiciona pages/api.schemas.ts com schemas Zod construidos a partir de respostas reais coletadas manualmente (nao a partir da documentacao) para todos os endpoints ja testados: productsList, brandsList, searchProduct, verifyLogin, createAccount, deleteAccount, getUserDetailByEmail.

ApiPage agora chama Schema.parse() no corpo de cada resposta antes das asserções de conteudo ja existentes — valida a estrutura inteira (tipo e presenca de cada campo, incluindo objetos aninhados como category em produtos), nao so os poucos campos que ja checavamos manualmente. Se a API mudar um campo que nenhuma asserção toca diretamente, o schema ainda pega, com mensagem apontando exatamente qual campo e por que.

Removida a interface Product manual duplicada em api.page.ts, agora inferida do proprio schema (z.infer).

Vulnerabilidade de seguranca corrigida nessa PR (nao relacionada ao Zod)

Ao abrir a PR, o GitHub reportou 2 CVEs criticos e 1 moderado em handlebars@4.7.9, puxado transitivamente pelo Allure Report (usado pra renderizar os templates do proprio relatorio). Como o Allure ainda nao atualizou sua dependencia, forcei handlebars para 4.7.10 via overrides no package.json — resolve os 3 alertas (confirmado via npm audit) sem quebrar nada; o relatorio Allure foi gerado e conferido normalmente apos o bump.

Test plan

  • npm run lint
  • npm run format:check
  • npm run typecheck
  • npm audit --audit-level=high limpo apos o fix do handlebars
  • Schema quebrado de proposito (price como number em vez de string) pra confirmar que a validacao realmente falha com mensagem detalhada, antes de reverter
  • Suite completa (27 cenarios) rodada 3x seguidas apos o fix (1 falha pontual de rede absorvida por retry numa das rodadas, confirmada nao-relacionada ao schema em 2 reexecucoes limpas na sequencia)

Novo pages/api.schemas.ts com schemas construidos a partir de
respostas reais coletadas manualmente (nao a partir da documentacao),
incluindo estruturas aninhadas como category em produtos. ApiPage
agora usa Schema.parse() no corpo de cada resposta antes das
asserticoes de conteudo - valida a estrutura inteira, nao so os
poucos campos ja checados manualmente, entao uma mudanca de contrato
em campo nao testado diretamente tambem derruba o teste, com mensagem
apontando exatamente qual campo e por que.

Removida a interface Product manual duplicada em api.page.ts, agora
inferida do schema. Validado quebrando um schema de proposito (price
como number em vez de string) e confirmando o erro detalhado do Zod
antes de reverter.
…ure)

GitHub reportou 2 CVEs criticos (injecao de JavaScript via confusao
de tipo no AST do compile, GHSA-8r5x-fm3f-whwj e GHSA-p8wg-vrv2-v86f)
e 1 moderado em handlebars 4.7.9, puxado pelo Allure Report pra
renderizar seus proprios templates de relatorio. Como o Allure ainda
nao atualizou sua propria dependencia, forcei handlebars para 4.7.10
via overrides no package.json - resolve os 3 alertas sem quebrar
nada (relatorio Allure gerado e conferido normalmente apos o bump).
@ThomasTDS
ThomasTDS merged commit 983f379 into main Oct 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant