Commit 44deb578 by Rubén Ramírez

feat: [TestServicioUsuario]: Empezada la implementación del test de autenticación de usuario

parent 57d35b81
......@@ -30,6 +30,11 @@ public class RepositorioUsuario {
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public Optional<Usuario> findByEmail(String email) {
return Optional.ofNullable(em.find(Usuario.class, email));
String query = "SELECT u FROM Usuario u WHERE u.email = :email";
return em.createQuery(query, Usuario.class)
.setParameter("email", email)
.getResultList()
.stream()
.findFirst();
}
}
......@@ -4,6 +4,8 @@ import com.ujaen.tfg.mangaffinity.MangAffinityApplication;
import com.ujaen.tfg.mangaffinity.config.JpaTestConfig;
import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado;
import com.ujaen.tfg.mangaffinity.rest.DTO.DTOLoginRespuesta;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
......@@ -11,6 +13,7 @@ import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
@SpringBootTest(classes = {MangAffinityApplication.class, JpaTestConfig.class})
@ActiveProfiles("test")
......@@ -27,4 +30,60 @@ public class TestServicioUsuarios {
servicioUsuarios.crearUsuario(usuario1);
assertThatThrownBy(() -> servicioUsuarios.crearUsuario(usuario1)).isInstanceOf(UsuarioYaRegistrado.class);
}
/**
@Test
@DirtiesContext
void testAutenticacionUsuario() {
// Caso 1: Registrar un usuario en la base de datos en memoria
Usuario usuario = new Usuario("test@example.com", "Test User", "password123");
servicioUsuarios.crearUsuario(usuario);
// Caso 2: Intentar autenticar al usuario
DTOLoginRespuesta respuesta = servicioUsuarios.autenticarUsuario("test@example.com", "password123");
// Verificar que se ha generado un token
Assertions.assertThat(respuesta).isNotNull();
Assertions.assertThat(respuesta.getToken()).isNotNull();
// Caso 3: Intentar autenticar con una contraseña incorrecta
DTOLoginRespuesta respuestaIncorrecta = servicioUsuarios.autenticarUsuario("test@example.com", "wrongpassword");
// Verificar que no se ha generado un token
Assertions.assertThat(respuestaIncorrecta).isNull();
}
**/
@Test
@DirtiesContext
void testAutenticarUsuario() {
// Caso 1: Usuario con email incorrecto
String emailInexistente = "nonexistent@example.com";
String contraseniaValida = "validpassword";
assertThat(servicioUsuarios.autenticarUsuario(emailInexistente, contraseniaValida)).isNull();
// Caso 2: Contraseña incorrecta
String emailExistente = "test@example.com"; // Este email debe existir en tu base de datos de prueba
String contraseniaIncorrecta = "wrongpassword";
assertThat(servicioUsuarios.autenticarUsuario(emailExistente, contraseniaIncorrecta)).isNull();
// Caso 3: Usuario con email y contraseña correctos
String emailCorrecto = "test@example.com"; // Este email debe existir en tu base de datos de prueba
String contraseniaCorrecta = "validpassword"; // La contraseña debe ser la correcta
DTOLoginRespuesta respuestaValida = servicioUsuarios.autenticarUsuario(emailCorrecto, contraseniaCorrecta);
assertThat(respuestaValida).isNotNull();
assertThat(respuestaValida.getToken()).isNotNull();
// Comprobamos que el rol de usuario registrado esté incluido en el token
assertThat(respuestaValida.getToken()).contains("rol", "USUARIO_REGISTRADO");
// Caso 4: Usuario ADMIN con email correcto
String emailAdmin = "admin@example.com"; // Este debe ser el email del admin
String contraseniaAdmin = "adminpassword"; // Contraseña encriptada para el admin
DTOLoginRespuesta respuestaAdmin = servicioUsuarios.autenticarUsuario(emailAdmin, contraseniaAdmin);
assertThat(respuestaAdmin).isNotNull();
assertThat(respuestaAdmin.getToken()).isNotNull();
// Comprobamos que el rol ADMIN esté presente en el token
assertThat(respuestaAdmin.getToken()).contains("rol", "ADMIN");
}
}
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