Commit f8254628 by Rubén Ramírez

feat: [TestUsuarioControlador]: Testeada la función para modificar los datos del usuario

parent 9e6dbb62
...@@ -226,4 +226,99 @@ public class TestUsuariosController { ...@@ -226,4 +226,99 @@ public class TestUsuariosController {
assertThat(respuestaNoExiste.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); assertThat(respuestaNoExiste.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
} }
@Test
@DirtiesContext
void testModificarUsuario() {
// Registro del primer usuario
DTOUsuario dto1 = new DTOUsuario(null, "modificar@test.com", "Modificador", "clave123");
ResponseEntity<Void> registro = restTemplateUsuarios.postForEntity("/", dto1, Void.class);
assertThat(registro.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// Login para obtener token
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Map<String, String>> loginEntity = new HttpEntity<>(Map.of("clave", "clave123"), headers);
ResponseEntity<DTOLoginRespuesta> loginResponse = restTemplateUsuarios.postForEntity(
"/{email}",
loginEntity,
DTOLoginRespuesta.class,
dto1.getEmail()
);
assertThat(loginResponse.getStatusCode()).isEqualTo(HttpStatus.OK);
String token = loginResponse.getBody().getToken();
// Preparar modificación válida
DTOModificarUsuario dtoMod = new DTOModificarUsuario(
"nuevo@test.com",
"NuevoNombre",
"nuevaClave123",
"clave123"
);
headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth(token);
HttpEntity<DTOModificarUsuario> modEntity = new HttpEntity<>(dtoMod, headers);
ResponseEntity<DTOLoginRespuesta> respuestaMod = restTemplateUsuarios.exchange(
"/", HttpMethod.PUT, modEntity, DTOLoginRespuesta.class
);
assertThat(respuestaMod.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaMod.getBody()).isNotNull();
assertThat(respuestaMod.getBody().getEmail()).isEqualTo("nuevo@test.com");
assertThat(respuestaMod.getBody().getNombreUsuario()).isEqualTo("NuevoNombre");
// 🔁 Actualizar el token tras modificación
String nuevoToken = respuestaMod.getBody().getToken();
headers.setBearerAuth(nuevoToken);
// Registrar segundo usuario con email que vamos a intentar duplicar
DTOUsuario dto2 = new DTOUsuario(null, "yausado@test.com", "YaUsado", "clave");
restTemplateUsuarios.postForEntity("/", dto2, Void.class);
// Intentar modificar con email duplicado
DTOModificarUsuario dtoDupEmail = new DTOModificarUsuario(
"yausado@test.com", // ya existe
"NombreX",
"nuevaClave",
"nuevaClave123"
);
HttpEntity<DTOModificarUsuario> reqDupEmail = new HttpEntity<>(dtoDupEmail, headers);
ResponseEntity<String> respDupEmail = restTemplateUsuarios.exchange(
"/", HttpMethod.PUT, reqDupEmail, String.class
);
assertThat(respDupEmail.getStatusCode()).isEqualTo(HttpStatus.CONFLICT);
assertThat(respDupEmail.getBody()).isEqualTo("correo");
// Intentar modificar con nombre de usuario duplicado
DTOModificarUsuario dtoDupNombre = new DTOModificarUsuario(
"correoLibre@test.com",
"YaUsado", // nombre en uso
"otraClave",
"nuevaClave123"
);
HttpEntity<DTOModificarUsuario> reqDupNombre = new HttpEntity<>(dtoDupNombre, headers);
ResponseEntity<String> respDupNombre = restTemplateUsuarios.exchange(
"/", HttpMethod.PUT, reqDupNombre, String.class
);
assertThat(respDupNombre.getStatusCode()).isEqualTo(HttpStatus.CONFLICT);
assertThat(respDupNombre.getBody()).isEqualTo("nombre de usuario");
// Intentar modificar con contraseña incorrecta
DTOModificarUsuario dtoBadPass = new DTOModificarUsuario(
"final@test.com",
"FinalUser",
"claveNueva",
"incorrecta"
);
HttpEntity<DTOModificarUsuario> reqBadPass = new HttpEntity<>(dtoBadPass, headers);
ResponseEntity<String> respBadPass = restTemplateUsuarios.exchange(
"/", HttpMethod.PUT, reqBadPass, String.class
);
assertThat(respBadPass.getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
assertThat(respBadPass.getBody()).isEqualTo("contraseña incorrecta");
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment