Commit 0a1bfe2d by Rubén Ramírez

feat: [TestRecursosController]: Implementadas los tests funciones para las…

feat: [TestRecursosController]: Implementadas los tests funciones para las búsquedas por id y borrar el recurso en el controlador
parent 1305bf86
......@@ -234,6 +234,101 @@ public class TestRecursosController {
assertThat(respuestaNoEncontrada.getBody()).contains("[]");
}
@Test
@DirtiesContext
void testBuscarRecursoPorId() {
// 1️⃣ Crear usuario admin
restTemplate.postForEntity("/usuarios/", Map.of(
"email", "admin@example.com",
"nombreUsuario", "admin",
"contrasenia", "adminpassword"
), Void.class);
// 2️⃣ Autenticar usuario
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();
// 3️⃣ Crear recurso en la BD con autenticación
Recurso recurso = new Recurso("Titulo Buscado", "Descripción", LocalDate.now(), "Autor");
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);
// 4️⃣ Buscar el recurso por título para obtener su ID
ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.getForEntity(
"/recursos/titulo/Titulo Buscado", DTORecurso[].class
);
assertThat(respuestaBusqueda.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaBusqueda.getBody()).isNotEmpty();
Long recursoId = respuestaBusqueda.getBody()[0].getId();
// 5️⃣ Prueba positiva: Buscar por ID existente
ResponseEntity<DTORecurso> respuestaPorId = restTemplate.getForEntity(
"/recursos/" + recursoId, DTORecurso.class
);
assertThat(respuestaPorId.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaPorId.getBody()).isNotNull();
assertThat(respuestaPorId.getBody().getId()).isEqualTo(recursoId);
// 6️⃣ Prueba negativa: Buscar un ID inexistente
ResponseEntity<DTORecurso> respuestaNoEncontrada = restTemplate.getForEntity(
"/recursos/9999", DTORecurso.class
);
assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
}
@Test
@DirtiesContext
void testBorrarRecurso() {
// 1️⃣ Crear usuario admin en la base de datos con el rol correcto
restTemplate.postForEntity("/usuarios/", Map.of(
"email", "admin@example.com",
"nombreUsuario", "admin",
"contrasenia", "adminpassword"
), Void.class);
// 2️⃣ Autenticar usuario admin para obtener su token
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();
// 3️⃣ Crear un recurso
Recurso recurso = new Recurso("Recurso para borrar", "Descripción", LocalDate.now(), "Autor");
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", token);
HttpEntity<Recurso> request = new HttpEntity<>(recurso, headers);
var respuestaAdmin = restTemplate.exchange("/recursos/", HttpMethod.POST, request, Void.class);
assertThat(respuestaAdmin.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// 4️⃣ Obtener el recurso recién creado
ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.getForEntity(
"/recursos/titulo/Recurso para borrar", DTORecurso[].class
);
assertThat(respuestaBusqueda.getStatusCode()).isEqualTo(HttpStatus.OK);
Long recursoId = respuestaBusqueda.getBody()[0].getId();
// 5️⃣ Intentar borrar el recurso con autenticación
HttpHeaders authHeaders = new HttpHeaders();
authHeaders.set("Authorization", token);
HttpEntity<Void> deleteRequest = new HttpEntity<>(authHeaders);
var deleteResponse = restTemplate.exchange("/recursos/" + recursoId, HttpMethod.DELETE, deleteRequest, Void.class);
assertThat(deleteResponse.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT);
// 6️⃣ Intentar borrar el mismo recurso otra vez, debe dar 404
ResponseEntity<Void> deleteAgainResponse = restTemplate.exchange(
"/recursos/" + recursoId, HttpMethod.DELETE, deleteRequest, Void.class
);
assertThat(deleteAgainResponse.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
}
}
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