Commit 4ee25c92 by Rubén Ramírez

feat: [TestUsuariosController]: Actualizadas los tests de las funciones de…

feat: [TestUsuariosController]: Actualizadas los tests de las funciones de registro y modificación de datos con la comprobación de contraseña débil
parent 31d536e4
...@@ -73,33 +73,43 @@ public class TestUsuariosController { ...@@ -73,33 +73,43 @@ public class TestUsuariosController {
@Test @Test
@DirtiesContext @DirtiesContext
void testRegistrarUsuario() { void testRegistrarUsuario() {
// Intento registrar un usuario con datos inválidos; un email no válido // Usuario con campos vacíos o inválidos
var usuarioInvalido = new DTOUsuario(null, "", "UsuarioInvalido", "invalido"); var usuarioInvalido = new DTOUsuario(null, "", "", "invalido");
var respuestaInvalida = restTemplateUsuarios.postForEntity( var respuestaInvalida = restTemplateUsuarios.postForEntity(
"/", "/",
usuarioInvalido, usuarioInvalido,
Void.class String.class
); );
Assertions.assertThat(respuestaInvalida.getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN); Assertions.assertThat(respuestaInvalida.getStatusCode()).isEqualTo(HttpStatus.UNPROCESSABLE_ENTITY);
// Registro un usuario correctamente // Usuario con contraseña débil (menos de 8 caracteres, sin mayúsculas, números ni símbolos)
var usuarioValido = new DTOUsuario(null, "pedro@gmail.com", "Pedro", "pedrito"); var usuarioContraseniaDebil = new DTOUsuario(null, "roberto@gmail.com", "Roberto", "debile");
ResponseEntity<Void> respuestaValida = restTemplateUsuarios.postForEntity( var respuestaDebil = restTemplateUsuarios.postForEntity(
"/",
usuarioContraseniaDebil,
String.class
);
Assertions.assertThat(respuestaDebil.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
Assertions.assertThat(respuestaDebil.getBody()).isEqualTo("contrasenia");
// Registro correcto con contraseña válida
var usuarioValido = new DTOUsuario(null, "pedro@gmail.com", "Pedro", "Pedro123!");
ResponseEntity<String> respuestaValida = restTemplateUsuarios.postForEntity(
"/", "/",
usuarioValido, usuarioValido,
Void.class String.class
); );
Assertions.assertThat(respuestaValida.getStatusCode()).isEqualTo(HttpStatus.CREATED); Assertions.assertThat(respuestaValida.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// Intento registrar un usuario con el mismo email // Intento duplicado por email
var usuarioDuplicado = new DTOUsuario(null, "pedro@gmail.com", "Pedro", "pedrito"); var usuarioDuplicado = new DTOUsuario(null, "pedro@gmail.com", "OtroPedro", "Pedro123!");
var respuestaDuplicado = restTemplateUsuarios.postForEntity( var respuestaDuplicado = restTemplateUsuarios.postForEntity(
"/", "/",
usuarioDuplicado, usuarioDuplicado,
Void.class String.class
); );
Assertions.assertThat(respuestaDuplicado.getStatusCode()).isEqualTo(HttpStatus.CONFLICT); Assertions.assertThat(respuestaDuplicado.getStatusCode()).isEqualTo(HttpStatus.CONFLICT);
Assertions.assertThat(respuestaDuplicado.getBody()).isEqualTo("correo");
} }
@Test @Test
...@@ -234,14 +244,14 @@ public class TestUsuariosController { ...@@ -234,14 +244,14 @@ public class TestUsuariosController {
@DirtiesContext @DirtiesContext
void testModificarUsuario() { void testModificarUsuario() {
// Registro del primer usuario // Registro del primer usuario
DTOUsuario dto1 = new DTOUsuario(null, "modificar@test.com", "Modificador", "clave123"); DTOUsuario dto1 = new DTOUsuario(null, "modificar@test.com", "Modificador", "Clave123!");
ResponseEntity<Void> registro = restTemplateUsuarios.postForEntity("/", dto1, Void.class); ResponseEntity<Void> registro = restTemplateUsuarios.postForEntity("/", dto1, Void.class);
assertThat(registro.getStatusCode()).isEqualTo(HttpStatus.CREATED); assertThat(registro.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// Login para obtener token // Login para obtener token
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Map<String, String>> loginEntity = new HttpEntity<>(Map.of("clave", "clave123"), headers); HttpEntity<Map<String, String>> loginEntity = new HttpEntity<>(Map.of("clave", "Clave123!"), headers);
ResponseEntity<DTOLoginRespuesta> loginResponse = restTemplateUsuarios.postForEntity( ResponseEntity<DTOLoginRespuesta> loginResponse = restTemplateUsuarios.postForEntity(
"/{email}", "/{email}",
loginEntity, loginEntity,
...@@ -255,8 +265,8 @@ public class TestUsuariosController { ...@@ -255,8 +265,8 @@ public class TestUsuariosController {
DTOModificarUsuario dtoMod = new DTOModificarUsuario( DTOModificarUsuario dtoMod = new DTOModificarUsuario(
"nuevo@test.com", "nuevo@test.com",
"NuevoNombre", "NuevoNombre",
"nuevaClave123", "ClaveNueva123!",
"clave123" "Clave123!"
); );
headers = new HttpHeaders(); headers = new HttpHeaders();
...@@ -273,24 +283,23 @@ public class TestUsuariosController { ...@@ -273,24 +283,23 @@ public class TestUsuariosController {
assertThat(respuestaMod.getBody().getEmail()).isEqualTo("nuevo@test.com"); assertThat(respuestaMod.getBody().getEmail()).isEqualTo("nuevo@test.com");
assertThat(respuestaMod.getBody().getNombreUsuario()).isEqualTo("NuevoNombre"); assertThat(respuestaMod.getBody().getNombreUsuario()).isEqualTo("NuevoNombre");
// 🔁 Actualizar el token tras modificación // Actualizar el token tras modificación
String nuevoToken = respuestaMod.getBody().getToken(); String nuevoToken = respuestaMod.getBody().getToken();
headers.setBearerAuth(nuevoToken); headers.setBearerAuth(nuevoToken);
// Registrar segundo usuario con email que vamos a intentar duplicar // Registro de otro usuario para pruebas de duplicación
DTOUsuario dto2 = new DTOUsuario(null, "yausado@test.com", "YaUsado", "clave"); DTOUsuario dto2 = new DTOUsuario(null, "yausado@test.com", "YaUsado", "Clave456!");
restTemplateUsuarios.postForEntity("/", dto2, Void.class); restTemplateUsuarios.postForEntity("/", dto2, Void.class);
// Intentar modificar con email duplicado // Intentar modificar con email duplicado
DTOModificarUsuario dtoDupEmail = new DTOModificarUsuario( DTOModificarUsuario dtoDupEmail = new DTOModificarUsuario(
"yausado@test.com", // ya existe "yausado@test.com",
"NombreX", "NombreX",
"nuevaClave", "ClaveOtra123!",
"nuevaClave123" "ClaveNueva123!"
); );
HttpEntity<DTOModificarUsuario> reqDupEmail = new HttpEntity<>(dtoDupEmail, headers);
ResponseEntity<String> respDupEmail = restTemplateUsuarios.exchange( ResponseEntity<String> respDupEmail = restTemplateUsuarios.exchange(
"/", HttpMethod.PUT, reqDupEmail, String.class "/", HttpMethod.PUT, new HttpEntity<>(dtoDupEmail, headers), String.class
); );
assertThat(respDupEmail.getStatusCode()).isEqualTo(HttpStatus.CONFLICT); assertThat(respDupEmail.getStatusCode()).isEqualTo(HttpStatus.CONFLICT);
assertThat(respDupEmail.getBody()).isEqualTo("correo"); assertThat(respDupEmail.getBody()).isEqualTo("correo");
...@@ -298,30 +307,41 @@ public class TestUsuariosController { ...@@ -298,30 +307,41 @@ public class TestUsuariosController {
// Intentar modificar con nombre de usuario duplicado // Intentar modificar con nombre de usuario duplicado
DTOModificarUsuario dtoDupNombre = new DTOModificarUsuario( DTOModificarUsuario dtoDupNombre = new DTOModificarUsuario(
"correoLibre@test.com", "correoLibre@test.com",
"YaUsado", // nombre en uso "YaUsado",
"otraClave", "ClaveOtra123!",
"nuevaClave123" "ClaveNueva123!"
); );
HttpEntity<DTOModificarUsuario> reqDupNombre = new HttpEntity<>(dtoDupNombre, headers);
ResponseEntity<String> respDupNombre = restTemplateUsuarios.exchange( ResponseEntity<String> respDupNombre = restTemplateUsuarios.exchange(
"/", HttpMethod.PUT, reqDupNombre, String.class "/", HttpMethod.PUT, new HttpEntity<>(dtoDupNombre, headers), String.class
); );
assertThat(respDupNombre.getStatusCode()).isEqualTo(HttpStatus.CONFLICT); assertThat(respDupNombre.getStatusCode()).isEqualTo(HttpStatus.CONFLICT);
assertThat(respDupNombre.getBody()).isEqualTo("nombre de usuario"); assertThat(respDupNombre.getBody()).isEqualTo("nombre de usuario");
// Intentar modificar con contraseña incorrecta // Intentar modificar con contraseña actual incorrecta
DTOModificarUsuario dtoBadPass = new DTOModificarUsuario( DTOModificarUsuario dtoBadPass = new DTOModificarUsuario(
"final@test.com", "final@test.com",
"FinalUser", "FinalUser",
"claveNueva", "ClaveSegura456!",
"incorrecta" "incorrecta"
); );
HttpEntity<DTOModificarUsuario> reqBadPass = new HttpEntity<>(dtoBadPass, headers);
ResponseEntity<String> respBadPass = restTemplateUsuarios.exchange( ResponseEntity<String> respBadPass = restTemplateUsuarios.exchange(
"/", HttpMethod.PUT, reqBadPass, String.class "/", HttpMethod.PUT, new HttpEntity<>(dtoBadPass, headers), String.class
); );
assertThat(respBadPass.getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN); assertThat(respBadPass.getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
assertThat(respBadPass.getBody()).isEqualTo("contraseña incorrecta"); assertThat(respBadPass.getBody()).isEqualTo("contraseña incorrecta");
// Intentar modificar con contraseña débil
DTOModificarUsuario dtoDebil = new DTOModificarUsuario(
"debil@test.com",
"DebilUser",
"insegura", // sin número, mayúscula ni símbolo
"ClaveNueva123!"
);
ResponseEntity<String> respDebil = restTemplateUsuarios.exchange(
"/", HttpMethod.PUT, new HttpEntity<>(dtoDebil, headers), String.class
);
assertThat(respDebil.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
assertThat(respDebil.getBody()).isEqualTo("contrasenia");
} }
@Test @Test
......
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