Stub Metadata

WARNING: This document is for an old WireMock 2.x baseline. See the documentation for the current WireMock 3.x baseline here

It is possible to attach arbitrary metadata to stub mappings, which can be later used to search or deletion, or simply retrieval.

Adding metadata to stubs #

Data under the metadata key is a JSON object (represented in Java by a Map<String, ?>). It can be added to a stub mapping on creation.

Java:

stubFor(get("/with-metadata")
      .withMetadata(metadata()
        .attr("singleItem", 1234)
        .list("listItem", 1, 2, 3, 4)
        .attr("nestedObject", metadata()
            .attr("innerItem", "Hello")
        )
));

JSON:

{
    "request": {
        "url": "/with-metadata"
    },
    "response": {
        "status": 200
    },

    "metadata": {
        "singleItem": 1234,
        "listItem": [1, 2, 3, 4],
        "nestedObject": {
            "innerItem": "Hello"
        }
    }
}

Search for stubs by metadata #

Stubs can be found by matching against their metadata using the same matching strategies as when matching HTTP requests. The most useful matcher for this is matchesJsonPath:

Java:

List<StubMapping> stubs =
    findStubsByMetadata(matchingJsonPath("$.singleItem", containing("123")));

API:

POST /__admin/mappings/find-by-metadata

{
    "matchesJsonPath" : {
      "expression" : "$.singleItem",
      "contains" : "123"
    }
}

Remove stubs by metadata #

Similarly, stubs with matching metadata can be removed:

Java:

removeStubsByMetadata(matchingJsonPath("$.singleItem", containing("123")));

API:

POST /__admin/mappings/remove-by-metadata

{
    "matchesJsonPath" : {
      "expression" : "$.singleItem",
      "contains" : "123"
    }
}

Remove request journal events by metadata #

See Removing items from the journal