Pruebas de Integridad de Datos con DTOs y Joy en APIs REST
Clase 9 de 25 • Curso de End to End Testing para APIs REST con Node.js
Contenido del curso
- 2

Exploración y Configuración de APIs con Insomnia y Postman
10:37 - 3

Pruebas en Node.js con Jest y Clean Architecture
10:06 - 4

Configuración y uso de Jest para pruebas end-to-end en JavaScript
08:04 - 5

Pruebas End-to-End con Supertest y Node.js
13:47 - 6

Buenas prácticas en pruebas con Jest y manejo de ciclos abiertos
08:30
- 7

Configuración de Entorno de Pruebas para Aplicaciones Node.js con Twen.js
11:25 - 8

Generación de Reporte de Cobertura con Pruebas End to End
07:32 - 9

Pruebas de Integridad de Datos con DTOs y Joy en APIs REST
20:16 - 10

Pruebas End-to-End con Base de Datos en API REST
17:21 - 11

Pruebas de Autenticación en Login con JavaScript
16:26 - 12

Pruebas de Rutas Protegidas con API Key en Node.js
07:03 - 13

Pruebas End-to-End con Access Token en API REST
14:16 - 14

Pruebas Efectivas de Creación de Usuarios en POS con Bases de Datos
09:03
- 15

Pruebas End-to-End: Gestión de Datos con Semillas Automatizadas
10:26 - 16

Configuración de Bases de Datos para Pruebas End-to-End con Docker
17:57 - 17

Creación de Sets de Datos Manuales para Pruebas End-to-End
15:49 - 18

Sets de Datos en SQLite: Creación y Gestión Efectiva
14:58 - 19

Uso de Unsook para Migraciones Programáticas en Pruebas
10:53 - 20

Pruebas de API: Creación de Categorías con Roles y Tokens
10:28 - 21

Pruebas End-to-End para API de Productos sin Autenticación
06:01 - 22

Pruebas de Paginación en Endpoints de Productos con Limit y Offset
04:38
¿Cómo se prueba la integridad de la información en una API?
El aseguramiento de la integridad de la información es clave para el correcto funcionamiento de las aplicaciones. En el contexto de desarrollo de APIs, la validación mediante esquemas, como los DTOs (Objetos de Transferencia de Datos), asegura que los datos se envíen y procesen adecuadamente, minimizando riesgos y errores. Exploraremos cómo puedes implementar y probar esta integridad mediante pruebas end-to-end.
¿Qué es un DTO y cómo se valida la información?
Primero, entendamos que un DTO es un modelo que define la estructura y tipo de datos que la API puede recibir. Estos esquemas aseguran que, por ejemplo, un email siga su formato convencional o que una contraseña tenga la longitud mínima requerida.
- Email: Debe tener un formato de correo válido. Si no cumple, la API debe responder con un código de estado 400 (solicitud incorrecta).
- Password: La longitud mínima puede ser, por ejemplo, ocho caracteres. Las contraseñas incorrectas también deben generar un error de código 400.
¿Cómo configuramos las pruebas end-to-end?
Las pruebas end-to-end nos permiten verificar la funcionalidad completa de un endpoint desde el cliente hasta el servidor y viceversa. Vamos a dividir el proceso en pasos lógicos:
-
Configura el ambiente:
- Asegúrate de que la aplicación se esté ejecutando correctamente en un entorno de desarrollo (por ejemplo, el puerto 3000).
-
Crea el archivo de pruebas:
- Dentro de la carpeta end-to-end, crea un archivo llamado
users.end-to-end.js. Este contendrá todas las pruebas relacionadas al path de usuarios, como crear, actualizar o eliminar usuarios.
- Dentro de la carpeta end-to-end, crea un archivo llamado
-
Escribe las pruebas:
- Las pruebas se organizan en suites utilizando
describey dentro de ellas se definen las pruebas individuales contest.
- Las pruebas se organizan en suites utilizando
test('Debería retornar un 400 bad request', async () => {
const inputData = {
email: 'nicolas.mail.com', // email correcto
password: 'abc' // password incorrecto
};
const response = await api.post('/api/v1/users').send(inputData);
expect(response.statusCode).toBe(400);
});
¿Qué implica el 'mantra de las tres A' en la prueba?
Este método organiza el flujo de prueba en tres fases:
- Arrange: Configura los datos de entrada necesarios para la prueba.
- Act: Ejecuta la acción que producirá un resultado.
- Assert: Verifica si el resultado es el esperado.
Ejemplo en el contexto del post de un usuario:
- Arrange: Prepara un email correcto pero un password invalid.
- Act: Envía los datos a través de un POST a
/api/v1/users. - Assert: Verifica que la respuesta sea 400, indicativo de una solicitud malformada.
¿Cómo manejar errores y logs en las pruebas?
Durante las pruebas, pueden surgir logs no deseados que ensucian la salida, dificultando el análisis. Para mejorar esto, puedes:
- Comentar temporalmente los logs detallados en los controladores de error.
- Utilizar herramientas como Sentry o Datadog para el registro eficiente de errores.
Implementando estas prácticas, no solo mejoras la calidad de tus aplicaciones, sino que también fomentas un desarrollo más robusto. Te animo a continuar practicando y explorando el apasionante mundo del testing, que es vital para cualquier ecosistema de software profesional.