Commit 4113fb8d by Rubén Ramírez

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

feat: [UsuariosController]:Corregidos trampeos en los test y añadidos casos no contemplados anteriormente
parent 0a1bfe2d
...@@ -35,9 +35,7 @@ public class UsuariosController { ...@@ -35,9 +35,7 @@ public class UsuariosController {
try { try {
Usuario usuario = mapper.entity(dtoUsuario); Usuario usuario = mapper.entity(dtoUsuario);
servicioUsuarios.crearUsuario(usuario); servicioUsuarios.crearUsuario(usuario);
Usuario usuarioGuardado = servicioUsuarios.buscaUsuario(usuario.getEmail()); //Obtiene un id return ResponseEntity.status(HttpStatus.CREATED).build();
return ResponseEntity.status(HttpStatus.CREATED).body(mapper.dto(usuarioGuardado));
} catch (UsuarioYaRegistrado e) { } catch (UsuarioYaRegistrado e) {
return ResponseEntity.status(HttpStatus.CONFLICT).build(); return ResponseEntity.status(HttpStatus.CONFLICT).build();
} }
...@@ -45,15 +43,21 @@ public class UsuariosController { ...@@ -45,15 +43,21 @@ public class UsuariosController {
@PostMapping("/{email}") @PostMapping("/{email}")
public ResponseEntity<?> iniciarSesion(@PathVariable String email, @RequestBody Map<String, String> clave) { public ResponseEntity<?> iniciarSesion(@PathVariable String email, @RequestBody Map<String, String> clave) {
String contrasenia = clave.get("clave"); try {
String contrasenia = clave.get("clave");
DTOLoginRespuesta respuesta = servicioUsuarios.autenticarUsuario(email, contrasenia); if (contrasenia == null || contrasenia.isBlank()) {
if (respuesta == null) { return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Credenciales incorrectas"); }
DTOLoginRespuesta respuesta = servicioUsuarios.autenticarUsuario(email, contrasenia);
if (respuesta == null) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
}
return ResponseEntity.ok(respuesta);
} catch (SecurityException e) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
} }
return ResponseEntity.ok(respuesta);
} }
} }
...@@ -15,8 +15,7 @@ import org.springframework.boot.test.context.SpringBootTest; ...@@ -15,8 +15,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.http.HttpStatus; import org.springframework.http.*;
import org.springframework.http.ResponseEntity;
import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.SecurityFilterChain;
import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ActiveProfiles;
...@@ -28,15 +27,10 @@ import java.util.Map; ...@@ -28,15 +27,10 @@ import java.util.Map;
@ActiveProfiles("test") @ActiveProfiles("test")
public class TestUsuariosController { public class TestUsuariosController {
@LocalServerPort @LocalServerPort
int localPort; int localPort;
TestRestTemplate restTemplateUsuarios; TestRestTemplate restTemplateUsuarios;
@Autowired
private Mapper mapper;
@PostConstruct @PostConstruct
void crearRestTemplate() { void crearRestTemplate() {
...@@ -49,7 +43,7 @@ public class TestUsuariosController { ...@@ -49,7 +43,7 @@ public class TestUsuariosController {
@Test @Test
@DirtiesContext @DirtiesContext
void testRegistrarUsuario() { void testRegistrarUsuario() {
// Caso 1: Intentar registrar un usuario con datos inválidos; un email vacío // Caso 1: Intentar registrar un usuario con datos inválidos; un email no válido
var usuarioInvalido = new DTOUsuario(null, "", "UsuarioInvalido", "invalido"); var usuarioInvalido = new DTOUsuario(null, "", "UsuarioInvalido", "invalido");
var respuestaInvalida = restTemplateUsuarios.postForEntity( var respuestaInvalida = restTemplateUsuarios.postForEntity(
"/", "/",
...@@ -60,18 +54,13 @@ public class TestUsuariosController { ...@@ -60,18 +54,13 @@ public class TestUsuariosController {
// Caso 2: Registrar un usuario correctamente // Caso 2: Registrar un usuario correctamente
var usuarioValido = new DTOUsuario(null, "pedro@gmail.com", "Pedro", "pedrito"); var usuarioValido = new DTOUsuario(null, "pedro@gmail.com", "Pedro", "pedrito");
ResponseEntity<DTOUsuario> respuestaValida = restTemplateUsuarios.postForEntity( ResponseEntity<Void> respuestaValida = restTemplateUsuarios.postForEntity(
"/", "/",
usuarioValido, usuarioValido,
DTOUsuario.class Void.class
); );
Assertions.assertThat(respuestaValida.getStatusCode()).isEqualTo(HttpStatus.CREATED); Assertions.assertThat(respuestaValida.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// Verificación de que el usuario devuelto tiene un ID asignado
var usuarioCreado = respuestaValida.getBody();
Assertions.assertThat(usuarioCreado).isNotNull();
Assertions.assertThat(usuarioCreado.getId()).isNotNull();
// Caso 3: Intentar registrar un usuario con el mismo email // Caso 3: Intentar registrar un usuario con el mismo email
var usuarioDuplicado = new DTOUsuario(null, "pedro@gmail.com", "Pedro", "pedrito"); var usuarioDuplicado = new DTOUsuario(null, "pedro@gmail.com", "Pedro", "pedrito");
var respuestaDuplicado = restTemplateUsuarios.postForEntity( var respuestaDuplicado = restTemplateUsuarios.postForEntity(
...@@ -85,34 +74,46 @@ public class TestUsuariosController { ...@@ -85,34 +74,46 @@ public class TestUsuariosController {
@Test @Test
@DirtiesContext @DirtiesContext
void testIniciarSesion() { void testIniciarSesion() {
var usuarioValido = new DTOUsuario("pedro@gmail.com", "Pedro", "pedrito"); // Registro de un usuario válido
restTemplateUsuarios.postForEntity("/", usuarioValido, DTOUsuario.class); // Registramos usuario var usuarioValido = new DTOUsuario(null, "pedra@gmail.com", "Pedra", "pedrita");
ResponseEntity<DTOUsuario> respuestaRegistro = restTemplateUsuarios.postForEntity(
"/",
usuarioValido,
DTOUsuario.class
);
Assertions.assertThat(respuestaRegistro.getStatusCode()).isEqualTo(HttpStatus.CREATED);
// Caso 1: Usuario no encontrado // // Caso 1: Intentar iniciar sesión con un usuario que no existe
var emailInexistente = "noexiste@example.com"; var emailInexistente = "noexiste@example.com";
var cuerpoInexistente = Map.of("clave", "password123"); HttpHeaders headers = new HttpHeaders();
var respuestaInexistente = restTemplateUsuarios.postForEntity( headers.setContentType(MediaType.APPLICATION_JSON);
"/" + emailInexistente, var requestInexistente = new HttpEntity<>(Map.of("clave", "password123"), headers);
cuerpoInexistente,
Void.class ResponseEntity<Void> respuestaInexistente = restTemplateUsuarios.postForEntity(
"/{email}",
requestInexistente,
Void.class,
emailInexistente
); );
Assertions.assertThat(respuestaInexistente.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED); Assertions.assertThat(respuestaInexistente.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED);
// Caso 2: Contraseña incorrecta // // Caso 2: Intentar iniciar sesión con una contraseña incorrecta
var cuerpoIncorrecto = Map.of("clave", "incorrecta"); var requestIncorrecto = new HttpEntity<>(Map.of("clave", "incorrecta"), headers);
var respuestaIncorrecta = restTemplateUsuarios.postForEntity( ResponseEntity<Void> respuestaIncorrecta = restTemplateUsuarios.postForEntity(
"/" + usuarioValido.getEmail(), "/{email}",
cuerpoIncorrecto, requestIncorrecto,
Void.class Void.class,
usuarioValido.getEmail()
); );
Assertions.assertThat(respuestaIncorrecta.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED); Assertions.assertThat(respuestaIncorrecta.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED);
// Caso 3: Inicio de sesión exitoso // // Caso 3: Inicio de sesión exitoso
var cuerpoValido = Map.of("clave", "pedrito"); var requestValido = new HttpEntity<>(Map.of("clave", "pedrita"), headers);
var respuestaValida = restTemplateUsuarios.postForEntity( ResponseEntity<DTOLoginRespuesta> respuestaValida = restTemplateUsuarios.postForEntity(
"/" + usuarioValido.getEmail(), "/{email}",
cuerpoValido, requestValido,
DTOLoginRespuesta.class DTOLoginRespuesta.class,
usuarioValido.getEmail()
); );
Assertions.assertThat(respuestaValida.getStatusCode()).isEqualTo(HttpStatus.OK); Assertions.assertThat(respuestaValida.getStatusCode()).isEqualTo(HttpStatus.OK);
...@@ -120,6 +121,4 @@ public class TestUsuariosController { ...@@ -120,6 +121,4 @@ public class TestUsuariosController {
Assertions.assertThat(respuestaValida.getBody().getToken()).isNotEmpty(); Assertions.assertThat(respuestaValida.getBody().getToken()).isNotEmpty();
} }
} }
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