Cómo probar solicitudes DELETE para pruebas de API con Playwright Java

Las pruebas de API han ganado mucho impulso en estos días. Como no se involucra la interfaz de usuario, es mucho más fácil y rápido realizar pruebas. Esta es la razón por la cual las pruebas de API se consideran la primera opción para realizar pruebas de extremo a extremo del sistema. Integrar las pruebas automatizadas de API con las canalizaciones de CI/CD permite a los equipos obtener comentarios más rápidos sobre las compilaciones.

En este blog, discutiremos y aprenderemos sobre las solicitudes de API DELETE y cómo manejarlas utilizando Playwright Java para pruebas de automatización, cubriendo los siguientes puntos:

  1. ¿Qué es una solicitud DELETE?
  2. ¿Cómo pruebas las APIs DELETE usando Playwright Java?

Comenzando

Se recomienda que consultes el blog de tutorial anterior para conocer los detalles relacionados con los requisitos previos, la configuración, y la configuración.

Aplicación Bajo Prueba

Usaremos las APIs RESTful de comercio electrónico de uso gratuito que ofrecen múltiples APIs relacionadas con la funcionalidad de gestión de pedidos, permitiéndonos crear, recuperar, actualizar y eliminar pedidos.

Esta aplicación se puede configurar localmente utilizando Docker o NodeJS.

¿Qué es una solicitud DELETE?

Una solicitud API DELETE elimina el recurso especificado del servidor. Generalmente, no hay un cuerpo de respuesta en las solicitudes DELETE.

El recurso se especifica mediante una URI, y el servidor lo elimina permanentemente. Las solicitudes DELETE no se consideran seguras ni idempotentes, ya que pueden causar efectos secundarios en el servidor, como la eliminación de datos de una base de datos.

Las siguientes son algunas de las limitaciones de las solicitudes DELETE:

  1. Los datos eliminados mediante una solicitud DELETE no son reversibles, por lo que deben manejarse con cuidado.
  2. No se considera un método seguro, ya que puede eliminar directamente el recurso de la base de datos, causando conflictos en el sistema.
  3. No es un método idempotente, lo que significa que llamarlo varias veces para el mismo recurso puede resultar en diferentes estados. Por ejemplo, en la primera instancia, cuando se llama a DELETE, regresará el Código de Estado 204 indicando que el recurso ha sido eliminado, y si se llama a DELETE nuevamente en el mismo recurso, puede dar un 404 NO ENCONTRADO ya que el recurso dado ya ha sido eliminado.

El siguiente es un ejemplo del endpoint API DELETE del proyecto de comercio electrónico RESTful. 

DELETE /deleteOrder/{id} :  Elimina un pedido por ID

Esta API requiere que se suministre el order_id como Parámetro de Ruta para eliminar el pedido respectivo del sistema. No se requiere proporcionar un cuerpo de solicitud en esta solicitud API DELETE. Sin embargo, como medida de seguridad, se requiere proporcionar el token como un header para eliminar el pedido.

Una vez que se ejecuta la API, elimina el pedido especificado del sistema y devuelve el Código de Estado 204.

En caso de que no se encuentre el pedido, o el token no sea válido o no se proporcione, mostrará la siguiente respuesta:

Status Code Description
400

No se pudo autenticar el token

404

No se encuentra ningún pedido con el order_id dado en el sistema

403 Falta el token en la solicitud

Cómo probar APIs DELETE usando Playwright Java

Probar APIs DELETE es un paso importante para garantizar la estabilidad y fiabilidad de la aplicación. La correcta implementación de las APIs DELETE es esencial para verificar la ausencia de pérdida de datos no intencionada e inconsistencias, ya que las APIs DELETE son responsables de eliminar los recursos del sistema.

En esta demostración de prueba de APIs DELETE utilizando Playwright Java, utilizaremos el /deleteOrder/{id} para eliminar un pedido existente del sistema.

Escenario de Prueba 1: Eliminar un Pedido Válido

  1. Inicie el servicio de comercio electrónico RESTful.
  2. Utilizando una solicitud POST, cree algunos pedidos en el sistema.
  3. Elimine el pedido con order_id “1” utilizando una solicitud DELETE.
  4. Verifique que se devuelva el Código de Estado 204 en la respuesta.


Implementación de la Prueba

Los siguientes pasos son necesarios para implementar el escenario de prueba:

  1. Agrega nuevos pedidos utilizando la solicitud POST.
  2. Accede a la API /auth para generar el token.
  3. Accede al endpoint de la API /deleteOrder/ con el token y el order_id para eliminar el pedido.
  4. Verifica que se devuelva el Código de Estado 204 en la respuesta.

Se crea un nuevo método de prueba, testShouldDeleteTheOrder(), en la clase de prueba existente HappyPathTests. Este método de prueba implementa los tres pasos anteriores para probar la API DELETE.

Java

 

El endpoint de la API POST /auth se accederá primero para generar el token. El token recibido en la respuesta se almacena en la variable token para ser utilizado más adelante en la solicitud de la API DELETE.

A continuación, se generarán nuevos pedidos utilizando el método testShouldCreateNewOrders(), que ya se discutió en el tutorial anterior, donde hablamos sobre la prueba de solicitudes POST utilizando Playwright Java.

Después de que se generen los pedidos, el siguiente paso es realizar la solicitud DELETE con el order_id válido que eliminaría el pedido específico.


Estaremos eliminando el pedido con el order_id “1” utilizando el delete() método proporcionado por el marco de Playwright.

Después de que se elimina el pedido, se devuelve el código de estado 204 en la respuesta. Se realizará una afirmación en el código de estado para verificar que la acción de eliminación fue exitosa. Dado que no se devuelve un cuerpo de solicitud en la respuesta, esto es lo único que se puede verificar.

Ejecución de la Prueba

Vamos a crear un nuevo testng.xml llamado testng-restfulecommerce-deleteorders.xml para ejecutar las pruebas en el orden de los pasos que discutimos en la implementación de la prueba.

XML

 

Primero, se ejecutará el método de prueba testShouldCreateNewOrders() y creará nuevos pedidos. A continuación, se ejecutará el método de prueba testShouldDeleteTheOrder() para probar la API de eliminación de pedidos.

La siguiente captura de pantalla de la ejecución de la prueba realizada utilizando IntelliJ IDE muestra que las pruebas se ejecutaron correctamente.

Ahora, verifiquemos que el pedido se eliminó correctamente escribiendo una nueva prueba que llamará al endpoint de la API GET /getOrder con el order_id eliminado.

Escenario de Prueba 2: Recuperar el Pedido Eliminado

  1. Eliminar un pedido válido con el order_id “1”.
  2. Utilizando la API GET /getOrder, intenta recuperar el pedido con el order_id “1”.
  3. Verificar que se devuelva el código de estado 404 con el mensaje “¡No se encontró ningún pedido con los parámetros dados!” en la respuesta.

Implementación de Prueba

Creemos un nuevo método de prueba, testShouldNotRetrieveDeletedOrder(), en la clase existente HappyPathTests.

Java

 

La implementación de esta prueba es bastante simple. Ejecutaremos la API GET /getOrder para recuperar la orden eliminada con order_id “1.”

A continuación, se aplica una aserción para verificar que la API GET debería devolver el Código de Estado 404 en la respuesta con el mensaje “¡No se encontró ninguna orden con los parámetros dados!”

Esta prueba asegura que la API de eliminación de órdenes funcionó correctamente y que la orden fue eliminada del sistema.

Ejecución de la Prueba

Actualicemos el archivo testng.xml  y agreguemos este escenario de prueba al final después de la prueba de eliminación.

Java

 

Ahora, las tres pruebas deberían ejecutarse en secuencia. La primera creará órdenes; la segunda eliminará la orden con order_id “1”; y la última prueba llamará a la API GET para recuperar la orden con order_id “1” devolviendo el Código de Estado 404.

La captura de pantalla anterior muestra que las tres pruebas se ejecutaron correctamente y que la API DELETE funcionó bien como se esperaba.

Resumen

Las solicitudes de API DELETE permiten la eliminación del recurso del sistema. Dado que eliminar es una función CRUD importante, es importante probarla y verificar que el sistema funcione como se espera. Sin embargo, es importante tener en cuenta que DELETE es un proceso irreversible, por lo que siempre se debe usar con precaución.

Según mi experiencia, es un buen enfoque hacer la petición GET después de ejecutar la solicitud DELETE para verificar que el recurso especificado se eliminó correctamente del sistema.

¡Feliz prueba!

Source:
https://dzone.com/articles/test-delete-requests-for-api-testing-with-playwright-java