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
4594c7b2
authored
Feb 23, 2025
by
Rubén Ramírez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
feat: [TestRecursosControlador]: Añadido el test para obtener capítulos en el controlador
parent
8da4b779
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
99 additions
and
5 deletions
src/test/java/com/ujaen/tfg/mangaffinity/rest/TestRecursosController.java
src/test/java/com/ujaen/tfg/mangaffinity/rest/TestRecursosController.java
View file @
4594c7b2
...
...
@@ -465,21 +465,21 @@ public class TestRecursosController {
@Test
@DirtiesContext
void
testAnadirCapitulo
()
{
//
🔹
Registro de un administrador
// Registro de un administrador
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"admin@example.com"
,
"nombreUsuario"
,
"admin"
,
"contrasenia"
,
"adminpassword"
),
Void
.
class
);
//
🔹
Inicio sesión con el administrador
// Inicio sesión con el administrador
var
authResponse
=
restTemplate
.
postForEntity
(
"/usuarios/admin@example.com"
,
Map
.
of
(
"clave"
,
"adminpassword"
),
DTOLoginRespuesta
.
class
);
assertThat
(
authResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
String
token
=
"Bearer "
+
authResponse
.
getBody
().
getToken
();
//
🔹 Crear
recurso con autenticación de administrador
//
Creo
recurso con autenticación de administrador
Recurso
recurso
=
new
Recurso
(
"Manga Ejemplo"
,
"Sinopsis"
,
LocalDate
.
now
(),
"Autor X"
);
HttpHeaders
headers
=
new
HttpHeaders
();
...
...
@@ -488,7 +488,6 @@ public class TestRecursosController {
var
respuestaAdmin
=
restTemplate
.
exchange
(
"/recursos/"
,
HttpMethod
.
POST
,
request
,
Void
.
class
);
assertThat
(
respuestaAdmin
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
// 🔹 Obtener el ID del recurso recién creado
ResponseEntity
<
DTORecurso
[]>
respuestaBusqueda
=
restTemplate
.
exchange
(
"/recursos/titulo/{titulo}"
,
HttpMethod
.
GET
,
null
,
DTORecurso
[].
class
,
"Manga Ejemplo"
);
...
...
@@ -496,7 +495,7 @@ public class TestRecursosController {
Long
recursoId
=
respuestaBusqueda
.
getBody
()[
0
].
getId
();
assertThat
(
recursoId
).
isNotNull
();
//
🔹 Intentar
añadir un capítulo con autenticación de administrador
//
Intento
añadir un capítulo con autenticación de administrador
DTOCapitulo
nuevoCapitulo
=
new
DTOCapitulo
(
null
,
1
,
"Capítulo 1"
,
TipoRecurso
.
MANGA
,
List
.
of
(
new
DTOFuenteCapitulo
(
"Crunchyroll"
,
"https://crunchyroll.com/cap1"
))
...
...
@@ -508,6 +507,101 @@ public class TestRecursosController {
);
assertThat
(
respuestaCapitulo
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
// Registro un usuario normal
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"usuario@example.com"
,
"nombreUsuario"
,
"usuario"
,
"contrasenia"
,
"userpassword"
),
Void
.
class
);
// Inicio sesión con ese usuario
var
authUserResponse
=
restTemplate
.
postForEntity
(
"/usuarios/usuario@example.com"
,
Map
.
of
(
"clave"
,
"userpassword"
),
DTOLoginRespuesta
.
class
);
assertThat
(
authUserResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
String
tokenUser
=
"Bearer "
+
authUserResponse
.
getBody
().
getToken
();
HttpHeaders
headersUser
=
new
HttpHeaders
();
headersUser
.
set
(
"Authorization"
,
tokenUser
);
// Intento añadir un capítulo con el usuario normal
HttpEntity
<
DTOCapitulo
>
capituloRequestUser
=
new
HttpEntity
<>(
nuevoCapitulo
,
headersUser
);
ResponseEntity
<
Void
>
respuestaCapituloUser
=
restTemplate
.
exchange
(
"/recursos/{id}/capitulos"
,
HttpMethod
.
POST
,
capituloRequestUser
,
Void
.
class
,
recursoId
);
assertThat
(
respuestaCapituloUser
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
UNAUTHORIZED
);
}
@Test
@DirtiesContext
void
testObtenerCapitulosDeRecurso
()
{
// Registro un administrador
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"admin@example.com"
,
"nombreUsuario"
,
"admin"
,
"contrasenia"
,
"adminpassword"
),
Void
.
class
);
// 🔹 Inicio sesión con el administrador
var
authResponse
=
restTemplate
.
postForEntity
(
"/usuarios/admin@example.com"
,
Map
.
of
(
"clave"
,
"adminpassword"
),
DTOLoginRespuesta
.
class
);
assertThat
(
authResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
String
token
=
"Bearer "
+
authResponse
.
getBody
().
getToken
();
// Creo un recurso con autenticación
Recurso
recurso
=
new
Recurso
(
"Manga Ejemplo"
,
"Sinopsis"
,
LocalDate
.
now
(),
"Autor X"
);
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
set
(
"Authorization"
,
token
);
HttpEntity
<
Recurso
>
request
=
new
HttpEntity
<>(
recurso
,
headers
);
var
respuestaCreacion
=
restTemplate
.
exchange
(
"/recursos/"
,
HttpMethod
.
POST
,
request
,
Void
.
class
);
assertThat
(
respuestaCreacion
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
// Busco el recurso por título para obtener su ID
ResponseEntity
<
DTORecurso
[]>
respuestaBusqueda
=
restTemplate
.
getForEntity
(
"/recursos/titulo/Manga Ejemplo"
,
DTORecurso
[].
class
);
assertThat
(
respuestaBusqueda
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
assertThat
(
respuestaBusqueda
.
getBody
()).
isNotEmpty
();
Long
recursoId
=
respuestaBusqueda
.
getBody
()[
0
].
getId
();
// Agrego capítulos al recurso
restTemplate
.
exchange
(
"/recursos/{id}/capitulos"
,
HttpMethod
.
POST
,
new
HttpEntity
<>(
new
DTOCapitulo
(
null
,
1
,
"Capítulo 1"
,
TipoRecurso
.
MANGA
,
List
.
of
(
new
DTOFuenteCapitulo
(
"Crunchyroll"
,
"https://crunchyroll.com/cap1"
))),
headers
),
Void
.
class
,
recursoId
);
restTemplate
.
exchange
(
"/recursos/{id}/capitulos"
,
HttpMethod
.
POST
,
new
HttpEntity
<>(
new
DTOCapitulo
(
null
,
2
,
"Capítulo 2"
,
TipoRecurso
.
MANGA
,
List
.
of
(
new
DTOFuenteCapitulo
(
"AnimeFLV"
,
"https://animeflv.com/cap2"
))),
headers
),
Void
.
class
,
recursoId
);
// Obtengo capítulos del recurso
ResponseEntity
<
DTOCapitulo
[]>
respuestaCapitulos
=
restTemplate
.
exchange
(
"/recursos/{id}/capitulos"
,
HttpMethod
.
GET
,
null
,
DTOCapitulo
[].
class
,
recursoId
);
assertThat
(
respuestaCapitulos
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
assertThat
(
respuestaCapitulos
.
getBody
()).
isNotNull
().
hasSize
(
2
);
assertThat
(
respuestaCapitulos
.
getBody
()[
0
].
getNumero
()).
isEqualTo
(
1
);
assertThat
(
respuestaCapitulos
.
getBody
()[
0
].
getTitulo
()).
isEqualTo
(
"Capítulo 1"
);
assertThat
(
respuestaCapitulos
.
getBody
()[
0
].
getFuentes
().
get
(
0
).
getNombreFuente
()).
isEqualTo
(
"Crunchyroll"
);
assertThat
(
respuestaCapitulos
.
getBody
()[
1
].
getNumero
()).
isEqualTo
(
2
);
assertThat
(
respuestaCapitulos
.
getBody
()[
1
].
getTitulo
()).
isEqualTo
(
"Capítulo 2"
);
assertThat
(
respuestaCapitulos
.
getBody
()[
1
].
getFuentes
().
get
(
0
).
getNombreFuente
()).
isEqualTo
(
"AnimeFLV"
);
// Caso de recurso sin capítulos
ResponseEntity
<
DTOCapitulo
[]>
respuestaSinCapitulos
=
restTemplate
.
exchange
(
"/recursos/{id}/capitulos"
,
HttpMethod
.
GET
,
null
,
DTOCapitulo
[].
class
,
9999
);
assertThat
(
respuestaSinCapitulos
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
NOT_FOUND
);
assertThat
(
respuestaSinCapitulos
.
getBody
()).
isNull
();
}
}
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