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 {
try {
Usuario usuario = mapper.entity(dtoUsuario);
servicioUsuarios.crearUsuario(usuario);
Usuario usuarioGuardado = servicioUsuarios.buscaUsuario(usuario.getEmail()); //Obtiene un id
return ResponseEntity.status(HttpStatus.CREATED).body(mapper.dto(usuarioGuardado));
return ResponseEntity.status(HttpStatus.CREATED).build();
} catch (UsuarioYaRegistrado e) {
return ResponseEntity.status(HttpStatus.CONFLICT).build();
}
......@@ -45,15 +43,21 @@ public class UsuariosController {
@PostMapping("/{email}")
public ResponseEntity<?> iniciarSesion(@PathVariable String email, @RequestBody Map<String, String> clave) {
String contrasenia = clave.get("clave");
DTOLoginRespuesta respuesta = servicioUsuarios.autenticarUsuario(email, contrasenia);
if (respuesta == null) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Credenciales incorrectas");
try {
String contrasenia = clave.get("clave");
if (contrasenia == null || contrasenia.isBlank()) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
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;
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.http.ResponseEntity;
import org.springframework.http.*;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
......@@ -28,15 +27,10 @@ import java.util.Map;
@ActiveProfiles("test")
public class TestUsuariosController {
@LocalServerPort
int localPort;
TestRestTemplate restTemplateUsuarios;
@Autowired
private Mapper mapper;
@PostConstruct
void crearRestTemplate() {
......@@ -49,7 +43,7 @@ public class TestUsuariosController {
@Test
@DirtiesContext
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 respuestaInvalida = restTemplateUsuarios.postForEntity(
"/",
......@@ -60,18 +54,13 @@ public class TestUsuariosController {
// Caso 2: Registrar un usuario correctamente
var usuarioValido = new DTOUsuario(null, "pedro@gmail.com", "Pedro", "pedrito");
ResponseEntity<DTOUsuario> respuestaValida = restTemplateUsuarios.postForEntity(
ResponseEntity<Void> respuestaValida = restTemplateUsuarios.postForEntity(
"/",
usuarioValido,
DTOUsuario.class
Void.class
);
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
var usuarioDuplicado = new DTOUsuario(null, "pedro@gmail.com", "Pedro", "pedrito");
var respuestaDuplicado = restTemplateUsuarios.postForEntity(
......@@ -85,34 +74,46 @@ public class TestUsuariosController {
@Test
@DirtiesContext
void testIniciarSesion() {
var usuarioValido = new DTOUsuario("pedro@gmail.com", "Pedro", "pedrito");
restTemplateUsuarios.postForEntity("/", usuarioValido, DTOUsuario.class); // Registramos usuario
// Registro de un usuario válido
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 cuerpoInexistente = Map.of("clave", "password123");
var respuestaInexistente = restTemplateUsuarios.postForEntity(
"/" + emailInexistente,
cuerpoInexistente,
Void.class
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
var requestInexistente = new HttpEntity<>(Map.of("clave", "password123"), headers);
ResponseEntity<Void> respuestaInexistente = restTemplateUsuarios.postForEntity(
"/{email}",
requestInexistente,
Void.class,
emailInexistente
);
Assertions.assertThat(respuestaInexistente.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED);
// Caso 2: Contraseña incorrecta
var cuerpoIncorrecto = Map.of("clave", "incorrecta");
var respuestaIncorrecta = restTemplateUsuarios.postForEntity(
"/" + usuarioValido.getEmail(),
cuerpoIncorrecto,
Void.class
// // Caso 2: Intentar iniciar sesión con una contraseña incorrecta
var requestIncorrecto = new HttpEntity<>(Map.of("clave", "incorrecta"), headers);
ResponseEntity<Void> respuestaIncorrecta = restTemplateUsuarios.postForEntity(
"/{email}",
requestIncorrecto,
Void.class,
usuarioValido.getEmail()
);
Assertions.assertThat(respuestaIncorrecta.getStatusCode()).isEqualTo(HttpStatus.UNAUTHORIZED);
// Caso 3: Inicio de sesión exitoso
var cuerpoValido = Map.of("clave", "pedrito");
var respuestaValida = restTemplateUsuarios.postForEntity(
"/" + usuarioValido.getEmail(),
cuerpoValido,
DTOLoginRespuesta.class
// // Caso 3: Inicio de sesión exitoso
var requestValido = new HttpEntity<>(Map.of("clave", "pedrita"), headers);
ResponseEntity<DTOLoginRespuesta> respuestaValida = restTemplateUsuarios.postForEntity(
"/{email}",
requestValido,
DTOLoginRespuesta.class,
usuarioValido.getEmail()
);
Assertions.assertThat(respuestaValida.getStatusCode()).isEqualTo(HttpStatus.OK);
......@@ -120,6 +121,4 @@ public class TestUsuariosController {
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