Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Rubén Ramírez
/
MangAffinity
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
44deb578
authored
Feb 20, 2025
by
Rubén Ramírez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
feat: [TestServicioUsuario]: Empezada la implementación del test de autenticación de usuario
parent
57d35b81
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
65 additions
and
1 deletions
src/main/java/com/ujaen/tfg/mangaffinity/repositorios/RepositorioUsuario.java
src/test/java/com/ujaen/tfg/mangaffinity/servicios/TestServicioUsuarios.java
src/main/java/com/ujaen/tfg/mangaffinity/repositorios/RepositorioUsuario.java
View file @
44deb578
...
...
@@ -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
();
}
}
src/test/java/com/ujaen/tfg/mangaffinity/servicios/TestServicioUsuarios.java
View file @
44deb578
...
...
@@ -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"
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment