Commit 1ca09ad6 by Rubén Ramírez

feat: [RecursosController]:Corregidos trampeos en los test y añadidos casos no…

feat: [RecursosController]:Corregidos trampeos en los test y añadidos casos no contemplados anteriormente
parent 4113fb8d
...@@ -36,26 +36,26 @@ public class TestRecursosController { ...@@ -36,26 +36,26 @@ public class TestRecursosController {
@Test @Test
@DirtiesContext @DirtiesContext
void testCrearRecurso() { void testCrearRecurso() {
// Crear usuario admin en la base de datos con el rol correcto // Regisitro 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);
// Autenticamos al usuario admin para obtener su token // Inicio de sesión del admin
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();
// Intentamos crear un recurso sin autenticación (debe fallar) // Caso 1: Intento crear un recurso sin autenticación
Recurso nuevoRecurso = new Recurso("Titulo Prueba", "Descripción de prueba", LocalDate.now(), "Autor Prueba"); Recurso nuevoRecurso = new Recurso("Titulo Prueba", "Descripción de prueba", LocalDate.now(), "Autor Prueba");
var respuestaNoAutenticado = restTemplate.postForEntity("/recursos/", nuevoRecurso, Void.class); var respuestaNoAutenticado = restTemplate.postForEntity("/recursos/", nuevoRecurso, Void.class);
assertThat(respuestaNoAutenticado.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED); assertThat(respuestaNoAutenticado.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED);
// Creamos el recurso correctamente con autenticación de admin // Caso 2: Intento crear un recurso correctamente con autenticación de admin
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", token); headers.set("Authorization", token);
HttpEntity<Recurso> request = new HttpEntity<>(nuevoRecurso, headers); HttpEntity<Recurso> request = new HttpEntity<>(nuevoRecurso, headers);
...@@ -66,21 +66,21 @@ public class TestRecursosController { ...@@ -66,21 +66,21 @@ public class TestRecursosController {
@Test @Test
@DirtiesContext @DirtiesContext
void testBuscarPorTitulo() { void testBuscarPorTitulo() {
// 1️⃣ Crear usuario admin // 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);
// 2️⃣ Autenticar usuario // 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();
// 3️⃣ Crear recurso en la BD con autenticación // Creo un recurso en la BD con autenticación
Recurso recurso = new Recurso("One Piece", "Manga de aventuras", LocalDate.of(1997, 7, 22), "Eiichiro Oda"); Recurso recurso = new Recurso("One Piece", "Manga de aventuras", LocalDate.of(1997, 7, 22), "Eiichiro Oda");
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
...@@ -89,18 +89,18 @@ public class TestRecursosController { ...@@ -89,18 +89,18 @@ 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);
// 4️⃣ Prueba positiva: Buscar por título que SÍ existe // Caso 1: Busco por título que si encontraremos
ResponseEntity<DTORecurso[]> respuesta = restTemplate.getForEntity( ResponseEntity<DTORecurso[]> respuesta = restTemplate.exchange(
"/recursos/titulo/One Piece", DTORecurso[].class "/recursos/titulo/{titulo}", HttpMethod.GET, null, DTORecurso[].class, "One Piece"
); );
assertThat(respuesta.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(respuesta.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuesta.getBody()).isNotEmpty(); assertThat(respuesta.getBody()).isNotEmpty();
assertThat(respuesta.getBody()[0].getTitulo()).isEqualTo("One Piece"); assertThat(respuesta.getBody()[0].getTitulo()).isEqualTo("One Piece");
// 5️⃣ Prueba negativa: Buscar por título que NO existe // Caso 2: Busco por título que no encontraremos
ResponseEntity<DTORecurso[]> respuestaNoEncontrada = restTemplate.getForEntity( ResponseEntity<DTORecurso[]> respuestaNoEncontrada = restTemplate.exchange(
"/recursos/titulo/Naruto", DTORecurso[].class "/recursos/titulo/{titulo}", HttpMethod.GET, null, DTORecurso[].class, "Naruto"
); );
assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
...@@ -109,21 +109,21 @@ public class TestRecursosController { ...@@ -109,21 +109,21 @@ public class TestRecursosController {
@Test @Test
@DirtiesContext @DirtiesContext
void testBuscarPorGenero() { void testBuscarPorGenero() {
// 1️⃣ Crear usuario admin // Registro 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);
// 2️⃣ Autenticar usuario // 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();
// 3️⃣ Crear recurso con género ACCIÓN // Creo un recurso con autenticación
Recurso recurso = new Recurso("Dragon Ball", "Manga de peleas", LocalDate.of(1984, 11, 20), "Akira Toriyama"); Recurso recurso = new Recurso("Dragon Ball", "Manga de peleas", LocalDate.of(1984, 11, 20), "Akira Toriyama");
recurso.getGeneros().add(Genero.ACCION); recurso.getGeneros().add(Genero.ACCION);
...@@ -133,78 +133,81 @@ public class TestRecursosController { ...@@ -133,78 +133,81 @@ 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);
// 4️⃣ Prueba positiva: Buscar por género que SÍ existe //Caso 1: Busco por género que si encontraremos
ResponseEntity<DTORecurso[]> respuesta = restTemplate.getForEntity( ResponseEntity<DTORecurso[]> respuesta = restTemplate.exchange(
"/recursos/genero/ACCION", DTORecurso[].class "/recursos/genero/{genero}", HttpMethod.GET, null, DTORecurso[].class, "ACCION"
); );
assertThat(respuesta.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(respuesta.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuesta.getBody()).isNotEmpty(); assertThat(respuesta.getBody()).isNotEmpty();
assertThat(respuesta.getBody()[0].getGeneros()).contains(Genero.ACCION); assertThat(respuesta.getBody()[0].getGeneros()).contains(Genero.ACCION);
// 5️⃣ Prueba negativa: Buscar por género que NO tiene recursos //Caso 2: Busco por género que no encontraremos
ResponseEntity<DTORecurso[]> respuestaNoEncontrada = restTemplate.getForEntity( ResponseEntity<DTORecurso[]> respuestaNoEncontrada = restTemplate.exchange(
"/recursos/genero/ROMANCE", DTORecurso[].class "/recursos/genero/{genero}", HttpMethod.GET, null, DTORecurso[].class, "ROMANCE"
); );
assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.OK); // ✅ Ahora 200 OK assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.OK); // ✅ Ahora 200 OK
assertThat(respuestaNoEncontrada.getBody()).isEmpty(); // ✅ Asegura que devuelve [] assertThat(respuestaNoEncontrada.getBody()).isEmpty(); // ✅ Asegura que devuelve []
} }
@Test @Test
@DirtiesContext @DirtiesContext
void testBuscarPorAutor() { void testBuscarPorAutor() {
// Crear usuario admin en la base de datos con el rol correcto // Creo 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);
// Autenticamos al usuario admin para obtener su token // 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 un recurso con el autor de prueba // Creo un recurso con autenticación
Recurso nuevoRecurso = new Recurso("Titulo Prueba", "Descripción de prueba", LocalDate.now(), "Autor Prueba"); Recurso nuevoRecurso = new Recurso("Titulo Prueba", "Descripción de prueba", LocalDate.now(), "Autor Prueba");
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", token); headers.set("Authorization", token);
HttpEntity<Recurso> request = new HttpEntity<>(nuevoRecurso, headers); HttpEntity<Recurso> request = new HttpEntity<>(nuevoRecurso, headers);
restTemplate.exchange("/recursos/", HttpMethod.POST, request, Void.class); restTemplate.exchange("/recursos/", HttpMethod.POST, request, Void.class);
// Intentamos buscar por autor con autenticación //Caso 1: Busco por autor que si encontraremos
HttpHeaders authHeaders = new HttpHeaders(); ResponseEntity<DTORecurso[]> respuesta = restTemplate.exchange(
authHeaders.set("Authorization", token); "/recursos/autor/{autor}", HttpMethod.GET, null, DTORecurso[].class, "Autor Prueba"
HttpEntity<Void> authRequest = new HttpEntity<>(authHeaders); );
var respuesta = restTemplate.exchange("/recursos/autor/Autor Prueba", HttpMethod.GET, authRequest, DTORecurso[].class);
assertThat(respuesta.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(respuesta.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuesta.getBody()).isNotNull().isNotEmpty(); assertThat(respuesta.getBody()).isNotNull().isNotEmpty();
}
//Caso 1: Busco por autor que no encontraremos
ResponseEntity<DTORecurso[]> respuestaNoEncontrada = restTemplate.exchange(
"/recursos/autor/{autor}", HttpMethod.GET, null, DTORecurso[].class, "Autor Desconocido"
);
assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaNoEncontrada.getBody()).isEmpty();
}
@Test @Test
@DirtiesContext @DirtiesContext
void testBuscarPorRangoDeFechas() { void testBuscarPorRangoDeFechas() {
// Crear usuario admin en la base de datos con el rol correcto // Creo 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);
// Autenticamos al usuario admin para obtener su token // Inicio sesión al 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 recursos con distintas fechas de publicación // Creo varios recursos con distintas fechas
LocalDate fecha1 = LocalDate.of(2023, 1, 1); LocalDate fecha1 = LocalDate.of(2023, 1, 1);
LocalDate fecha2 = LocalDate.of(2023, 6, 15); LocalDate fecha2 = LocalDate.of(2023, 6, 15);
LocalDate fecha3 = LocalDate.of(2024, 1, 10); LocalDate fecha3 = LocalDate.of(2024, 1, 10);
...@@ -220,38 +223,41 @@ public class TestRecursosController { ...@@ -220,38 +223,41 @@ public class TestRecursosController {
restTemplate.exchange("/recursos/", HttpMethod.POST, new HttpEntity<>(recurso2, headers), Void.class); restTemplate.exchange("/recursos/", HttpMethod.POST, new HttpEntity<>(recurso2, headers), Void.class);
restTemplate.exchange("/recursos/", HttpMethod.POST, new HttpEntity<>(recurso3, headers), Void.class); restTemplate.exchange("/recursos/", HttpMethod.POST, new HttpEntity<>(recurso3, headers), Void.class);
// Prueba positiva: Buscar recursos en un rango de fechas donde hay coincidencias //Caso 1: Busco por fecha que si encontraremos
ResponseEntity<DTORecurso[]> respuesta = restTemplate.getForEntity( ResponseEntity<DTORecurso[]> respuesta = restTemplate.exchange(
"/recursos/fecha?inicio=2023-01-01&fin=2023-12-31", DTORecurso[].class); "/recursos/fecha?inicio={inicio}&fin={fin}", HttpMethod.GET, null, DTORecurso[].class, "2023-01-01", "2023-12-31"
);
assertThat(respuesta.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(respuesta.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuesta.getBody()).hasSize(2); assertThat(respuesta.getBody()).isNotNull().hasSize(2);
assertThat(Arrays.stream(respuesta.getBody()).map(DTORecurso::getFechaPublicacion)).containsExactlyInAnyOrder(fecha1, fecha2); assertThat(Arrays.stream(respuesta.getBody()).map(DTORecurso::getFechaPublicacion))
.containsExactlyInAnyOrder(fecha1, fecha2);
// Prueba negativa: Buscar recursos en un rango de fechas sin coincidencias //Caso 2: Busco por fecha que no encontraremos
ResponseEntity<String> respuestaNoEncontrada = restTemplate.getForEntity( ResponseEntity<DTORecurso[]> respuestaNoEncontrada = restTemplate.exchange(
"/recursos/fecha?inicio=2025-01-01&fin=2025-12-31", String.class); "/recursos/fecha?inicio={inicio}&fin={fin}", HttpMethod.GET, null, DTORecurso[].class, "2025-01-01", "2025-12-31"
);
assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaNoEncontrada.getBody()).contains("[]"); assertThat(respuestaNoEncontrada.getBody()).isNotNull().isEmpty();
} }
@Test @Test
@DirtiesContext @DirtiesContext
void testBuscarRecursoPorId() { void testBuscarRecursoPorId() {
// 1️⃣ Crear usuario admin // Crear 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);
// 2️⃣ Autenticar usuario // Inicio sesión al 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();
// 3️⃣ Crear recurso en la BD con autenticación // Creo un recurso con autenticación
Recurso recurso = new Recurso("Titulo Buscado", "Descripción", LocalDate.now(), "Autor"); Recurso recurso = new Recurso("Titulo Buscado", "Descripción", LocalDate.now(), "Autor");
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
...@@ -260,7 +266,7 @@ public class TestRecursosController { ...@@ -260,7 +266,7 @@ public class TestRecursosController {
var respuestaCreacion = restTemplate.exchange("/recursos/", HttpMethod.POST, request, Void.class); var respuestaCreacion = restTemplate.exchange("/recursos/", HttpMethod.POST, request, Void.class);
assertThat(respuestaCreacion.getStatusCode()).isEqualTo(HttpStatus.CREATED); assertThat(respuestaCreacion.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// 4️⃣ Buscar el recurso por título para obtener su ID // Busco el recurso por título para obtener su ID
ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.getForEntity( ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.getForEntity(
"/recursos/titulo/Titulo Buscado", DTORecurso[].class "/recursos/titulo/Titulo Buscado", DTORecurso[].class
); );
...@@ -269,39 +275,40 @@ public class TestRecursosController { ...@@ -269,39 +275,40 @@ public class TestRecursosController {
Long recursoId = respuestaBusqueda.getBody()[0].getId(); Long recursoId = respuestaBusqueda.getBody()[0].getId();
// 5️⃣ Prueba positiva: Buscar por ID existente //Caso 1: Busco por id que si encontraremos
ResponseEntity<DTORecurso> respuestaPorId = restTemplate.getForEntity( ResponseEntity<DTORecurso> respuestaPorId = restTemplate.exchange(
"/recursos/" + recursoId, DTORecurso.class "/recursos/{id}", HttpMethod.GET, null, DTORecurso.class, recursoId
); );
assertThat(respuestaPorId.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(respuestaPorId.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaPorId.getBody()).isNotNull(); assertThat(respuestaPorId.getBody()).isNotNull();
assertThat(respuestaPorId.getBody().getId()).isEqualTo(recursoId); assertThat(respuestaPorId.getBody().getId()).isEqualTo(recursoId);
// 6️⃣ Prueba negativa: Buscar un ID inexistente //Caso 1: Busco por id que no encontraremos
ResponseEntity<DTORecurso> respuestaNoEncontrada = restTemplate.getForEntity( ResponseEntity<Void> respuestaNoEncontrada = restTemplate.exchange(
"/recursos/9999", DTORecurso.class "/recursos/{id}", HttpMethod.GET, null, Void.class, 9999
); );
assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
} }
@Test @Test
@DirtiesContext @DirtiesContext
void testBorrarRecurso() { void testBorrarRecurso() {
// 1️⃣ Crear usuario admin en la base de datos con el rol correcto // Crear un adminsitrador
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);
// 2️⃣ Autenticar usuario admin para obtener su token // Inicio sesión con 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();
// 3️⃣ Crear un recurso // Creo un recurso
Recurso recurso = new Recurso("Recurso para borrar", "Descripción", LocalDate.now(), "Autor"); Recurso recurso = new Recurso("Recurso para borrar", "Descripción", LocalDate.now(), "Autor");
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", token); headers.set("Authorization", token);
...@@ -309,21 +316,27 @@ public class TestRecursosController { ...@@ -309,21 +316,27 @@ 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);
// 4️⃣ Obtener el recurso recién creado // Obtengo el recurso recién creado
ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.getForEntity( ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.getForEntity(
"/recursos/titulo/Recurso para borrar", DTORecurso[].class "/recursos/titulo/Recurso para borrar", DTORecurso[].class
); );
assertThat(respuestaBusqueda.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(respuestaBusqueda.getStatusCode()).isEqualTo(HttpStatus.OK);
Long recursoId = respuestaBusqueda.getBody()[0].getId(); Long recursoId = respuestaBusqueda.getBody()[0].getId();
// 5️⃣ Intentar borrar el recurso con autenticación // 🔹 Caso 1: Intento borrar el recurso sin autenticación
ResponseEntity<Void> deleteUnauthorized = restTemplate.exchange(
"/recursos/" + recursoId, HttpMethod.DELETE, HttpEntity.EMPTY, Void.class
);
assertThat(deleteUnauthorized.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED);
//Caso 2: Intento borrar el recurso con autenticación
HttpHeaders authHeaders = new HttpHeaders(); HttpHeaders authHeaders = new HttpHeaders();
authHeaders.set("Authorization", token); authHeaders.set("Authorization", token);
HttpEntity<Void> deleteRequest = new HttpEntity<>(authHeaders); HttpEntity<Void> deleteRequest = new HttpEntity<>(authHeaders);
var deleteResponse = restTemplate.exchange("/recursos/" + recursoId, HttpMethod.DELETE, deleteRequest, Void.class); var deleteResponse = restTemplate.exchange("/recursos/" + recursoId, HttpMethod.DELETE, deleteRequest, Void.class);
assertThat(deleteResponse.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); assertThat(deleteResponse.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT);
// 6️⃣ Intentar borrar el mismo recurso otra vez, debe dar 404 //Caso 3: Intento borrarlo otra vez
ResponseEntity<Void> deleteAgainResponse = restTemplate.exchange( ResponseEntity<Void> deleteAgainResponse = restTemplate.exchange(
"/recursos/" + recursoId, HttpMethod.DELETE, deleteRequest, Void.class "/recursos/" + recursoId, HttpMethod.DELETE, deleteRequest, Void.class
); );
......
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