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
18a1b791
authored
Feb 20, 2025
by
Rubén Ramírez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
feat: [TestUsuariosController]: Implementado el test de registro usuario con los permisos
parent
5ef0a3bd
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
19 additions
and
35 deletions
src/main/java/com/ujaen/tfg/mangaffinity/rest/UsuariosController.java
src/main/java/com/ujaen/tfg/mangaffinity/seguridad/ServicioSeguridad.java
src/test/java/com/ujaen/tfg/mangaffinity/rest/TestUsuariosController.java
src/test/resources/application-test.yml
src/main/java/com/ujaen/tfg/mangaffinity/rest/UsuariosController.java
View file @
18a1b791
...
...
@@ -28,11 +28,11 @@ public class UsuariosController {
public
void
mapeadoExcepcionConstraintViolationException
()
{}
@PostMapping
(
"/"
)
public
ResponseEntity
<
String
>
registrarUsuario
(
@RequestBody
DTOUsuario
dtoUsuario
)
{
public
ResponseEntity
<
DTOUsuario
>
registrarUsuario
(
@RequestBody
DTOUsuario
dtoUsuario
)
{
try
{
Usuario
usuario
=
mapper
.
entity
(
dtoUsuario
);
servicioUsuarios
.
crearUsuario
(
usuario
);
return
ResponseEntity
.
status
(
HttpStatus
.
CREATED
).
b
uild
(
);
return
ResponseEntity
.
status
(
HttpStatus
.
CREATED
).
b
ody
(
mapper
.
dto
(
usuario
)
);
}
catch
(
UsuarioYaRegistrado
e
)
{
return
ResponseEntity
.
status
(
HttpStatus
.
CONFLICT
).
build
();
}
...
...
src/main/java/com/ujaen/tfg/mangaffinity/seguridad/ServicioSeguridad.java
View file @
18a1b791
...
...
@@ -2,52 +2,35 @@ package com.ujaen.tfg.mangaffinity.seguridad;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Profile
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.security.config.Customizer
;
import
org.springframework.security.config.annotation.web.builders.HttpSecurity
;
import
org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
;
import
org.springframework.security.core.userdetails.User
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetailsService
;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.security.provisioning.InMemoryUserDetailsManager
;
import
org.springframework.security.web.SecurityFilterChain
;
import
org.springframework.security.web.access.expression.WebExpressionAuthorizationManager
;
@Configuration
@EnableWebSecurity
@Profile
(
"!test"
)
// Desactiva seguridad en tests
public
class
ServicioSeguridad
{
@Bean
public
SecurityFilterChain
securityFilterChain
(
HttpSecurity
http
)
throws
Exception
{
http
.
csrf
(
csrf
->
csrf
.
disable
())
// Desactivar CSRF para desarrollo
.
authorizeHttpRequests
(
auth
->
auth
.
requestMatchers
(
"/usuarios/**"
).
permitAll
()
// Permitir registro
.
anyRequest
().
authenticated
()
// Requerir autenticación para todo lo demás
)
.
httpBasic
(
Customizer
.
withDefaults
());
// Solución correcta para httpBasic()
return
http
.
build
();
return
http
.
csrf
(
csrf
->
csrf
.
disable
())
.
sessionManagement
(
session
->
session
.
disable
())
.
httpBasic
(
httpBasic
->
httpBasic
.
realmName
(
"mangaffinity"
))
.
authorizeHttpRequests
(
request
->
request
.
requestMatchers
(
HttpMethod
.
POST
,
"/usuarios/"
).
permitAll
()
)
.
build
();
}
@Bean
public
PasswordEncoder
passwordEncoder
()
{
return
new
BCryptPasswordEncoder
();
}
// Usuario en memoria para pruebas (quítalo cuando uses JWT)
@Bean
public
UserDetailsService
userDetailsService
()
{
UserDetails
user
=
User
.
withUsername
(
"admin"
)
.
password
(
passwordEncoder
().
encode
(
"admin"
))
.
roles
(
"ADMIN"
)
.
build
();
return
new
InMemoryUserDetailsManager
(
user
);
}
}
src/test/java/com/ujaen/tfg/mangaffinity/rest/TestUsuariosController.java
View file @
18a1b791
...
...
@@ -42,8 +42,8 @@ public class TestUsuariosController {
@Test
@DirtiesContext
void
testRegistrarUsuario
()
{
// Caso 1: Intentar registrar un usuario con datos inválidos
(email vacío)
var
usuarioInvalido
=
new
DTOUsuario
(
null
,
""
,
"Usuario
Prueba"
,
"password123
"
);
// Caso 1: Intentar registrar un usuario con datos inválidos
; un email vacío
var
usuarioInvalido
=
new
DTOUsuario
(
null
,
""
,
"Usuario
Invalido"
,
"invalido
"
);
var
respuestaInvalida
=
restTemplateUsuarios
.
postForEntity
(
"/"
,
usuarioInvalido
,
...
...
@@ -52,7 +52,7 @@ public class TestUsuariosController {
Assertions
.
assertThat
(
respuestaInvalida
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
UNPROCESSABLE_ENTITY
);
// Caso 2: Registrar un usuario correctamente
var
usuarioValido
=
new
DTOUsuario
(
null
,
"
carlitos@gmail.com"
,
"Carlitos"
,
"password123
"
);
var
usuarioValido
=
new
DTOUsuario
(
null
,
"
pedro@gmail.com"
,
"Pedro"
,
"pedrito
"
);
ResponseEntity
<
DTOUsuario
>
respuestaValida
=
restTemplateUsuarios
.
postForEntity
(
"/"
,
usuarioValido
,
...
...
@@ -60,12 +60,12 @@ public class TestUsuariosController {
);
Assertions
.
assertThat
(
respuestaValida
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
// V
alidar
que el usuario devuelto tiene un ID asignado
// V
erificación de
que el usuario devuelto tiene un ID asignado
var
usuarioCreado
=
respuestaValida
.
getBody
();
Assertions
.
assertThat
(
usuarioCreado
).
isNotNull
();
Assertions
.
assertThat
(
usuarioCreado
.
getId
()).
isNotNull
();
// Confirmamos que el ID fue generado correctamente
Assertions
.
assertThat
(
usuarioCreado
.
getId
()).
isNotNull
();
// Caso 3: Intentar registrar un usuario con el mismo email
(debe dar conflicto)
// Caso 3: Intentar registrar un usuario con el mismo email
var
usuarioDuplicado
=
new
DTOUsuario
(
null
,
"carlitos@gmail.com"
,
"Carlitos"
,
"password123"
);
var
respuestaDuplicado
=
restTemplateUsuarios
.
postForEntity
(
"/"
,
...
...
src/test/resources/application-test.yml
View file @
18a1b791
...
...
@@ -15,3 +15,4 @@ spring:
sql
:
init
:
mode
:
never
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