Commit 4da14105 by Rubén Ramírez

feat: [BibliotecaPersonalController]: Creadas funciones en el controlador con su test

parent 25ef7c1b
......@@ -50,16 +50,24 @@ public class BibliotecaPersonalController {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}
boolean yaExiste = servicioBibliotecaPersonal.listarPorCategoria(biblioteca.getId(), dtoRecursoEnBiblioteca.getCategoria())
.stream()
.anyMatch(bpr -> bpr.getRecurso().getId().equals(recursoId));
if (yaExiste) {
return ResponseEntity.status(HttpStatus.CONFLICT).build();
}
servicioBibliotecaPersonal.anadirRecursoBiblioteca(biblioteca, recurso, dtoRecursoEnBiblioteca.getCategoria());
return ResponseEntity.status(HttpStatus.CREATED).build();
} catch (RecursoNoExiste e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
@GetMapping("/{usuarioId}/recursos/categoria/{categoria}")
public ResponseEntity<List<DTORecursoEnBiblioteca>> listarRecursosPorCategoria(@PathVariable Long usuarioId, @PathVariable Categoria categoria) {
try {
......@@ -89,7 +97,7 @@ public class BibliotecaPersonalController {
}
servicioBibliotecaPersonal.eliminarRecurso(biblioteca.getId(), recursoId);
return ResponseEntity.status(HttpStatus.OK).body("Recurso eliminado correctamente");
return ResponseEntity.status(HttpStatus.OK).build();
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
......@@ -107,7 +115,7 @@ public class BibliotecaPersonalController {
servicioBibliotecaPersonal.modificarCategoria(biblioteca.getId(), recursoId, dtoRecurso.getCategoria());
return ResponseEntity.status(HttpStatus.OK).build();
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error interno");
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
......
......@@ -28,6 +28,7 @@ public class ServicioSeguridad {
.httpBasic(httpBasic -> httpBasic.realmName("mangaffinity"))
.authorizeHttpRequests(request -> request
.requestMatchers(HttpMethod.POST, "/usuarios/{email}").permitAll()
.requestMatchers(HttpMethod.GET, "/usuarios/email/{email}").permitAll()
.requestMatchers(HttpMethod.POST, "/usuarios/").permitAll()
.requestMatchers(HttpMethod.GET, "/recursos/titulo/**").permitAll()
.requestMatchers(HttpMethod.GET, "/recursos/autor/**").permitAll()
......@@ -40,12 +41,13 @@ public class ServicioSeguridad {
.requestMatchers(HttpMethod.DELETE, "/recursos/{id}").hasAuthority("ROLE_ADMIN")
.requestMatchers(HttpMethod.POST, "/recursos/{id}/capitulos").hasAuthority("ROLE_ADMIN")
.requestMatchers(HttpMethod.GET, "/recursos/{id}/capitulos").permitAll()
.requestMatchers(HttpMethod.GET, "/usuarios/{usuarioId}/biblioteca").permitAll()
// 🔹 Protección de las rutas de la biblioteca (solo usuarios autenticados)
.requestMatchers(HttpMethod.POST, "/biblioteca/{usuarioId}/recursos/{recursoId}/categoria").authenticated()
.requestMatchers(HttpMethod.GET, "/biblioteca/{usuarioId}/recursos/categoria/{categoria}").authenticated()
.requestMatchers(HttpMethod.DELETE, "/biblioteca/{usuarioId}/recursos/{recursoId}").authenticated() // ✅ Nueva regla
.requestMatchers(HttpMethod.PUT, "/biblioteca/{usuarioId}/recursos/{recursoId}/categoria").authenticated() // ✅ Nueva regla
.requestMatchers(HttpMethod.DELETE, "/biblioteca/{usuarioId}/recursos/{recursoId}").authenticated()
.requestMatchers(HttpMethod.PUT, "/biblioteca/{usuarioId}/recursos/{recursoId}/categoria").authenticated()
.anyRequest().authenticated()
)
......
......@@ -20,6 +20,32 @@ import org.springframework.test.context.ActiveProfiles;
import java.time.LocalDate;
import java.util.Map;
import com.ujaen.tfg.mangaffinity.MangAffinityApplication;
import com.ujaen.tfg.mangaffinity.config.JpaTestConfig;
import com.ujaen.tfg.mangaffinity.entidades.Categoria;
import com.ujaen.tfg.mangaffinity.entidades.Recurso;
import com.ujaen.tfg.mangaffinity.rest.DTO.DTOLoginRespuesta;
import com.ujaen.tfg.mangaffinity.rest.DTO.DTORecurso;
import com.ujaen.tfg.mangaffinity.rest.DTO.DTORecursoEnBiblioteca;
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.boot.test.web.server.LocalServerPort;
import org.springframework.http.*;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
import java.time.LocalDate;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest(classes = {MangAffinityApplication.class, JpaTestConfig.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
......@@ -36,21 +62,21 @@ public class TestBibliotecaPersonalController {
@Test
@DirtiesContext
void testAnadirRecursoBiblioteca() {
// 🔹 Registrar administrador
// Registro un administrador
restTemplate.postForEntity("/usuarios/", Map.of(
"email", "admin@example.com",
"nombreUsuario", "admin",
"contrasenia", "adminpassword"
), Void.class);
// 🔹 Iniciar sesión del administrador
// Inicio sesión con el administrador
var authAdmin = restTemplate.postForEntity("/usuarios/admin@example.com", Map.of(
"clave", "adminpassword"
), DTOLoginRespuesta.class);
assertThat(authAdmin.getStatusCode()).isEqualTo(HttpStatus.OK);
String tokenAdmin = "Bearer " + authAdmin.getBody().getToken();
// 🔹 Registrar usuario normal
// Registro un usuario normal
ResponseEntity<Void> respuestaUsuario = restTemplate.postForEntity("/usuarios/", Map.of(
"email", "usuario@example.com",
"nombreUsuario", "usuario",
......@@ -58,14 +84,13 @@ public class TestBibliotecaPersonalController {
), Void.class);
assertThat(respuestaUsuario.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// 🔹 Iniciar sesión del usuario
// Inicio sesión con el usuario
var authUser = restTemplate.postForEntity("/usuarios/usuario@example.com", Map.of(
"clave", "password"
), DTOLoginRespuesta.class);
assertThat(authUser.getStatusCode()).isEqualTo(HttpStatus.OK);
String tokenUser = "Bearer " + authUser.getBody().getToken();
// 🔹 Buscar el usuario creado para obtener su ID
ResponseEntity<Long> respuestaUsuarioId = restTemplate.exchange(
"/usuarios/email/{email}", HttpMethod.GET, null, Long.class, "usuario@example.com"
);
......@@ -73,7 +98,7 @@ public class TestBibliotecaPersonalController {
Long usuarioId = respuestaUsuarioId.getBody();
assertThat(usuarioId).isNotNull();
// 🔹 Crear un recurso con el administrador
// Creo un recurso con el administrador
Recurso nuevoRecurso = new Recurso("Titulo Prueba", "Descripción de prueba", LocalDate.now(), "Autor Prueba");
HttpHeaders headersAdmin = new HttpHeaders();
headersAdmin.set("Authorization", tokenAdmin);
......@@ -83,18 +108,16 @@ public class TestBibliotecaPersonalController {
var respuestaRecurso = restTemplate.exchange("/recursos/", HttpMethod.POST, requestAdmin, Void.class);
assertThat(respuestaRecurso.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// 🔹 Buscar el recurso creado para obtener su ID
ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.exchange(
"/recursos/titulo/{titulo}", HttpMethod.GET, null, DTORecurso[].class, "Titulo Prueba"
);
assertThat(respuestaBusqueda.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaBusqueda.getBody()).isNotEmpty();
Long recursoId = respuestaBusqueda.getBody()[0].getId();
assertThat(recursoId).isNotNull();
// 🔹 Usuario añade el recurso a su biblioteca
DTORecursoEnBiblioteca dtoRecurso = new DTORecursoEnBiblioteca(null, "Titulo Prueba", Categoria.AL_DIA);
// Añado con el usuario el recurso a su biblioteca
DTORecursoEnBiblioteca dtoRecurso = new DTORecursoEnBiblioteca(recursoId, "Titulo Prueba", Categoria.AL_DIA);
HttpHeaders headersUser = new HttpHeaders();
headersUser.set("Authorization", tokenUser);
headersUser.setContentType(MediaType.APPLICATION_JSON);
......@@ -106,217 +129,273 @@ public class TestBibliotecaPersonalController {
HttpMethod.POST, bibliotecaRequest, Void.class, usuarioId, recursoId
);
// 🔹 Verificar que se añadió correctamente
assertThat(respuestaBiblioteca.getStatusCode()).isEqualTo(HttpStatus.CREATED);
}
@Test
@DirtiesContext
void testListarRecursosPorCategoria() {
// 🔹 Registrar un administrador
// Registro un administrador
restTemplate.postForEntity("/usuarios/", Map.of(
"email", "admin@example.com",
"nombreUsuario", "admin",
"contrasenia", "adminpassword"
), Void.class);
// 🔹 Iniciar sesión del administrador
// Inicio sesión del administrador
var authAdmin = restTemplate.postForEntity("/usuarios/admin@example.com", Map.of(
"clave", "adminpassword"
), DTOLoginRespuesta.class);
assertThat(authAdmin.getStatusCode()).isEqualTo(HttpStatus.OK);
String tokenAdmin = "Bearer " + authAdmin.getBody().getToken();
// 🔹 Registrar un usuario normal
// Registro un usuario normal
restTemplate.postForEntity("/usuarios/", Map.of(
"email", "usuario@example.com",
"nombreUsuario", "usuario",
"contrasenia", "password"
), Void.class);
// 🔹 Iniciar sesión del usuario
// Inicio sesión del usuario
var authUser = restTemplate.postForEntity("/usuarios/usuario@example.com", Map.of(
"clave", "password"
), DTOLoginRespuesta.class);
assertThat(authUser.getStatusCode()).isEqualTo(HttpStatus.OK);
String tokenUser = "Bearer " + authUser.getBody().getToken();
// 🔹 Crear el recurso con el administrador
// Creo el recurso con el administrador
HttpHeaders headersAdmin = new HttpHeaders();
headersAdmin.set("Authorization", tokenAdmin);
headersAdmin.setContentType(MediaType.APPLICATION_JSON);
Recurso recurso = new Recurso("Titulo Prueba", "Descripción de prueba", LocalDate.now(), "Autor Prueba");
HttpEntity<Recurso> requestAdmin = new HttpEntity<>(recurso, headersAdmin);
restTemplate.exchange("/recursos/", HttpMethod.POST, requestAdmin, Void.class);
ResponseEntity<Void> respuestaRecurso = restTemplate.exchange("/recursos/", HttpMethod.POST, requestAdmin, Void.class);
assertThat(respuestaRecurso.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// 🔹 Buscar el recurso creado para obtener su ID
ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.exchange(
"/recursos/titulo/{titulo}", HttpMethod.GET, null, DTORecurso[].class, "Titulo Prueba"
);
// ✅ Verificar que el recurso fue encontrado antes de obtener su ID
assertThat(respuestaBusqueda.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaBusqueda.getBody()).isNotNull().isNotEmpty();
Long recursoId = respuestaBusqueda.getBody()[0].getId();
assertThat(recursoId).isNotNull();
// 🔹 Usuario añade el recurso a su biblioteca
ResponseEntity<Long> respuestaUsuarioId = restTemplate.exchange(
"/usuarios/email/{email}", HttpMethod.GET, null, Long.class, "usuario@example.com"
);
assertThat(respuestaUsuarioId.getStatusCode()).isEqualTo(HttpStatus.OK);
Long usuarioId = respuestaUsuarioId.getBody();
assertThat(usuarioId).isNotNull();
// Añado con el usuario el recurso a su biblioteca
HttpHeaders headersUser = new HttpHeaders();
headersUser.set("Authorization", tokenUser);
headersUser.setContentType(MediaType.APPLICATION_JSON);
DTORecursoEnBiblioteca dtoRecurso = new DTORecursoEnBiblioteca(null, "Titulo Prueba", Categoria.AL_DIA);
HttpEntity<DTORecursoEnBiblioteca> bibliotecaRequest = new HttpEntity<>(dtoRecurso, headersUser);
ResponseEntity<Void> respuestaAñadir = restTemplate.exchange(
"/biblioteca/{usuarioId}/recursos/{recursoId}/categoria",
HttpMethod.POST, bibliotecaRequest, Void.class, 1, recursoId
HttpMethod.POST, bibliotecaRequest, Void.class, usuarioId, recursoId
);
assertThat(respuestaAñadir.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// 🔹 Listar los recursos de la biblioteca personal filtrados por categoría
// Listo los recursos de la biblioteca personal filtrados por categoría
ResponseEntity<DTORecursoEnBiblioteca[]> respuestaLista = restTemplate.exchange(
"/biblioteca/{usuarioId}/recursos/categoria/{categoria}",
HttpMethod.GET, new HttpEntity<>(headersUser), DTORecursoEnBiblioteca[].class, 1, Categoria.AL_DIA.name()
HttpMethod.GET, new HttpEntity<>(headersUser), DTORecursoEnBiblioteca[].class, usuarioId, Categoria.AL_DIA.name()
);
// 🔹 Validaciones del test
// Validaciones
assertThat(respuestaLista.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaLista.getBody()).isNotNull().isNotEmpty();
assertThat(respuestaLista.getBody()[0].getTitulo()).isEqualTo("Titulo Prueba");
assertThat(respuestaLista.getBody()[0].getCategoria()).isEqualTo(Categoria.AL_DIA);
}
@Test
@DirtiesContext
void testEliminarRecursoDeBiblioteca() {
// Registrar usuario
// 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 authAdmin = restTemplate.postForEntity("/usuarios/admin@example.com", Map.of(
"clave", "adminpassword"
), DTOLoginRespuesta.class);
assertThat(authAdmin.getStatusCode()).isEqualTo(HttpStatus.OK);
String tokenAdmin = "Bearer " + authAdmin.getBody().getToken();
// Registro a un usuario normal
restTemplate.postForEntity("/usuarios/", Map.of(
"email", "usuario@example.com",
"nombreUsuario", "usuario",
"contrasenia", "password"
), Void.class);
// Iniciar sesión del usuario
// Inicio sesión al usuario
var authUser = restTemplate.postForEntity("/usuarios/usuario@example.com", Map.of(
"clave", "password"
), DTOLoginRespuesta.class);
assertThat(authUser.getStatusCode()).isEqualTo(HttpStatus.OK);
String tokenUser = "Bearer " + authUser.getBody().getToken();
// Crear un recurso
ResponseEntity<Long> respuestaUsuarioId = restTemplate.exchange(
"/usuarios/email/{email}", HttpMethod.GET, null, Long.class, "usuario@example.com"
);
assertThat(respuestaUsuarioId.getStatusCode()).isEqualTo(HttpStatus.OK);
Long usuarioId = respuestaUsuarioId.getBody();
assertThat(usuarioId).isNotNull();
// Creo un recurso con el administrador
Recurso recurso = new Recurso("Manga de prueba", "Descripción", LocalDate.now(), "Autor");
HttpHeaders headersUser = new HttpHeaders();
headersUser.set("Authorization", tokenUser);
HttpEntity<Recurso> requestRecurso = new HttpEntity<>(recurso, headersUser);
HttpHeaders headersAdmin = new HttpHeaders();
headersAdmin.set("Authorization", tokenAdmin);
headersAdmin.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Recurso> requestRecurso = new HttpEntity<>(recurso, headersAdmin);
var respuestaRecurso = restTemplate.exchange("/recursos/", HttpMethod.POST, requestRecurso, Void.class);
assertThat(respuestaRecurso.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// Buscar el recurso creado para obtener su ID
ResponseEntity<Recurso[]> respuestaBusqueda = restTemplate.getForEntity(
"/recursos/titulo/Manga de prueba", Recurso[].class
ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.exchange(
"/recursos/titulo/{titulo}", HttpMethod.GET, null, DTORecurso[].class, "Manga de prueba"
);
assertThat(respuestaBusqueda.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaBusqueda.getBody()).isNotEmpty();
Long recursoId = respuestaBusqueda.getBody()[0].getId();
assertThat(recursoId).isNotNull();
// Añadir el recurso a la biblioteca
// Añado el recurso a la biblioteca del usuario
HttpHeaders headersUser = new HttpHeaders();
headersUser.set("Authorization", tokenUser);
headersUser.setContentType(MediaType.APPLICATION_JSON);
DTORecursoEnBiblioteca dtoRecurso = new DTORecursoEnBiblioteca(recursoId, "Manga de prueba", Categoria.AL_DIA);
HttpEntity<DTORecursoEnBiblioteca> bibliotecaRequest = new HttpEntity<>(dtoRecurso, headersUser);
ResponseEntity<Void> respuestaAñadir = restTemplate.exchange(
"/biblioteca/{usuarioId}/recursos/{recursoId}/categoria",
HttpMethod.POST, bibliotecaRequest, Void.class, 1, recursoId
HttpMethod.POST, bibliotecaRequest, Void.class, usuarioId, recursoId
);
assertThat(respuestaAñadir.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// Eliminar el recurso de la biblioteca
ResponseEntity<String> respuestaEliminar = restTemplate.exchange(
// Elimino el recurso de la biblioteca
ResponseEntity<Void> respuestaEliminar = restTemplate.exchange(
"/biblioteca/{usuarioId}/recursos/{recursoId}",
HttpMethod.DELETE, new HttpEntity<>(headersUser), String.class, 1, recursoId
HttpMethod.DELETE, new HttpEntity<>(headersUser), Void.class, usuarioId, recursoId
);
assertThat(respuestaEliminar.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaEliminar.getBody()).isEqualTo("Recurso eliminado correctamente");
// Verificar que el recurso ya no está en la biblioteca
// Verifico que el recurso ya no está en la biblioteca
ResponseEntity<DTORecursoEnBiblioteca[]> respuestaLista = restTemplate.exchange(
"/biblioteca/{usuarioId}/recursos/categoria/{categoria}",
HttpMethod.GET, new HttpEntity<>(headersUser), DTORecursoEnBiblioteca[].class, 1, Categoria.AL_DIA.name()
HttpMethod.GET, new HttpEntity<>(headersUser), DTORecursoEnBiblioteca[].class, usuarioId, Categoria.AL_DIA.name()
);
assertThat(respuestaLista.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaLista.getBody()).isNotNull();
assertThat(respuestaLista.getBody()).isEmpty();
}
@Test
@DirtiesContext
void testModificarCategoriaDeRecurso() {
// Registrar usuario
// 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 authAdmin = restTemplate.postForEntity("/usuarios/admin@example.com", Map.of(
"clave", "adminpassword"
), DTOLoginRespuesta.class);
assertThat(authAdmin.getStatusCode()).isEqualTo(HttpStatus.OK);
String tokenAdmin = "Bearer " + authAdmin.getBody().getToken();
// Registro un usuario normal
restTemplate.postForEntity("/usuarios/", Map.of(
"email", "usuario@example.com",
"nombreUsuario", "usuario",
"contrasenia", "password"
), Void.class);
// Iniciar sesión del usuario
// Inicio sesión con el usuario
var authUser = restTemplate.postForEntity("/usuarios/usuario@example.com", Map.of(
"clave", "password"
), DTOLoginRespuesta.class);
assertThat(authUser.getStatusCode()).isEqualTo(HttpStatus.OK);
String tokenUser = "Bearer " + authUser.getBody().getToken();
// Crear un recurso
ResponseEntity<Long> respuestaUsuarioId = restTemplate.exchange(
"/usuarios/email/{email}", HttpMethod.GET, null, Long.class, "usuario@example.com"
);
assertThat(respuestaUsuarioId.getStatusCode()).isEqualTo(HttpStatus.OK);
Long usuarioId = respuestaUsuarioId.getBody();
assertThat(usuarioId).isNotNull();
// Creo un recurso con el administrador
Recurso recurso = new Recurso("Manga de prueba", "Descripción", LocalDate.now(), "Autor");
HttpHeaders headersUser = new HttpHeaders();
headersUser.set("Authorization", tokenUser);
HttpEntity<Recurso> requestRecurso = new HttpEntity<>(recurso, headersUser);
HttpHeaders headersAdmin = new HttpHeaders();
headersAdmin.set("Authorization", tokenAdmin);
headersAdmin.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Recurso> requestRecurso = new HttpEntity<>(recurso, headersAdmin);
var respuestaRecurso = restTemplate.exchange("/recursos/", HttpMethod.POST, requestRecurso, Void.class);
assertThat(respuestaRecurso.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// Buscar el recurso creado para obtener su ID
ResponseEntity<Recurso[]> respuestaBusqueda = restTemplate.getForEntity(
"/recursos/titulo/Manga de prueba", Recurso[].class
ResponseEntity<DTORecurso[]> respuestaBusqueda = restTemplate.exchange(
"/recursos/titulo/{titulo}", HttpMethod.GET, null, DTORecurso[].class, "Manga de prueba"
);
assertThat(respuestaBusqueda.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaBusqueda.getBody()).isNotEmpty();
Long recursoId = respuestaBusqueda.getBody()[0].getId();
assertThat(recursoId).isNotNull();
// Añadir el recurso a la biblioteca con una categoría inicial
// Añado el recurso a la biblioteca del usuario con categoría inicial
HttpHeaders headersUser = new HttpHeaders();
headersUser.set("Authorization", tokenUser);
headersUser.setContentType(MediaType.APPLICATION_JSON);
DTORecursoEnBiblioteca dtoRecurso = new DTORecursoEnBiblioteca(recursoId, "Manga de prueba", Categoria.AL_DIA);
HttpEntity<DTORecursoEnBiblioteca> bibliotecaRequest = new HttpEntity<>(dtoRecurso, headersUser);
ResponseEntity<Void> respuestaAñadir = restTemplate.exchange(
"/biblioteca/{usuarioId}/recursos/{recursoId}/categoria",
HttpMethod.POST, bibliotecaRequest, Void.class, 1, recursoId
HttpMethod.POST, bibliotecaRequest, Void.class, usuarioId, recursoId
);
assertThat(respuestaAñadir.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// Modificar la categoría del recurso en la biblioteca
// Modifico la categoría del recurso en la biblioteca
DTORecursoEnBiblioteca dtoModificado = new DTORecursoEnBiblioteca(recursoId, "Manga de prueba", Categoria.COMPLETADO);
HttpEntity<DTORecursoEnBiblioteca> categoriaRequest = new HttpEntity<>(dtoModificado, headersUser);
ResponseEntity<String> respuestaModificar = restTemplate.exchange(
ResponseEntity<Void> respuestaModificar = restTemplate.exchange(
"/biblioteca/{usuarioId}/recursos/{recursoId}/categoria",
HttpMethod.PUT, categoriaRequest, String.class, 1, recursoId
HttpMethod.PUT, categoriaRequest, Void.class, usuarioId, recursoId
);
assertThat(respuestaModificar.getStatusCode()).isEqualTo(HttpStatus.OK);
// Verificar que la categoría ha cambiado
// Verificp que la categoría ha cambiado
ResponseEntity<DTORecursoEnBiblioteca[]> respuestaLista = restTemplate.exchange(
"/biblioteca/{usuarioId}/recursos/categoria/{categoria}",
HttpMethod.GET, new HttpEntity<>(headersUser), DTORecursoEnBiblioteca[].class, 1, Categoria.COMPLETADO.name()
HttpMethod.GET, new HttpEntity<>(headersUser), DTORecursoEnBiblioteca[].class, usuarioId, Categoria.COMPLETADO.name()
);
assertThat(respuestaLista.getBody()).isNotEmpty();
assertThat(respuestaLista.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaLista.getBody()).isNotNull().isNotEmpty();
assertThat(respuestaLista.getBody()[0].getCategoria()).isEqualTo(Categoria.COMPLETADO);
}
}
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