Arquivo analisado: java-api/src/main/java/com/repoalvo/javaapi/controller/UserController.java
Tipo da mudança
Remoção de endpoint REST na API Java (UserController): exclusão do método listUserNames() que atendia a rota GET /users/names.
Evidências observadas
- No diff, o método anotado com
@GetMapping("/users/names")foi completamente removido. - O método removido retornava uma lista de nomes de usuários (
List<String>) obtidos viauserService.listAllUsers(), mapeando para o nome, ordenando ignorando case e coletando em lista. - O arquivo atual
UserController.javanão contém mais esse método. - No contexto adicional, há testes unitários e de integração específicos para o endpoint
/users/names: UserControllerUnitTest.javapossui vários testes paralistUserNames().UserControllerIntegrationTest.javapossui testes que fazem requisição HTTP para/users/namese validam status 200, formato JSON e ordenação.- A documentação
docs/java-api.mdlista os endpoints principais, mas não menciona explicitamente/users/names. - Nenhuma outra parte do código ou serviço parece substituir ou redirecionar essa rota.
Impacto provável
- O endpoint
GET /users/namesdeixará de existir, resultando em erro 404 para qualquer cliente que tente acessá-lo. - Clientes que dependiam da lista de nomes de usuários em formato simples (lista de strings) perderão essa funcionalidade.
- A remoção pode afetar integrações, frontends ou scripts que consumiam essa rota para exibir ou manipular nomes de usuários.
- Como o método era uma simples transformação da lista completa de usuários, não há impacto direto em outras funcionalidades do controlador ou do serviço.
- Testes automatizados existentes para esse endpoint ficarão obsoletos e devem ser removidos ou ajustados para evitar falhas.
Riscos identificados
- Quebra de contrato da API: Clientes que consumiam
/users/namesterão falhas inesperadas (404). - Testes automatizados quebrados: Testes unitários e de integração existentes para
/users/namesirão falhar, podendo impactar pipelines de CI/CD. - Possível confusão para consumidores da API: Se a remoção não for comunicada, pode gerar dúvidas e retrabalho para times que usam a API.
- Dependências indiretas: Se algum código interno ou externo dependia do método
listUserNames(), pode haver falhas silenciosas.
Cenários de testes manuais
- Teste de acesso ao endpoint removido:
- Fazer requisição HTTP
GET /users/names. - Verificar que o retorno é HTTP 404 (Not Found).
- Teste de endpoints relacionados:
- Verificar que
GET /userscontinua funcionando normalmente, retornando lista completa de usuários. - Verificar que outros endpoints que retornam usuários (ex:
/users/search,/users/duplicates) continuam funcionando sem impacto. - Teste de regressão geral:
- Validar que a listagem de usuários via
/userse demais endpoints não foi afetada. - Teste de comportamento do sistema para clientes que consumiam
/users/names: - Se possível, simular cliente que consumia
/users/namese observar falha ou comportamento esperado.
Sugestões de testes unitários
- Remover ou desabilitar testes unitários existentes para
listUserNames(): - Ex:
listUserNamesShouldCallListAllUsersOnce(),listUserNamesShouldReturnSortedNamesIgnoringCase(), etc. - Adicionar teste para garantir que o método
listUserNames()não existe mais: - Embora não seja comum, pode-se validar que a classe
UserControllernão possui mais o método. - Testar que outros métodos do controlador continuam funcionando normalmente:
- Ex:
listUsers(),findDuplicateUsers(), etc.
Sugestões de testes de integração
- Remover ou desabilitar testes de integração que fazem requisição para
/users/names: - Ex:
getUserNamesShouldReturnStatus200AndJsonArrayOfStrings(),getUserNamesShouldReturnNamesSortedIgnoringCase(), etc. - Adicionar teste para requisição
GET /users/namesque espera HTTP 404: - Validar que a rota não está mais disponível.
- Testar endpoints relacionados para garantir que não houve regressão:
GET /usersGET /users/countGET /users/searchGET /users/duplicates
Sugestões de testes de carga ou desempenho
- Não aplicável, pois a mudança é remoção de endpoint e não há indício de impacto em performance ou carga.
Pontos que precisam de esclarecimento
- Motivo da remoção: Qual a justificativa para remover o endpoint
/users/names? Foi por desuso, segurança, simplificação da API? - Comunicação para consumidores: Houve comunicação prévia para os consumidores da API sobre a remoção? Existe plano de migração?
- Substituição ou alternativa: Existe algum endpoint alternativo para obter lista de nomes de usuários? Caso contrário, clientes que precisem dessa informação ficarão sem solução.
- Impacto nos testes automatizados: Como será tratado o impacto nos testes unitários e de integração que dependem desse endpoint?
- Possível remoção de código relacionado: O serviço
userService.listAllUsers()ainda é usado para outros endpoints, mas o mapeamento para nomes e ordenação era exclusivo do método removido. Há código duplicado ou similar em outros lugares que pode ser revisado?
Resumo
A mudança removeu o endpoint GET /users/names do controlador UserController, eliminando a funcionalidade que retornava uma lista ordenada de nomes de usuários. Essa remoção impacta diretamente clientes que consumiam essa rota, além de quebrar testes unitários e de integração existentes. É necessário validar que a remoção foi intencional e comunicar aos consumidores da API. Testes que acessam essa rota devem ser removidos ou ajustados, e testes para garantir que outros endpoints continuam funcionando devem ser mantidos. Não há impacto funcional além da indisponibilidade desse endpoint específico.