Skip to content

outofcoffee/imposter

Imposter: Scriptable, multipurpose mock server

CI

Mock server for REST APIs, OpenAPI (and Swagger) specifications, SOAP web services (and WSDL files), Salesforce and HBase APIs.

  • Run standalone mock servers in Docker, Kubernetes, AWS Lambda or on the JVM.
  • Embed mocks within your tests (JVM or Node.js) to remove external dependencies.
  • Script dynamic responses using JavaScript, Groovy or Java.
  • Capture data from requests, then store it or return a templated response.
  • Proxy an existing endpoint to replay its responses as a mock.

Imposter logo

Features

  • run standalone mocks in place of real systems
  • turn an OpenAPI/Swagger file or WSDL file into a mock API for dev or QA (use it before the real API is built)
  • decouple your integration tests from the cloud/back-end systems and take control of your dependencies
  • validate your API requests against an OpenAPI specification
  • capture data to retrieve later, or use in templates to for conditional responses
  • proxy an existing endpoint to replay its responses as a mock

Send dynamic responses:

  • Provide mock responses using static files or customise behaviour based on characteristics of the request.
  • Power users can control mock responses with JavaScript or Java/Groovy script engines.
  • Advanced users can write their own plugins in a JVM language of their choice.

Getting started

The quickest way to get up and running is to use the free cloud-hosted service at mocks.cloud

User documentation

Read the user documentation here

Tutorials


Mock types

Imposter provides specialised mocks for the following scenarios:

  • OpenAPI - Support for OpenAPI (and Swagger) API specifications.
  • REST - Mocks RESTful or plain HTTP APIs.
  • SOAP - Support for SOAP web services (and WSDL files).
  • HBase - Basic HBase mock implementation.
  • SFDC (Salesforce) - Basic Salesforce mock implementation.
  • WireMock - Support for WireMock mappings files.

These use a plugin system, so you can also create your own plugins, using any JVM language.

Example

$ imposter up

Starting server on port 8080...
Parsing configuration file: someapi-config.yaml
...
Mock server is up and running

Your mock server is now running! Here Imposter provides HTTP responses to simulate an API that accepts users and returns a dynamic response containing the user ID from the request.

$ curl -v -X PUT http://localhost:8080/users/alice

HTTP/1.1 201 Created
Content-Type: application/json

{ "userName": "alice" }

This is a trivial example, which you can extend with conditional logic, request validation, data capture and much more...

How to run Imposter

There are many ways to run Imposter.

Standalone mock server

Embedded in tests


Recent changes and Roadmap

For recent changes see the Changelog, or view the Roadmap.

Contributing

  • Pull requests are welcome.
  • PRs should target the develop branch.

Author

Pete Cornish ([email protected])