jrcosta/repo_alvo_api_simples
20 Apr 2026 – 02:06:46 UTC

Arquivo analisado: javascript-api/.gitignore

Tipo da mudança

Evidências observadas

Impacto provável

Riscos identificados

Cenários de testes manuais

Como a mudança é de configuração do Git e não altera código executável, testes manuais funcionais não são aplicáveis diretamente. Porém, para validar o efeito da mudança:

Sugestões de testes unitários

Sugestões de testes de integração

Sugestões de testes de carga ou desempenho

Pontos que precisam de esclarecimento


Resumo: A mudança adiciona um .gitignore para o diretório javascript-api com a regra para ignorar node_modules/. Isso é uma prática padrão para projetos Node.js e não altera comportamento funcional do software. O risco é baixo e a principal recomendação é validar localmente que o Git está ignorando corretamente a pasta de dependências. Não há necessidade de testes funcionais, unitários ou de integração para esta mudança.


Arquivo analisado: javascript-api/package-lock.json

Tipo da mudança

Evidências observadas

Impacto provável

Riscos identificados

Cenários de testes manuais

Sugestões de testes unitários

Sugestões de testes de integração

Sugestões de testes de carga ou desempenho

Pontos que precisam de esclarecimento


Resumo:
Esta mudança adiciona o arquivo package-lock.json para o projeto javascript-api, travando as versões das dependências. Não há alteração de código fonte ou lógica, portanto o impacto funcional direto é nulo. O principal benefício é garantir consistência na instalação das dependências. Riscos estão relacionados a possíveis incompatibilidades de versões e ausência de testes automatizados para este módulo. Recomenda-se validar instalação, build e execução da API, além de esclarecer o contexto do javascript-api no repositório.


Arquivo analisado: javascript-api/package.json

Tipo da mudança

Evidências observadas

Impacto provável

Riscos identificados

Cenários de testes manuais

Sugestões de testes unitários

Sugestões de testes de integração

Sugestões de testes de carga ou desempenho

Pontos que precisam de esclarecimento


Resumo: A mudança adiciona o arquivo package.json para o módulo javascript-api, configurando dependências, scripts e metadados básicos para desenvolvimento e testes. Não altera código funcional, mas é fundamental para o setup do ambiente Node.js. Riscos são principalmente relacionados à compatibilidade e ausência de testes. Recomenda-se validar instalação, execução e testes via scripts, além de criar testes unitários e de integração para garantir funcionamento correto da API.


Arquivo analisado: javascript-api/src/app.js

Tipo da mudança

Inclusão inicial de módulo — criação do arquivo app.js que configura a aplicação Express para a API JavaScript.

Evidências observadas

Impacto provável

Riscos identificados

Cenários de testes manuais

Sugestões de testes unitários

Sugestões de testes de integração

Sugestões de testes de carga ou desempenho

Pontos que precisam de esclarecimento


Resumo

A mudança introduz a configuração inicial da API JavaScript com Express, incluindo CORS, JSON parsing, healthcheck e roteamento para usuários. É uma base essencial para a API, mas ainda incompleta em termos de tratamento de erros, segurança e operação. Os testes devem focar na validação do endpoint /health, na correta montagem do roteador /users e na configuração dos middlewares. Riscos reais envolvem exposição excessiva via CORS e ausência de tratamento de erros. Pontos de esclarecimento são necessários para entender a inicialização do servidor e políticas de segurança.


Arquivo analisado: javascript-api/src/routes/users.js

Tipo da mudança

Evidências observadas

Impacto provável

Riscos identificados

Cenários de testes manuais

  1. Criação de usuário com dados válidos
    - Enviar POST /users com name e email válidos.
    - Verificar resposta 201 e dados do usuário criado.
  2. Criação de usuário com dados faltantes
    - Enviar POST /users sem name ou email.
    - Verificar resposta 422 com mensagem adequada.
  3. Criação de usuário com email duplicado
    - Criar usuário com email existente.
    - Verificar resposta 409 com mensagem de conflito.
  4. Listagem paginada de usuários
    - GET /users?limit=2&offset=1
    - Verificar que retorna exatamente 2 usuários a partir do segundo.
  5. Contagem total de usuários
    - GET /users/count
    - Verificar que o número corresponde ao total esperado.
  6. Busca por nome com query
    - GET /users/search?q=ana
    - Verificar que retorna usuários cujo nome contenha "ana" (case-insensitive).
  7. Busca por nome sem query
    - GET /users/search
    - Verificar que retorna array vazio.
  8. Listagem de usuários com emails duplicados
    - Criar usuários com emails repetidos.
    - GET /users/duplicates
    - Verificar que retorna apenas usuários com emails duplicados.
  9. Listagem de domínios de email
    - GET /users/email-domains
    - Verificar que retorna lista ordenada de domínios com contagem correta.
  10. Recuperar email por ID
    • GET /users/{user_id}/email com ID válido e inválido.
    • Verificar respostas 200 e 404.
  11. Estimativa de idade por ID
    • GET /users/{user_id}/age-estimate com ID válido e inválido.
    • Verificar resposta 200 com dados da API externa e 404 para usuário não encontrado.
  12. Verificar endpoint /broken
    • GET /users/broken
    • Confirmar que retorna { total: <número> } e comparar com /users/count.
  13. Testar limites e offsets negativos ou inválidos
    • GET /users?limit=-1&offset=-10
    • Verificar comportamento e se há tratamento adequado.

Sugestões de testes unitários

Sugestões de testes de integração

Sugestões de testes de carga ou desempenho

Pontos que precisam de esclarecimento


Resumo: A mudança introduz um módulo completo de rotas para usuários na API JavaScript, alinhando-a funcionalmente com as outras implementações do projeto. A implementação cobre criação, listagem, busca, consultas específicas e integração externa. Os principais riscos estão na validação limitada, tratamento de erros assíncronos e possíveis inconsistências em rotas e dados expostos. Recomenda-se testes manuais e automatizados focados em validação, paginação, busca, duplicatas e integração externa, além de esclarecer pontos de negócio e tratamento de erros.


Arquivo analisado: javascript-api/src/server.js

Tipo da mudança

Evidências observadas

const app = require('./app');

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

Impacto provável

Riscos identificados

Cenários de testes manuais

Sugestões de testes unitários

Sugestões de testes de integração

Sugestões de testes de carga ou desempenho

Pontos que precisam de esclarecimento


Resumo: A mudança adiciona o arquivo server.js que inicia o servidor Express da API JavaScript na porta configurada. É uma inclusão padrão e necessária para disponibilizar a API. Os riscos são mínimos, relacionados principalmente à ausência de tratamento de erros na inicialização. Recomenda-se testes manuais para validar a inicialização e resposta do servidor, além de testes unitários simples para garantir a correta atribuição da porta e chamada do método listen. Testes de integração devem validar o funcionamento do servidor com o app importado.


Arquivo analisado: javascript-api/src/services/externalService.js

Tipo da mudança

Evidências observadas

Impacto provável

Riscos identificados

Cenários de testes manuais

  1. Consulta de idade para nome válido
    - Chamar a rota /users/{user_id}/age-estimate para um usuário existente com nome comum.
    - Verificar que a resposta contém name, age (número) e count (número).
  2. Consulta para usuário inexistente
    - Chamar a rota com user_id que não existe.
    - Verificar que retorna HTTP 404 com mensagem "Usuário não encontrado".
  3. Consulta para nome que a API externa não reconhece
    - Criar usuário com nome incomum ou inexistente.
    - Chamar a rota e verificar que age é null e count é 0.
  4. Simular falha na API externa
    - Interromper acesso à API agify.io (ex: bloqueio de rede).
    - Chamar a rota e verificar que a resposta é { name, age: null, count: 0 } e que não há erro não tratado.
  5. Testar nomes com caracteres especiais
    - Criar usuário com nome contendo espaços, acentos e caracteres especiais.
    - Verificar se a requisição é feita corretamente e a resposta é coerente.
  6. Testar comportamento com nomes vazios ou nulos
    - Criar usuário com nome vazio ou nulo (se permitido).
    - Verificar resposta da rota e se o serviço trata adequadamente.

Sugestões de testes unitários

Sugestões de testes de integração

Sugestões de testes de carga ou desempenho

Pontos que precisam de esclarecimento


Resumo: A mudança introduz um novo serviço para estimar idade via API externa, consumido por rota REST. O código trata erros e ausência de dados com valores padrão, evitando falhas. Riscos principais são dependência externa e falta de testes unitários no JS. Recomenda-se testes manuais e automatizados focados em respostas da API externa, tratamento de erros e integração com a rota. Pontos de melhoria incluem cache, validação e monitoramento.


Arquivo analisado: javascript-api/src/services/userService.js

Tipo da mudança

Implementação inicial de um serviço de usuário (UserService) em JavaScript para a API javascript-api.


Evidências observadas


Impacto provável


Riscos identificados


Cenários de testes manuais

  1. Listagem padrão de usuários
    - Chamar listUsers() sem parâmetros.
    - Verificar se retorna os 3 usuários iniciais.

  2. Listagem com paginação
    - Chamar listUsers(2, 1).
    - Verificar se retorna os usuários Bob e Charlie.

  3. Busca por usuário existente
    - Chamar getUser(2).
    - Verificar se retorna o usuário Bob.

  4. Busca por usuário inexistente
    - Chamar getUser(999).
    - Verificar se retorna undefined ou equivalente.

  5. Busca por email existente
    - Chamar findByEmail("alice@example.com").
    - Verificar se retorna Alice.

  6. Busca por email inexistente
    - Chamar findByEmail("naoexiste@example.com").
    - Verificar se retorna undefined.

  7. Criação de novo usuário válido
    - Chamar createUser({name: "Diana", email: "diana@example.com"}).
    - Verificar se usuário é criado com id 4 e adicionado à lista.

  8. Criação de usuário com dados incompletos
    - Chamar createUser({name: "Eve"}) ou {email: "eve@example.com"}.
    - Verificar comportamento (provavelmente cria usuário com campos undefined).

  9. Criação de usuário com email duplicado
    - Criar usuário com email já existente.
    - Verificar se o serviço permite (provavelmente sim, pois não há validação interna).

  10. Persistência após reinício

    • Criar usuário.
    • Reiniciar aplicação.
    • Verificar se usuário criado desaparece.

Sugestões de testes unitários


Sugestões de testes de integração


Sugestões de testes de carga ou desempenho


Pontos que precisam de esclarecimento


Resumo

A mudança introduz um serviço básico de usuários em memória para a API JavaScript, com funcionalidades essenciais de listagem, busca e criação. Embora funcional para protótipos ou testes, apresenta riscos de persistência volátil, falta de validação e possíveis problemas em ambientes concorrentes. Recomenda-se testes unitários focados em limites e integridade dos dados, além de testes de integração para validar o uso nas rotas existentes. Pontos de negócio e implementação precisam ser esclarecidos para garantir robustez futura.


Arquivo analisado: javascript-api/tests/users.test.js

Tipo da mudança

Inclusão de testes automatizados (testes de integração) para a API REST em Node.js, especificamente para os endpoints /health e /users.


Evidências observadas


Impacto provável


Riscos identificados


Cenários de testes manuais


Sugestões de testes unitários


Sugestões de testes de integração


Sugestões de testes de carga ou desempenho


Pontos que precisam de esclarecimento


Resumo

A mudança introduz um conjunto inicial de testes de integração para a API JavaScript, cobrindo saúde da API, listagem de usuários, criação e conflito de email. Isso é positivo para garantir estabilidade básica da API. Contudo, há riscos relacionados à dependência de estado do banco e ausência de setup/teardown, além de cobertura limitada para casos de erro e outros endpoints. Recomenda-se ampliar os testes para validar dados inválidos, paginação, busca e garantir isolamento dos testes. Também é importante esclarecer o estado inicial do banco e regras de negócio para evitar falsos positivos/falsos negativos.