wiremock-mapper
DSL for setting up WireMock mappings
Installation
npm install wiremock-mapper
Configuring
import { Configuration } from 'wiremock-mapper';
Configuration.wireMockBaseUrl = 'http://localhost:8080/some_path_prefix';
Creating a global mapping
Global mappings are a way to predefine part o
import { Configuration } from 'wiremock-mapper';
Configration.createGlobalMapping((request, response) => {});
Reset global mapping
import { Configration } from 'wiremock-mapper';
Configration.reset();
Create a mapping
Import the library
import { WireMockMapper } from 'wiremock-mapper';
Mappings are created with WireMockMapper.createMapping()
which takes a function argument defining the mock behavior. It asyncronously sends the configuration to the WireMock server.
await WireMockMapper.createMapping((req, res) => {});
Define matching parameters
All request modifiers are set from req
provided by createMapping
, and return an instance of RequestBuilder
, MatchBuilder
, or UrlMatchBuilder
. These can be chained together to form a complete request expectation.
It should read like a sentence when set up properly.
await WireMockMapper.createMapping((req, res) => {
req.isAGet.withUrlPath.matching('/my/.*/path');
});
Interfaces
RequestBuilder
Method | Argument(s) | Effect | Returns |
---|
isAGet | none | sets request method to GET | RequestBuilder |
isAPost | none | sets request method to POST | RequestBuilder |
isAPut | none | sets request method to PUT | RequestBuilder |
isADelete | none | sets request method to DELETE | RequestBuilder |
isAHead | none | sets request method to HEAD | RequestBuilder |
isAnOptions | none | sets request method to OPTIONS | RequestBuilder |
isATrace | none | sets request method to TRACE | RequestBuilder |
isAnyVerb | none | sets request method to ANY | RequestBuilder |
withBody | none | sets request body | RequestBuilder |
withBasicAuth | username: string, password: string | sets basic auth | RequestBuilder |
withUrl | none | sets expected URL | UrlMatchBuilder |
withUrlPath | none | sets URL path match to urlPathPattern | UrlMatchBuilder |
withCookie | key: string | sets request cookie | MatchBuilder |
withHeader | key: string | sets request header | MatchBuilder |
withQueryParam | key: string | sets request query parameter | MatchBuilder |
UrlMatchBuilder
Method | Arguments | Effect | Returns |
---|
equalTo | url: string | Matches text given | RequestBuilder |
matching | regexp: string | Matches with regular expression | RequestBuilder |
MatchBuilder
Method | Argument(s) | Returns |
---|
absent | none | RequestBuilder |
containing | value: string | RequestBuilder |
equalTo | value: string | RequestBuilder |
equalToJson | json: any, ignoreArrayOrder: boolean, ignoreExtraElements: boolean | RequestBuilder |
equalToXml | xml: string | RequestBuilder |
macthing | value: string | RequestBuilder |
matchingJsonPath | path: string | RequestBuilder |
matchingXPath | xpath: string | RequestBuilder |
notMatching | value: string | RequestBuilder |
Define response behavior
Responses are created from res
provided by WireMockMapper.createMapping()
await WireMockMapper.createMapping((req, res) => {
res
.withJsonBody({
someKey: 'theValue',
otherKey: 'otherValue'
})
.withStatus(200)
.withStatusMessage('ok');
});
Interface
ResponseBuilder
Method | Argument(s) | Returns |
---|
withBody | value: string | ResponseBuilder |
withDelay | milliseconds: number | ResponseBuilder |
withHeader | key: string | ResponseBuilder |
withJsonBody | value: object | ResponseBuilder |
withStatus | statusCode: object | ResponseBuilder |
withStatusMessage | statusMessage: string | ResponseBuilder |
withTransformer | transformerName: string | ResponseBuilder |
Example
await WireMockMapper.createMapping((req, res) => {
req.isAGet.withUrlPath.equalTo('/my/api/path');
res
.withJsonBody({
someKey: 'theValue',
otherKey: 'otherValue'
})
.withStatus(200)
.withStatusMessage('ok');
});
Get Requests Received
Get all requests
await WireMockMapper.getRequests();
Get all requests for a given stub id
await WireMockMapper.getRequests({ stubId: 'some_stub_id' });
The interface for the returned object can be found here.