Commit 4594c7b2 by Rubén Ramírez

feat: [TestRecursosControlador]: Añadido el test para obtener capítulos en el controlador

parent 8da4b779
...@@ -465,21 +465,21 @@ public class TestRecursosController { ...@@ -465,21 +465,21 @@ public class TestRecursosController {
@Test @Test
@DirtiesContext @DirtiesContext
void testAnadirCapitulo() { void testAnadirCapitulo() {
// 🔹 Registro de un administrador // Registro de un administrador
restTemplate.postForEntity("/usuarios/", Map.of( restTemplate.postForEntity("/usuarios/", Map.of(
"email", "admin@example.com", "email", "admin@example.com",
"nombreUsuario", "admin", "nombreUsuario", "admin",
"contrasenia", "adminpassword" "contrasenia", "adminpassword"
), Void.class); ), Void.class);
// 🔹 Inicio sesión con el administrador // Inicio sesión con el administrador
var authResponse = restTemplate.postForEntity("/usuarios/admin@example.com", Map.of( var authResponse = restTemplate.postForEntity("/usuarios/admin@example.com", Map.of(
"clave", "adminpassword" "clave", "adminpassword"
), DTOLoginRespuesta.class); ), DTOLoginRespuesta.class);
assertThat(authResponse.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(authResponse.getStatusCode()).isEqualTo(HttpStatus.OK);
String token = "Bearer " + authResponse.getBody().getToken(); 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"); Recurso recurso = new Recurso("Manga Ejemplo", "Sinopsis", LocalDate.now(), "Autor X");
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
...@@ -488,7 +488,6 @@ public class TestRecursosController { ...@@ -488,7 +488,6 @@ public class TestRecursosController {
var respuestaAdmin = restTemplate.exchange("/recursos/", HttpMethod.POST, request, Void.class); var respuestaAdmin = restTemplate.exchange("/recursos/", HttpMethod.POST, request, Void.class);
assertThat(respuestaAdmin.getStatusCode()).isEqualTo(HttpStatus.CREATED); assertThat(respuestaAdmin.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// 🔹 Obtener el ID del recurso recién creado
ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.exchange( ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.exchange(
"/recursos/titulo/{titulo}", HttpMethod.GET, null, DTORecurso[].class, "Manga Ejemplo" "/recursos/titulo/{titulo}", HttpMethod.GET, null, DTORecurso[].class, "Manga Ejemplo"
); );
...@@ -496,7 +495,7 @@ public class TestRecursosController { ...@@ -496,7 +495,7 @@ public class TestRecursosController {
Long recursoId = respuestaBusqueda.getBody()[0].getId(); Long recursoId = respuestaBusqueda.getBody()[0].getId();
assertThat(recursoId).isNotNull(); 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( DTOCapitulo nuevoCapitulo = new DTOCapitulo(
null, 1, "Capítulo 1", TipoRecurso.MANGA, null, 1, "Capítulo 1", TipoRecurso.MANGA,
List.of(new DTOFuenteCapitulo("Crunchyroll", "https://crunchyroll.com/cap1")) List.of(new DTOFuenteCapitulo("Crunchyroll", "https://crunchyroll.com/cap1"))
...@@ -508,6 +507,101 @@ public class TestRecursosController { ...@@ -508,6 +507,101 @@ public class TestRecursosController {
); );
assertThat(respuestaCapitulo.getStatusCode()).isEqualTo(HttpStatus.CREATED); 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();
} }
} }
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