Commit e465d085 by Rubén Ramírez

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

feat: [TestServicioUsuarios]: Actualizadas los tests de las funciones de registro y modificación de datos con la comprobación de contraseña débil
parent 7d0bd97b
...@@ -5,6 +5,7 @@ import com.ujaen.tfg.mangaffinity.MangAffinityApplication; ...@@ -5,6 +5,7 @@ import com.ujaen.tfg.mangaffinity.MangAffinityApplication;
import com.ujaen.tfg.mangaffinity.config.JpaTestConfig; import com.ujaen.tfg.mangaffinity.config.JpaTestConfig;
import com.ujaen.tfg.mangaffinity.entidades.BibliotecaPersonal; import com.ujaen.tfg.mangaffinity.entidades.BibliotecaPersonal;
import com.ujaen.tfg.mangaffinity.entidades.Usuario; import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import com.ujaen.tfg.mangaffinity.excepciones.ContrasenaDebil;
import com.ujaen.tfg.mangaffinity.excepciones.NombreUsuarioYaCogido; import com.ujaen.tfg.mangaffinity.excepciones.NombreUsuarioYaCogido;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioNoExiste; import com.ujaen.tfg.mangaffinity.excepciones.UsuarioNoExiste;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado; import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado;
...@@ -37,27 +38,32 @@ public class TestServicioUsuarios { ...@@ -37,27 +38,32 @@ public class TestServicioUsuarios {
@Test @Test
@DirtiesContext @DirtiesContext
void testCrearUsuario() { void testCrearUsuario() {
//Registro un usuario correctamente // Usuario válido
var usuario1 = new Usuario("juan@gmail.com", "Juan", "juanelo"); var usuario1 = new Usuario("juan@gmail.com", "Juan", "Segura123!");
DTOLoginRespuesta respuesta1 = servicioUsuarios.crearUsuario(usuario1); DTOLoginRespuesta respuesta1 = servicioUsuarios.crearUsuario(usuario1);
assertThat(respuesta1).isNotNull(); assertThat(respuesta1).isNotNull();
assertThat(respuesta1.getEmail()).isEqualTo("juan@gmail.com"); assertThat(respuesta1.getEmail()).isEqualTo("juan@gmail.com");
assertThat(respuesta1.getNombreUsuario()).isEqualTo("Juan"); assertThat(respuesta1.getNombreUsuario()).isEqualTo("Juan");
// Intento registrar un usuario con un email ya registrado // Email ya registrado
var usuario2 = new Usuario("juan@gmail.com", "Carlos", "carlitos"); var usuario2 = new Usuario("juan@gmail.com", "Carlos", "OtraSegura123!");
assertThatThrownBy(() -> servicioUsuarios.crearUsuario(usuario2)) assertThatThrownBy(() -> servicioUsuarios.crearUsuario(usuario2))
.isInstanceOf(UsuarioYaRegistrado.class); .isInstanceOf(UsuarioYaRegistrado.class);
// Intento registrar un usuario con un nombre de usuario ya en uso // Nombre de usuario ya en uso
var usuario3 = new Usuario("maria@gmail.com", "Juan", "juanelo"); var usuario3 = new Usuario("maria@gmail.com", "Juan", "Segura456!");
assertThatThrownBy(() -> servicioUsuarios.crearUsuario(usuario3)) assertThatThrownBy(() -> servicioUsuarios.crearUsuario(usuario3))
.isInstanceOf(NombreUsuarioYaCogido.class); .isInstanceOf(NombreUsuarioYaCogido.class);
// Intento registrar un usuario con el email del administrador // Email del administrador
var usuarioAdmin = new Usuario("admin@example.com", "Admin", "adminpassword"); var usuarioAdmin = new Usuario("admin@example.com", "Admin", "Admin123!");
assertThatThrownBy(() -> servicioUsuarios.crearUsuario(usuarioAdmin)) assertThatThrownBy(() -> servicioUsuarios.crearUsuario(usuarioAdmin))
.isInstanceOf(UsuarioYaRegistrado.class); .isInstanceOf(UsuarioYaRegistrado.class);
// Contraseña débil (sin mayúscula, número ni carácter especial)
var usuarioDebil = new Usuario("nuevo@gmail.com", "Nuevo", "insegura");
assertThatThrownBy(() -> servicioUsuarios.crearUsuario(usuarioDebil))
.isInstanceOf(ContrasenaDebil.class);
} }
@Test @Test
...@@ -210,28 +216,44 @@ public class TestServicioUsuarios { ...@@ -210,28 +216,44 @@ public class TestServicioUsuarios {
@Test @Test
@DirtiesContext @DirtiesContext
void testModificarUsuarioDesdeToken() { void testModificarUsuarioDesdeToken() {
// Crear usuario y obtener su token // Crear usuario con contraseña válida
Usuario usuario = new Usuario("token@test.com", "TokenUser", "clave123"); Usuario usuario = new Usuario("token@test.com", "TokenUser", "Clave123!");
DTOLoginRespuesta registro = servicioUsuarios.crearUsuario(usuario); DTOLoginRespuesta registro = servicioUsuarios.crearUsuario(usuario);
String token = "Bearer " + registro.getToken(); String token = "Bearer " + registro.getToken();
// Modificar datos a través del token // Modificar datos correctamente
DTOLoginRespuesta modificado = servicioUsuarios.modificarUsuarioDesdeToken( DTOLoginRespuesta modificado = servicioUsuarios.modificarUsuarioDesdeToken(
token, token,
"modificado@test.com", "modificado@test.com",
"NombreModificado", "NombreModificado",
"claveModificada", "ClaveNueva123!",
"clave123" "Clave123!"
); );
assertThat(modificado).isNotNull(); assertThat(modificado).isNotNull();
assertThat(modificado.getEmail()).isEqualTo("modificado@test.com"); assertThat(modificado.getEmail()).isEqualTo("modificado@test.com");
assertThat(modificado.getNombreUsuario()).isEqualTo("NombreModificado"); assertThat(modificado.getNombreUsuario()).isEqualTo("NombreModificado");
// Validar que el nuevo token contiene los datos actualizados ///️ Obtener el nuevo token con datos actualizados
Claims claims = jwtUtil.decodeJWT(modificado.getToken()); String nuevoToken = "Bearer " + modificado.getToken();
assertThat(claims.get("email")).isEqualTo("modificado@test.com");
assertThat(claims.get("nombreUsuario")).isEqualTo("NombreModificado"); // Contraseña nueva débil
assertThatThrownBy(() -> servicioUsuarios.modificarUsuarioDesdeToken(
nuevoToken,
"otro@test.com",
"OtroNombre",
"debile", // débil: sin número, mayúscula ni carácter especial
"ClaveNueva123!"
)).isInstanceOf(ContrasenaDebil.class);
// Contraseña actual incorrecta
assertThatThrownBy(() -> servicioUsuarios.modificarUsuarioDesdeToken(
nuevoToken,
"otro2@test.com",
"OtroNombre2",
"ClaveSegura456!",
"incorrecta"
)).isInstanceOf(IllegalArgumentException.class);
} }
@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