Casos de Prueba
A continuación se describen los principales escenarios de prueba para la API REST de TECOCINAMOS, incluyendo peticiones correctas, peticiones erróneas y sus respuestas esperadas. Se han probado todos los endpoints críticos con Postman/CURL.
1. Registro de Usuario con Email Existente
Descripción: Intentar registrar un usuario cuyo email ya está en la base de datos; debe rechazarse.
Petición:
POST {{base_url}}/api/v1/auth/register
Content-Type: application/json
{
"nombre": "Admin Ejemplo 2",
"email": "admin@tecocinamos.com",
"contrasena": "cualquierCosa",
"telefono": "+34 600000003"
}
Respuesta Esperada:
HTTP/1.1 400 Bad Request
{
"timestamp": "2025-06-01T15:30:00.000Z",
"status": 400,
"error": "Error",
"message": "Ya existe un usuario con ese email"
}
2. Login con Credenciales Incorrectas
Descripción: Intentar acceder con un email que no existe; debe responder 401 Unauthorized.
Petición:
POST {{base_url}}/api/v1/auth/login
Content-Type: application/json
{
"email": "noexiste@tecocinamos.com",
"contrasena": "xxx"
}
Respuesta Esperada:
HTTP/1.1 401 Unauthorized
{
"timestamp": "2025-06-01T15:35:00.000Z",
"status": 401,
"error": "Unauthorized",
"message": "Credenciales inválidas"
}
3. Crear Plato (ADMIN) con Categoría Inexistente
Descripción: Intentar crear un plato asignando un
categoriaId que no existe; el servicio debe responder
404 Not Found.
Petición:
POST {{base_url}}/api/v1/platos
Authorization: Bearer {{token_admin}}
Content-Type: application/json
{
"nombrePlato": "Prueba Fallida",
"cantidad": "1 ración",
"precio": 10.00,
"stock": 5,
"preparacionCasa": "Texto",
"recomendaciones": "Texto",
"categoriaId": 99,
"ingredientesUsados": [],
"imageBaseName": "pruebaFallida"
}
Respuesta Esperada:
HTTP/1.1 404 Not Found
{
"timestamp": "2025-06-01T15:40:00.000Z",
"status": 404,
"error": "Error",
"message": "Categoría no encontrada"
}
4. Hacer Pedido (CLIENTE) con Plato Inexistente
Descripción: Intentar generar un pedido incluyendo
un platoId que no existe; debe responder 404 Not Found.
Petición:
POST {{base_url}}/api/v1/pedidos
Authorization: Bearer {{token_cliente}}
Content-Type: application/json
{
"fechaEntrega": "2025-06-15",
"direccionEntrega": "Av. Imaginaria 123",
"detalles": [
{
"platoId": 999,
"cantidadPlato": 2,
"descuento": 0
}
]
}
Respuesta Esperada:
HTTP/1.1 404 Not Found
{
"timestamp": "2025-06-01T15:45:00.000Z",
"status": 404,
"error": "Error",
"message": "Plato no encontrado: ID 999"
}
5. Cambiar Estado de Pedido (CLIENTE) ⇒ 403 Forbidden
Descripción: Un cliente normal intenta acceder a la ruta de cambio de estado de pedido, debe responder 403 Forbidden.
Petición:
PUT {{base_url}}/api/v1/pedidos/1/estado/2
Authorization: Bearer {{token_cliente}}
Respuesta Esperada:
HTTP/1.1 403 Forbidden
{
"timestamp": "2025-06-01T15:50:00.000Z",
"status": 403,
"error": "Forbidden",
"message": "Access Denied"
}
6. Ver Catálogo de Platos (Público) ⇒ 200 OK
Descripción: Acceso público a la lista de platos, sin necesidad de JWT.
Petición:
GET {{base_url}}/api/v1/platos
Respuesta Esperada:
HTTP/1.1 200 OK
[
{
"id": 1,
"nombrePlato": "Croquetas de Bacalao",
"precio": 6.50,
"categoria": "Entrantes"
},
...
]
7. Eliminar Usuario (ADMIN) ⇒ 204 No Content
Descripción: Un administrador elimina (borrado lógico) a un usuario existente.
Petición:
DELETE {{base_url}}/api/v1/users/2
Authorization: Bearer {{token_admin}}
Respuesta Esperada:
HTTP/1.1 204 No Content
8. Generar Factura en PDF (ADMIN)
Descripción: El administrador solicita la factura PDF de un pedido existente.
Petición:
GET {{base_url}}/api/v1/facturas/1
Authorization: Bearer {{token_admin}}
Respuesta Esperada:
-
HTTP/1.1 200 OK,Content-Type: application/pdf,Content-Disposition: attachment; filename="factura_1.pdf". -
Si el pedido no existe:
404 Not Foundcon JSON{ "message": "Pedido no encontrado" }.