# WireMock CLI Example

Demonstrates WireMock CLI integration with Aspire and Kiota-generated API clients for local API mocking.

## 📋 Overview

This example shows how to:

- Set up an Aspire AppHost with WireMock CLI for API mocking
- Generate typed API clients using Kiota from OpenAPI specifications
- Wire mock services with ASP.NET Core APIs using service discovery

## 🏗️ Architecture

```mermaid
flowchart LR
    subgraph AppHost["Aspire AppHost"]
        API["aspire-wiremockcli.Api<br/>(Kiota PersonClient)"] --> WireMock["WireMock CLI<br/>Mock Server<br/>(Person API)"]
    end
```

## 🧩 Components

| Project                           | Description                                     |
| --------------------------------- | ----------------------------------------------- |
| `aspire-wiremockcli.AppHost`      | Aspire orchestration with WireMock mock service |
| `aspire-wiremockcli.Api`          | ASP.NET Core API consuming the mock service     |
| `aspire-wiremockcli.PersonClient` | Kiota-generated API client for Person data      |

## 🔑 Key Features

- **WireMock CLI Integration**: Uses Forge's `AddWiremockCli()` Aspire extension
- **Kiota Client Generation**: Typed API client generated from OpenAPI spec
- **Service Discovery**: Automatic endpoint resolution between Aspire resources
- **Mock Definitions**: Pre-configured OpenAPI spec and stub mappings

## 📂 Project Structure

```
foundry/dotnet/aspire-wiremockcli/
├── aspire-wiremockcli.sln
├── aspire-wiremockcli.AppHost/
│   ├── .wiremock/                    # WireMock configuration
│   │   ├── wiremock.yaml             # WireMock settings
│   │   └── aspire-wiremockcli/
│   │       ├── openapi.yaml          # API specification
│   │       └── stub-mappings.yaml    # Mock responses
│   └── AppHost.cs
├── aspire-wiremockcli.Api/
│   └── Program.cs                    # API using PersonClient
└── aspire-wiremockcli.PersonClient/
    ├── persondata.openapi.yml        # OpenAPI spec for Kiota
    └── PersonApiClient/              # Generated client code
```

## 🚀 Getting Started

### Prerequisites

- .NET 10.0 SDK
- Aspire 13.x
- [WireMock CLI](https://wiremock.io/docs/standalone/cli/) installed
- Visual Studio 2022 or VS Code

### Running the Example

```bash
cd foundry/dotnet/aspire-wiremockcli
dotnet run --project aspire-wiremockcli.AppHost
```

## 📡 API Endpoints

The Person API mock provides:

| Endpoint       | Method | Description      |
| -------------- | ------ | ---------------- |
| `/people`      | GET    | List all people  |
| `/people/{id}` | GET    | Get person by ID |

## 🔗 Related Documentation

- [Host WireMock CLI Guide](../guides/development/mocking/host-wiremock-cli.md)
- [Kiota Tool Documentation](../reference/tools/kiota.md)

## 📍 Source Code

**Location:** [`foundry/dotnet/aspire-wiremockcli/`](https://dev.azure.com/SAIFCorporation/Platform/_git/forge?path=/foundry/dotnet/aspire-wiremockcli)
