Commit fb90ff21 by Antonio Rueda

Testing de los primeros dos servicios del API Rest

parent d0ee0162
......@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
......@@ -47,11 +48,11 @@ public class ControladorReservas {
return ResponseEntity.status(HttpStatus.CONFLICT).build();
}
return ResponseEntity.ok().build();
return ResponseEntity.status(HttpStatus.CREATED).build();
}
@GetMapping("/usuarios/{email}")
public ResponseEntity<DUsuario> loginCliente(@PathVariable String email, @RequestBody String clave) {
public ResponseEntity<DUsuario> loginCliente(@PathVariable String email, @RequestParam String clave) {
try {
Usuario usuario = servicioReservas.login(email, clave).orElseThrow(UsuarioNoRegistrado::new);
return ResponseEntity.ok(mapeador.dto(usuario));
......
package es.ujaen.dae.reservahoteles.rest;
import es.ujaen.dae.reservahoteles.rest.dto.DUsuario;
import jakarta.annotation.PostConstruct;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
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.boot.web.client.RestTemplateBuilder;
import org.springframework.http.HttpStatus;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
/**
*
* @author ajrueda
*/
@SpringBootTest(classes = es.ujaen.dae.reservahoteles.app.ReservaHoteles.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles(profiles = {"test"})
public class TestControladorReservas {
@LocalServerPort
int localPort;
TestRestTemplate restTemplate;
/**
* Crear un TestRestTemplate para las pruebas
*/
@PostConstruct
void crearRestTemplateBuilder() {
var restTemplateBuilder = new RestTemplateBuilder()
.rootUri("http://localhost:" + localPort + "/reservas");
restTemplate = new TestRestTemplate(restTemplateBuilder);
}
/**
* Intento de creación de un cliente inválido
*/
@Test
public void testNuevoClienteInvalido() {
// Test con teléfono e email inválidos
var usuario = new DUsuario("Pedro", "Jaén Jaén", "611225", "pjaengmail.com", "miClAvE");
var respuesta = restTemplate.postForEntity(
"/usuarios",
usuario,
Void.class
);
Assertions.assertThat(respuesta.getStatusCode()).isEqualTo(HttpStatus.UNPROCESSABLE_ENTITY);
}
@Test
@DirtiesContext
void testLoginCliente() {
var usuario = new DUsuario("Pedro", "Jaén Jaén", "611203025", "pjaen@gmail.com", "miClAvE");
var respuesta = restTemplate.postForEntity(
"/usuarios",
usuario,
Void.class
);
Assertions.assertThat(respuesta.getStatusCode()).isEqualTo(HttpStatus.CREATED);
var respuestaLogin = restTemplate.getForEntity(
"/usuarios/{email}?clave={clave}",
DUsuario.class,
"ppp@gmail.com",
"miClAvE"
);
Assertions.assertThat(respuestaLogin.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED);
respuestaLogin = restTemplate.getForEntity(
"/usuarios/{email}?clave={clave}",
DUsuario.class,
usuario.email(),
"xyx"
);
Assertions.assertThat(respuestaLogin.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED);
respuestaLogin = restTemplate.getForEntity(
"/usuarios/{email}?clave={clave}",
DUsuario.class,
usuario.email(),
usuario.clave()
);
Assertions.assertThat(respuestaLogin.getStatusCode()).isEqualTo(HttpStatus.OK);
Assertions.assertThat(respuestaLogin.getBody().nombre()).isEqualTo(usuario.nombre());
}
}
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