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 {
@Test
@DirtiesContext
void testRegistrarUsuario() {
// Intento registrar un usuario con datos inválidos; un email no válido
var usuarioInvalido = new DTOUsuario(null, "", "UsuarioInvalido", "invalido");
// Usuario con campos vacíos o inválidos
var usuarioInvalido = new DTOUsuario(null, "", "", "invalido");
var respuestaInvalida = restTemplateUsuarios.postForEntity(
"/",
usuarioInvalido,
Void.class
String.class
);
Assertions.assertThat(respuestaInvalida.getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
Assertions.assertThat(respuestaInvalida.getStatusCode()).isEqualTo(HttpStatus.UNPROCESSABLE_ENTITY);
// Registro un usuario correctamente
var usuarioValido = new DTOUsuario(null, "pedro@gmail.com", "Pedro", "pedrito");
ResponseEntity<Void> respuestaValida = restTemplateUsuarios.postForEntity(
// Usuario con contraseña débil (menos de 8 caracteres, sin mayúsculas, números ni símbolos)
var usuarioContraseniaDebil = new DTOUsuario(null, "roberto@gmail.com", "Roberto", "debile");
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,
Void.class
String.class
);
Assertions.assertThat(respuestaValida.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// Intento registrar un usuario con el mismo email
var usuarioDuplicado = new DTOUsuario(null, "pedro@gmail.com", "Pedro", "pedrito");
// Intento duplicado por email
var usuarioDuplicado = new DTOUsuario(null, "pedro@gmail.com", "OtroPedro", "Pedro123!");
var respuestaDuplicado = restTemplateUsuarios.postForEntity(
"/",
usuarioDuplicado,
Void.class
String.class
);
Assertions.assertThat(respuestaDuplicado.getStatusCode()).isEqualTo(HttpStatus.CONFLICT);
Assertions.assertThat(respuestaDuplicado.getBody()).isEqualTo("correo");
}
@Test
......@@ -234,14 +244,14 @@ public class TestUsuariosController {
@DirtiesContext
void testModificarUsuario() {
// 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);
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);
HttpEntity<Map<String, String>> loginEntity = new HttpEntity<>(Map.of("clave", "Clave123!"), headers);
ResponseEntity<DTOLoginRespuesta> loginResponse = restTemplateUsuarios.postForEntity(
"/{email}",
loginEntity,
......@@ -255,8 +265,8 @@ public class TestUsuariosController {
DTOModificarUsuario dtoMod = new DTOModificarUsuario(
"nuevo@test.com",
"NuevoNombre",
"nuevaClave123",
"clave123"
"ClaveNueva123!",
"Clave123!"
);
headers = new HttpHeaders();
......@@ -273,24 +283,23 @@ public class TestUsuariosController {
assertThat(respuestaMod.getBody().getEmail()).isEqualTo("nuevo@test.com");
assertThat(respuestaMod.getBody().getNombreUsuario()).isEqualTo("NuevoNombre");
// 🔁 Actualizar el token tras modificación
// 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");
// Registro de otro usuario para pruebas de duplicación
DTOUsuario dto2 = new DTOUsuario(null, "yausado@test.com", "YaUsado", "Clave456!");
restTemplateUsuarios.postForEntity("/", dto2, Void.class);
// Intentar modificar con email duplicado
DTOModificarUsuario dtoDupEmail = new DTOModificarUsuario(
"yausado@test.com", // ya existe
"yausado@test.com",
"NombreX",
"nuevaClave",
"nuevaClave123"
"ClaveOtra123!",
"ClaveNueva123!"
);
HttpEntity<DTOModificarUsuario> reqDupEmail = new HttpEntity<>(dtoDupEmail, headers);
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.getBody()).isEqualTo("correo");
......@@ -298,30 +307,41 @@ public class TestUsuariosController {
// Intentar modificar con nombre de usuario duplicado
DTOModificarUsuario dtoDupNombre = new DTOModificarUsuario(
"correoLibre@test.com",
"YaUsado", // nombre en uso
"otraClave",
"nuevaClave123"
"YaUsado",
"ClaveOtra123!",
"ClaveNueva123!"
);
HttpEntity<DTOModificarUsuario> reqDupNombre = new HttpEntity<>(dtoDupNombre, headers);
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.getBody()).isEqualTo("nombre de usuario");
// Intentar modificar con contraseña incorrecta
// Intentar modificar con contraseña actual incorrecta
DTOModificarUsuario dtoBadPass = new DTOModificarUsuario(
"final@test.com",
"FinalUser",
"claveNueva",
"ClaveSegura456!",
"incorrecta"
);
HttpEntity<DTOModificarUsuario> reqBadPass = new HttpEntity<>(dtoBadPass, headers);
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.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
......
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