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
63651ab7
authored
May 11, 2025
by
Rubén Ramírez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
feat: [TestSeguimientoController]: Testeadas las funciones para la red social
parent
88f01d4a
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
363 additions
and
0 deletions
src/test/java/com/ujaen/tfg/mangaffinity/rest/TestSeguimientoController.java
src/test/java/com/ujaen/tfg/mangaffinity/rest/TestSeguimientoController.java
0 → 100644
View file @
63651ab7
package
com
.
ujaen
.
tfg
.
mangaffinity
.
rest
;
import
com.ujaen.tfg.mangaffinity.MangAffinityApplication
;
import
com.ujaen.tfg.mangaffinity.config.JpaTestConfig
;
import
com.ujaen.tfg.mangaffinity.rest.DTO.DTOLoginRespuesta
;
import
com.ujaen.tfg.mangaffinity.rest.DTO.DTOUsuario
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.web.client.TestRestTemplate
;
import
org.springframework.http.*
;
import
org.springframework.test.annotation.DirtiesContext
;
import
org.springframework.test.context.ActiveProfiles
;
import
java.util.List
;
import
java.util.Map
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
@SpringBootTest
(
classes
=
{
MangAffinityApplication
.
class
,
JpaTestConfig
.
class
},
webEnvironment
=
SpringBootTest
.
WebEnvironment
.
RANDOM_PORT
)
@ActiveProfiles
(
"test"
)
@DirtiesContext
(
classMode
=
DirtiesContext
.
ClassMode
.
AFTER_EACH_TEST_METHOD
)
public
class
TestSeguimientoController
{
@Autowired
private
TestRestTemplate
restTemplate
;
@Test
@DirtiesContext
void
testSeguirUsuario
()
{
// Registro de los usuarios: seguidor y seguido
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"seguidor@example.com"
,
"nombreUsuario"
,
"seguidor"
,
"contrasenia"
,
"clave123"
),
Void
.
class
);
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"seguido@example.com"
,
"nombreUsuario"
,
"seguido"
,
"contrasenia"
,
"clave456"
),
Void
.
class
);
// Inicio de sesión con el seguidor
var
authResponse
=
restTemplate
.
postForEntity
(
"/usuarios/seguidor@example.com"
,
Map
.
of
(
"clave"
,
"clave123"
),
DTOLoginRespuesta
.
class
);
assertThat
(
authResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
String
token
=
authResponse
.
getBody
().
getToken
();
// Petición para seguir al otro usuario
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setBearerAuth
(
token
);
headers
.
set
(
"nombreUsuario"
,
"seguidor"
);
HttpEntity
<
Void
>
request
=
new
HttpEntity
<>(
headers
);
// Seguir correctamente
var
seguirResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguido"
,
HttpMethod
.
POST
,
request
,
Void
.
class
);
assertThat
(
seguirResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
// Intento volver a seguirlo → debe dar CONFLICT
var
conflicto
=
restTemplate
.
exchange
(
"/seguimientos/seguido"
,
HttpMethod
.
POST
,
request
,
Void
.
class
);
assertThat
(
conflicto
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CONFLICT
);
// Intento seguir a un usuario inexistente → NOT_FOUND
var
noExiste
=
restTemplate
.
exchange
(
"/seguimientos/inexistente"
,
HttpMethod
.
POST
,
request
,
Void
.
class
);
assertThat
(
noExiste
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
NOT_FOUND
);
// Cabecera con nombre vacío → NOT_FOUND (por IllegalArgumentException)
headers
.
set
(
"nombreUsuario"
,
" "
);
var
vacioRequest
=
new
HttpEntity
<>(
headers
);
var
vacioResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguido"
,
HttpMethod
.
POST
,
vacioRequest
,
Void
.
class
);
assertThat
(
vacioResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
NOT_FOUND
);
}
@Test
@DirtiesContext
void
testDejarDeSeguirUsuario
()
{
// Registro de los usuarios: seguidor y seguido
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"seguidor@example.com"
,
"nombreUsuario"
,
"seguidor"
,
"contrasenia"
,
"clave123"
),
Void
.
class
);
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"seguido@example.com"
,
"nombreUsuario"
,
"seguido"
,
"contrasenia"
,
"clave456"
),
Void
.
class
);
// Inicio de sesión con el seguidor
var
authResponse
=
restTemplate
.
postForEntity
(
"/usuarios/seguidor@example.com"
,
Map
.
of
(
"clave"
,
"clave123"
),
DTOLoginRespuesta
.
class
);
assertThat
(
authResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
String
token
=
authResponse
.
getBody
().
getToken
();
// Cabeceras con el nombre del seguidor
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setBearerAuth
(
token
);
headers
.
set
(
"nombreUsuario"
,
"seguidor"
);
HttpEntity
<
Void
>
request
=
new
HttpEntity
<>(
headers
);
// Primero seguir al usuario para luego poder dejar de seguirlo
var
seguirResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguido"
,
HttpMethod
.
POST
,
request
,
Void
.
class
);
assertThat
(
seguirResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
// Dejar de seguir correctamente
var
dejarResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguido"
,
HttpMethod
.
DELETE
,
request
,
Void
.
class
);
assertThat
(
dejarResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
NO_CONTENT
);
// Intentar dejar de seguir otra vez → ya no hay seguimiento → NOT_FOUND
var
yaNoSigueResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguido"
,
HttpMethod
.
DELETE
,
request
,
Void
.
class
);
assertThat
(
yaNoSigueResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
NOT_FOUND
);
// Intentar dejar de seguir a un usuario que no existe → NOT_FOUND
var
inexistenteResponse
=
restTemplate
.
exchange
(
"/seguimientos/noexiste"
,
HttpMethod
.
DELETE
,
request
,
Void
.
class
);
assertThat
(
inexistenteResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
NOT_FOUND
);
}
@Test
@DirtiesContext
void
testObtenerSeguidos
()
{
// Registro de dos usuarios: seguidor y seguido
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"seguidor@example.com"
,
"nombreUsuario"
,
"seguidor"
,
"contrasenia"
,
"clave123"
),
Void
.
class
);
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"seguido@example.com"
,
"nombreUsuario"
,
"seguido"
,
"contrasenia"
,
"clave456"
),
Void
.
class
);
// Inicio de sesión del seguidor
var
authResponse
=
restTemplate
.
postForEntity
(
"/usuarios/seguidor@example.com"
,
Map
.
of
(
"clave"
,
"clave123"
),
DTOLoginRespuesta
.
class
);
assertThat
(
authResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
String
token
=
authResponse
.
getBody
().
getToken
();
// Cabeceras con token y nombreUsuario
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setBearerAuth
(
token
);
headers
.
set
(
"nombreUsuario"
,
"seguidor"
);
HttpEntity
<
Void
>
request
=
new
HttpEntity
<>(
headers
);
// Seguir al usuario
var
seguirResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguido"
,
HttpMethod
.
POST
,
request
,
Void
.
class
);
assertThat
(
seguirResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
// Obtener seguidos del usuario seguidor
ResponseEntity
<
DTOUsuario
[]>
seguidosResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguidos/seguidor"
,
HttpMethod
.
GET
,
request
,
DTOUsuario
[].
class
);
assertThat
(
seguidosResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
assertThat
(
seguidosResponse
.
getBody
()).
isNotNull
();
assertThat
(
seguidosResponse
.
getBody
().
length
).
isEqualTo
(
1
);
assertThat
(
seguidosResponse
.
getBody
()[
0
].
getNombreUsuario
()).
isEqualTo
(
"seguido"
);
// Registro de un usuario que no sigue a nadie
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"nuevo@example.com"
,
"nombreUsuario"
,
"nuevo"
,
"contrasenia"
,
"clave789"
),
Void
.
class
);
// Inicio de sesión para "nuevo"
var
nuevoLogin
=
restTemplate
.
postForEntity
(
"/usuarios/nuevo@example.com"
,
Map
.
of
(
"clave"
,
"clave789"
),
DTOLoginRespuesta
.
class
);
String
nuevoToken
=
nuevoLogin
.
getBody
().
getToken
();
HttpHeaders
nuevoHeaders
=
new
HttpHeaders
();
nuevoHeaders
.
setBearerAuth
(
nuevoToken
);
HttpEntity
<
Void
>
nuevoRequest
=
new
HttpEntity
<>(
nuevoHeaders
);
// El usuario "nuevo" no sigue a nadie
var
vacioResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguidos/nuevo"
,
HttpMethod
.
GET
,
nuevoRequest
,
DTOUsuario
[].
class
);
assertThat
(
vacioResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
assertThat
(
vacioResponse
.
getBody
()).
isEmpty
();
// Intento acceder a los seguidos de un usuario inexistente
var
inexistenteResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguidos/inexistente"
,
HttpMethod
.
GET
,
request
,
Void
.
class
);
assertThat
(
inexistenteResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
NOT_FOUND
);
}
@Test
@DirtiesContext
void
testObtenerSeguidores
()
{
// Registro de dos usuarios: seguidor y seguido
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"seguidor@example.com"
,
"nombreUsuario"
,
"seguidor"
,
"contrasenia"
,
"clave123"
),
Void
.
class
);
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"seguido@example.com"
,
"nombreUsuario"
,
"seguido"
,
"contrasenia"
,
"clave456"
),
Void
.
class
);
// Inicio de sesión con el seguidor
var
authResponse
=
restTemplate
.
postForEntity
(
"/usuarios/seguidor@example.com"
,
Map
.
of
(
"clave"
,
"clave123"
),
DTOLoginRespuesta
.
class
);
assertThat
(
authResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
String
token
=
authResponse
.
getBody
().
getToken
();
// Cabeceras con token y nombreUsuario
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setBearerAuth
(
token
);
headers
.
set
(
"nombreUsuario"
,
"seguidor"
);
HttpEntity
<
Void
>
request
=
new
HttpEntity
<>(
headers
);
// El seguidor sigue al seguido
var
seguirResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguido"
,
HttpMethod
.
POST
,
request
,
Void
.
class
);
assertThat
(
seguirResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
// Obtener los seguidores de "seguido"
var
seguidoresResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguidores/seguido"
,
HttpMethod
.
GET
,
request
,
DTOUsuario
[].
class
);
assertThat
(
seguidoresResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
assertThat
(
seguidoresResponse
.
getBody
()).
isNotNull
();
assertThat
(
seguidoresResponse
.
getBody
().
length
).
isEqualTo
(
1
);
assertThat
(
seguidoresResponse
.
getBody
()[
0
].
getNombreUsuario
()).
isEqualTo
(
"seguidor"
);
// Usuario que no tiene seguidores
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"nuevo@example.com"
,
"nombreUsuario"
,
"nuevo"
,
"contrasenia"
,
"clave789"
),
Void
.
class
);
// Inicio de sesión de "nuevo"
var
nuevoLogin
=
restTemplate
.
postForEntity
(
"/usuarios/nuevo@example.com"
,
Map
.
of
(
"clave"
,
"clave789"
),
DTOLoginRespuesta
.
class
);
String
nuevoToken
=
nuevoLogin
.
getBody
().
getToken
();
HttpHeaders
nuevoHeaders
=
new
HttpHeaders
();
nuevoHeaders
.
setBearerAuth
(
nuevoToken
);
HttpEntity
<
Void
>
nuevoRequest
=
new
HttpEntity
<>(
nuevoHeaders
);
// Obtener seguidores del usuario "nuevo"
var
vacioResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguidores/nuevo"
,
HttpMethod
.
GET
,
nuevoRequest
,
DTOUsuario
[].
class
);
assertThat
(
vacioResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
assertThat
(
vacioResponse
.
getBody
()).
isEmpty
();
// Usuario inexistente
var
inexistenteResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguidores/inexistente"
,
HttpMethod
.
GET
,
request
,
Void
.
class
);
assertThat
(
inexistenteResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
NOT_FOUND
);
}
@Test
@DirtiesContext
void
testEstaSiguiendo
()
{
// Registro de dos usuarios: seguidor y seguido
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"seguidor@example.com"
,
"nombreUsuario"
,
"seguidor"
,
"contrasenia"
,
"clave123"
),
Void
.
class
);
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"seguido@example.com"
,
"nombreUsuario"
,
"seguido"
,
"contrasenia"
,
"clave456"
),
Void
.
class
);
// Inicio de sesión con el seguidor
var
authResponse
=
restTemplate
.
postForEntity
(
"/usuarios/seguidor@example.com"
,
Map
.
of
(
"clave"
,
"clave123"
),
DTOLoginRespuesta
.
class
);
assertThat
(
authResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
String
token
=
authResponse
.
getBody
().
getToken
();
// Cabeceras con token y nombreUsuario
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setBearerAuth
(
token
);
headers
.
set
(
"nombreUsuario"
,
"seguidor"
);
HttpEntity
<
Void
>
request
=
new
HttpEntity
<>(
headers
);
// Seguidor sigue a seguido
var
seguirResponse
=
restTemplate
.
exchange
(
"/seguimientos/seguido"
,
HttpMethod
.
POST
,
request
,
Void
.
class
);
assertThat
(
seguirResponse
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
// Verifico que seguidor sigue a seguido → true
var
seguirSi
=
restTemplate
.
exchange
(
"/seguimientos/existe?seguidor=seguidor&seguido=seguido"
,
HttpMethod
.
GET
,
request
,
Boolean
.
class
);
assertThat
(
seguirSi
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
assertThat
(
seguirSi
.
getBody
()).
isTrue
();
// Registro de un nuevo usuario que no sigue a nadie
restTemplate
.
postForEntity
(
"/usuarios/"
,
Map
.
of
(
"email"
,
"otro@example.com"
,
"nombreUsuario"
,
"otro"
,
"contrasenia"
,
"clave789"
),
Void
.
class
);
// Inicio de sesión de "otro"
var
otroLogin
=
restTemplate
.
postForEntity
(
"/usuarios/otro@example.com"
,
Map
.
of
(
"clave"
,
"clave789"
),
DTOLoginRespuesta
.
class
);
String
otroToken
=
otroLogin
.
getBody
().
getToken
();
HttpHeaders
otroHeaders
=
new
HttpHeaders
();
otroHeaders
.
setBearerAuth
(
otroToken
);
HttpEntity
<
Void
>
otroRequest
=
new
HttpEntity
<>(
otroHeaders
);
// "otro" no sigue a nadie → false
var
seguirNo
=
restTemplate
.
exchange
(
"/seguimientos/existe?seguidor=otro&seguido=seguido"
,
HttpMethod
.
GET
,
otroRequest
,
Boolean
.
class
);
assertThat
(
seguirNo
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
OK
);
assertThat
(
seguirNo
.
getBody
()).
isFalse
();
// Usuario inexistente → NOT_FOUND
var
inexistente
=
restTemplate
.
exchange
(
"/seguimientos/existe?seguidor=inexistente&seguido=seguido"
,
HttpMethod
.
GET
,
request
,
Void
.
class
);
assertThat
(
inexistente
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
NOT_FOUND
);
}
}
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