Skip to content

specmatic/specmatic-arazzo-async-sample

Repository files navigation

🚀 Specmatic Arazzo Async Demo

Specmatic Arazzo is a NO-CODE workflow mocking and testing tool that allows users to efficiently author, validate, test, and mock workflows, leveraging Arazzo API Specifications This repository serves as a hands-on companion to the video demonstration below, We recommend setting up the project locally and following along with the video tutorial to get the full interactive experience of working with Specmatic Arazzo

🎬 Video Walkthrough

Visual API Workflow Mocking and Testing with Specmatic and Arazzo API Specifications

📋 Prerequisites

🔧 Setup

Clone the Specmatic Arazzo Async Sample repository:

git clone https://github.com/specmatic/specmatic-arazzo-async-sample
cd specmatic-arazzo-async-sample

Running the Project

To launch the stack, execute the following command to build and start the containers:

docker compose up --build

This builds and starts:

Launch the Extension:

Launch the Specmatic Docker Extension, populate the directory field with the path to the specmatic-arazzo-async-sample directory, as illustrated in the image below and hit Launch

Specmatic Docker Extension

What This Demo Shows

  • Author, validate, test, and mock OpenAPI and AsyncAPI workflow with Specmatic Arazzo, without single line of code.
  • Model workflows using Arazzo API Specifications and run them via Specmatic Studio’s drag‑and‑drop UI.
  • Test two microservices Order API, Location API and exercise async messaging via Arazzo with AsyncAPI over Kafka end‑to‑end.

🏗️ Application Architecture

This project includes below services:

📝 Flow

Diagram

Input for workflow testing

{
    "PlaceOrder": {
        "DEFAULT": {
            "CreateOrder": {
                "orderRequestId": "1234567890"
            },
            "GetUserDetails": {
                "email": "test@specmatic.io",
                "password": "specmatic",
                "internalToken": "API-TOKEN"
            }
        },
        "GetProducts.IsArrayEmpty": {
            "$failureMessage": "Expected not to find any products for random@specmatic.io, as they belong to B Zone",
            "GetUserDetails": {
                "email": "random@specmatic.io",
                "password": "user"
            }
        }
    }
}