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 {
@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();
}
}
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