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 Found con JSON { "message": "Pedido no encontrado" }.