Skip to content

Latest commit

 

History

History
175 lines (142 loc) · 3.25 KB

README.md

File metadata and controls

175 lines (142 loc) · 3.25 KB

Wiremock Docker Pulls Image Size

Wiremock Minimal Mock your APIs

"Buy Me A Coffee"

  _      ___                        __  
 | | /| / (_)______ __ _  ___  ____/ /__
 | |/ |/ / / __/ -_)  ' \/ _ \/ __/  '_/
 |__/|__/_/_/  \__/_/_/_/\___/\__/_/\_\

 -> wiremock server started on :8000

Run with Docker

docker pull prongbang/wiremock:latest

Run with Docker Compose

version: '3.7'
services:
  app_wiremock:
    image: prongbang/wiremock:latest
    ports:
      - "8000:8000"
    volumes:
      - "./mock:/mock"
    environment:
      - ORIGIN_ALLOWED=http://localhost:9000
$ docker-compose up -d

Run with Golang

$ go install github.com/prongbang/wiremock/v2@latest

Default port 8000

$ wiremock

Custom port 9000

$ wiremock -port=9000

Example Project

https://github.com/prongbang/wiremock-example

Matching Routes using gorilla/mux

Read doc gorilla/mux

Setup project

project
├── docker-compose.yml
└── mock
    ├── login
    │   └── route.yml
    └── user
        ├── response
        │   └── user.json
        └── route.yml

Login

POST http://localhost:8000/api/v1/login
Query
  lang: "th"
Header
  Api-Key: "ed2b7d14-3999-408e-9bb8-4ea739f2bcb5"
Body
{
  "username": "admin"
  "password": "pass"
}
  • route.yml
routes:
  login:
    request:
      method: "POST"
      url: "/api/v1/login"
      query:
        lang: "th" 
      header:
        Api-Key: "ed2b7d14-3999-408e-9bb8-4ea739f2bcb5"
      body:
        username: "admin"
        password: "pass"
    response:
      status: 200
      body: >
        {"message": "success"}

User

GET   http://localhost:8000/api/v1/user/1
POST  http://localhost:8000/api/v1/user
  • route.yml
routes:
  get_user:
    request:
      method: "GET"
      url: "/api/v1/user/{id:[0-9]+}"
    response:
      status: 200
      body_file: user.json

  create_user:
    request:
      method: "POST"
      url: "/api/v1/user"
    response:
      status: 201
      body: >
        {"message": "success"}

User with multiple case

* - field required.

routes:
  users:
    request:
      method: "POST"
      url: "/api/v1/user"
      query:
        lang: "XYZ"
      header:
        Api-Key: "ABC"
      cases:
        user_accept_consent:
          body:
            action: "consent"
            accept: "Y"
          response:
            status: 200
            body_file: user-accept-consent.json
        get_profile:
          body:
            username: "*"
            userId: "*"
          response:
            status: 200
            body_file: profile-self.json