Skip to content

Develop#171

Merged
hltav merged 6 commits into
masterfrom
develop
Jul 12, 2026
Merged

Develop#171
hltav merged 6 commits into
masterfrom
develop

Conversation

@Benevanio

Copy link
Copy Markdown
Collaborator

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Este PR padroniza o tratamento/serialização de erros entre backend e frontend (envelope { code, message, details? }), centraliza validações de request com middleware Zod e atualiza/expande a suíte de testes para refletir o novo contrato de erro e validação.

Changes:

  • Introduz AppError (backend) e ApiError/parseApiError (frontend) para padronizar códigos e payloads de erro.
  • Centraliza validação com middleware validate e simplifica controllers para propagar exceções tratadas pelo errorHandler.
  • Atualiza e adiciona testes (unit + integration) para o novo formato de erro e adiciona testes de componentes de marketing no frontend.

Reviewed changes

Copilot reviewed 41 out of 41 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
frontend/tests/unit/utils/apiError.test.ts Novos testes unitários para parseApiError e envelopes/legado/fallback.
frontend/tests/unit/services/auth.service.test.tsx Ajusta mocks/asserts para erros com code no envelope.
frontend/tests/unit/components/landing/LandinPage.test.tsx Adiciona teste de renderização da Landing Page (com mocks de seções).
frontend/tests/unit/components/landing/FeaturesSection.test.tsx Adiciona testes de conteúdo/estrutura da seção de features.
frontend/tests/unit/components/landing/CTASection.test.tsx Adiciona testes de conteúdo/links/estrutura do CTA.
frontend/tests/unit/components/JobsTableCard.test.tsx Amplia cenários de renderização (valores vazios) e estado vazio.
frontend/tests/unit/app/AuthenticatedHeader.test.tsx Adiciona testes para títulos por rota e avatar/iniciais/tema.
frontend/src/shared/lib/apiError.ts Implementa ApiError e parseApiError com suporte a formatos padronizado e legado.
frontend/src/shared/lib/apiClient.ts Adiciona interceptor do Axios para rejeitar com ApiError padronizado.
frontend/src/domains/auth/infrastructure/authApi.ts Passa a lançar ApiError via parseApiError (fetch) em respostas não-ok.
backend/tests/unit/modules/users/users.service.test.ts Ajusta asserts para AppError (code/statusCode/message) em NOT_FOUND.
backend/tests/unit/modules/users/user.controller.test.ts Ajusta testes para controllers propagarem erros em vez de responderem inline.
backend/tests/unit/modules/savedJobs/savedJobs.service.test.ts Ajusta asserts para AppError em CONFLICT/NOT_FOUND.
backend/tests/unit/modules/savedJobs/savedJobs.controller.test.ts Ajusta testes para controllers propagarem erros e padronizar responses de erro.
backend/tests/unit/modules/auth/credentials.service.test.ts Ajusta asserts para AppError em CONFLICT/UNAUTHORIZED/NOT_FOUND.
backend/tests/unit/modules/auth/credentials.controller.test.ts Ajusta testes para controllers propagarem AppError e dependerem de validação middleware.
backend/tests/unit/modules/auth/auth.controller.test.ts Remove testes de validação inline (migrada para middleware validate).
backend/tests/unit/middleware/validate.test.ts Adiciona testes do middleware de validação (body/query/params) e erro Zod->AppError.
backend/tests/unit/middleware/requireAuth.test.ts Ajusta requireAuth para retornar envelope padronizado.
backend/tests/unit/middleware/errorHandler.test.ts Expande testes do errorHandler (CORS, AppError, ZodError, produção vs não-produção).
backend/tests/unit/lib/errors.test.ts Adiciona testes para factories/toJSON/fromZodError do AppError.
backend/tests/unit/app.test.ts Ajusta asserts do CORS para envelope padronizado {code,message}.
backend/tests/integration/routes/user.routes.test.ts Ajusta asserts de validação para envelope padronizado + details.
backend/tests/integration/routes/savedJobs.routes.test.ts Ajusta asserts para envelope padronizado em validação/autenticação/conflito/not_found.
backend/tests/integration/routes/auth.routes.test.ts Ajusta asserts para envelope padronizado e status corretos em erros.
backend/src/routes/users.routes.ts Introduz validate + .catch(next) para controllers async.
backend/src/routes/savedJobs.routes.ts Introduz validate + .catch(next) para controllers async.
backend/src/routes/auth.routes.ts Introduz validate para params/body e .catch(next); reorganiza middlewares.
backend/src/modules/users/users.service.ts Troca Error genérico por AppError.notFound(...).
backend/src/modules/users/users.controller.ts Remove try/catch e validação inline; passa a lançar AppError.
backend/src/modules/users/schemas/user.schemas.ts Expõe createPreferencesSchema como alias do schema parcial.
backend/src/modules/savedJobs/schemas/savedJobs.schemas.ts Extrai schemas Zod para arquivo dedicado (create/update).
backend/src/modules/savedJobs/savedJobs.service.ts Troca Error genérico por AppError.conflict/notFound.
backend/src/modules/savedJobs/savedJobs.controller.ts Remove validação/handleError inline; lança AppError.
backend/src/modules/auth/credentials.service.ts Padroniza erros com AppError e refatora criação de usuário + username.
backend/src/modules/auth/credentials.controller.ts Remove validação/try-catch inline; passa a lançar AppError quando necessário.
backend/src/modules/auth/auth.controller.ts Remove validação inline de provider (delegada ao middleware); simplifica tipos de sessão.
backend/src/middleware/validate.ts Novo middleware para parse de body/query/params com Zod e conversão para AppError.
backend/src/middleware/requireAuth.ts Padroniza resposta 401 para {code,message} via AppError.
backend/src/middleware/errorHandler.ts Padroniza respostas de erro com AppError e evita vazamento de causa em produção.
backend/src/lib/errors.ts Introduz AppError com factories, fromZodError e toJSON.

Comment on lines +42 to 48
router.post(
"/register",
validate({ body: RegisterSchema }),
(req, res, next) => {
credentialsController.register(req, res).catch(next);
},
);
Comment on lines 110 to 113
const payload = await parseResponse(response);

if (!response.ok) {
throw createError(payload, "Falha ao obter URL de autenticacao Google.");
}

return payload.url;
throwIfNotOk(response, payload, "Falha ao obter URL de autenticacao Google.");
return (payload as { url: string }).url;
}
Comment on lines 120 to 123
const payload = await parseResponse(response);

if (!response.ok) {
throw createError(payload, "Falha ao obter URL de autenticacao Github.");
}

return payload.url;
throwIfNotOk(response, payload, "Falha ao obter URL de autenticacao Github.");
return (payload as { url: string }).url;
}
Comment on lines 130 to 137
const payload = await parseResponse(response);

if (!response.ok) {
throw createError(payload, "Falha ao obter URL de autenticacao LinkedIn.");
}

return payload.url;
throwIfNotOk(
response,
payload,
"Falha ao obter URL de autenticacao LinkedIn.",
);
return (payload as { url: string }).url;
}
filteredJobs={[]}
paginatedJobs={[]}
jobs={[]}
jobs= {[]}
Comment on lines 15 to +18
if (error.message.startsWith("Origin not allowed by CORS")) {
res.status(403).json({ message: "Origem não permitida." });
const appError = AppError.forbidden("Origem não permitida.");
res.status(appError.statusCode).json(appError.toJSON());
return;
@hltav hltav merged commit bd37122 into master Jul 12, 2026
4 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in JobAtlas – Kanban Jul 12, 2026
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.

4 participants