Exploración y Configuración de APIs con Insomnia y Postman

Clase 2 de 25Curso de End to End Testing para APIs REST con Node.js

Resumen

¿Cómo explorar nuestra API utilizando Insomnia o Postman?

Explorar y probar una API puede ser una tarea desalentadora, pero con las herramientas correctas, como Insomnia o Postman, es mucho más fácil de lo que parece. Insomnia es un software que nos permite realizar requests de manera organizada y estructurada hacia nuestra API. También puedes usar Postman, y ambos te ofrecerán una manera efectiva de interactuar con la API. En el repositorio del proyecto, encontrarás archivos como insomnia.json o postman.json para importar toda la API y configurarla rápidamente en la herramienta que prefieras.

¿Cómo configurar un entorno de request?

  1. Importar archivo de configuración:

    • Para Insomnia: Importa el archivo insomnia.json.
    • Para Postman: Usa el archivo postman.json.
  2. Configurar el entorno local:

    • Verifica que la aplicación esté corriendo en localhost puerto 3000.
    • Realiza un request para verificar que puedes recibir la respuesta "HolaMyServer en express".
  3. Subdirectorios y endpoints:

    • La API está estructurada en subdirectorios como categorías, notificación, clientes, órdenes, productos, perfil y usuarios.
    • Cada subdirectorio contiene endpoints específicos para sus servicios, como obtener todas las categorías, crear nuevas, etc.

¿Cómo crear un producto en la API?

Antes de crear un producto, es vital que la base de datos y las migraciones estén configuradas correctamente, pues la API hace uso de un sistema de migraciones que estructura las tablas necesarias.

  1. Levantar la base de datos:

    • Detén el servidor de desarrollo.
    • Levanta la base de datos con Docker:
      docker-compose up -d postgres
      
    • Verifica su ejecución con:
      docker-compose ps
      
  2. Correr las migraciones:

    • Ejecuta el comando para migraciones:
      npm run migrations:run
      
    • Vuelve a iniciar el servidor de desarrollo:
      npm run dev
      
  3. Crear una categoría:

    • Realiza un request para crear una categoría, proporcionando el nombre y la imagen.

¿Cómo autenticar y crear datos?

La API tiene protecciones de autenticación, lo que significa que algunas acciones requieren haber iniciado sesión como administrador.

  1. Crear un usuario administrador:

    • Accede al endpoint users/create y crea un usuario con email y contraseña.
  2. Iniciar sesión:

    • Haz login en el endpoint auth/login usando el email y la contraseña para obtener un access token.
  3. Utilizar el token de acceso:

    • Especifica el token de acceso en las variables de entorno en Insomnia o Postman.
    • Insértalo en la sección de autenticación como Bearer Token.

¿Cómo manejar endpoints protegidos?

Hay endpoints en la API que están protegidos, como el de crear categorías, que requiere autenticación. Por otro lado, hay algunos como el de crear productos que no solicitan verificación. Es relevante distinguir estos casos y preparar un esquema de pruebas adecuado.

  1. Probar protecciones:

    • Intenta crear una categoría sin autenticación y recibe la respuesta de error 401 indicando que es una acción no autorizada.
  2. Configurar y validar usuarios:

    • Crea un usuario y asegúrate de que esté registrado en la base de datos.
    • Usa su autenticación para realizar acciones administrativas.

¿Cómo practicar y familiarizarse con la API?

Invierte tiempo en interactuar con la API creando categorías y productos. Por ejemplo:

  • Crea al menos tres categorías con tu usuario administrador.
  • Desarrolla diez productos distribuidos entre esas categorías.

Estas actividades te proporcionarán datos relevantes en la base de datos para realizar experimentos y test con la API. Este tipo de práctica te ayudará a aprender más sobre el funcionamiento interno y la estructuración de la API.

¡No te detengas aquí! Sigue explorando y amplía tus habilidades con la herramienta que te sientas más cómodo, y pronto verás los frutos de tu esfuerzo en el desarrollo profesional.