https://www.wiremock.io logo
Join Slack
Powered by
# help
  • b

    Bryson Edwards

    04/23/2025, 6:20 PM
    Hi team, is there a way to auto forward the request to actual API if there is no mock for that api available? A team member of mine mentioned that this was possible in an earlier version but they said when we moved to the docker deployment of wiremock the import feature stopped working
    l
    • 2
    • 1
  • a

    Alex Jircan

    04/24/2025, 9:05 AM
    Hello team, I noticed that we can retrieve requests by matching the stub ID, as mentioned here: https://wiremock.org/docs/verifying/#filtering-events. However, it seems we can't delete requests using the stub ID, according to this section: https://wiremock.org/docs/verifying/#removing-items-from-the-journal Am I missing something, or should I go ahead and open an issue on GitHub?
    t
    • 2
    • 1
  • a

    Abhishek R Prasad

    04/25/2025, 8:14 AM
    Hello Team, I am using the latest version of Wiremock which I have deployed on Kubernetes. I am using this to perform Load Tests on a particular application. I noticed that the Memory utilization does not go down once the load tests are complete. Is this an expected behaviour from Wiremock or am I missing something?
    l
    • 2
    • 9
  • e

    Ediba Zugor

    04/25/2025, 9:35 AM
    Hello Team, I am currently using Wiremock for our development process. I am getting a request token in the serveEventListeners ( code is below ) . I have my request token inside of originalRequest.query.token ( tested it and it works correctly ), then I want to extract the middle part of the jwt token with regexExtract (code below again), but the problem is that the 'parts.1' doesn't work at all. I tried multiple versions like just using 1 etc, but nothing works. Does somebody know what the problem may be?
    Copy code
    "serveEventListeners": [
        {
          "name": "webhook",
          "parameters": {
            "method": "POST",
            "url": "https://......",
            "headers": {
              "Accept": "application/json; charset=utf-8; version=1",
              "Content-Type": "application/json"
            },
            "body": "{\"test\": \"{{regexExtract originalRequest.query.token '^[^.]+\\.([^.]+)\\..*$' 'parts.1'}}\"}"
    
          }
        }
      ]
    l
    • 2
    • 12
  • m

    Mitch Smith

    04/25/2025, 6:47 PM
    does anyone have experience with using this Wiremock CSV extension? I am trying to set it up in Wiremock Open Source (in Docker). https://github.com/massamany/WireMockCsv I've got the extension
    .jar
    in the
    /var/wiremock/extensions
    folder, but it doesn't seem to load the extension (rebuilt image, recreated container, and startup log displays all my other exceptions but not this one) edit - answered my own question 🙂
    ✅ 1
    • 1
    • 4
  • e

    Ed

    04/29/2025, 7:53 AM
    Hi all,
  • e

    Ed

    04/29/2025, 7:57 AM
    I'm using wiremock in standalone mode to proxy request to another server and to remove the Authorization header before sending the request to the other server. The proxy works well but the Authorization header is not remove. I start wiremock with this command line:
    java -jar .\wiremock-standalone-3.13.0.jar --print-all-network-traffic
    I have a json file in the mappings directory that configure the proxy and should remove Authorization header:
    Copy code
    {
      "request": {
        "method": "POST",
        "url": "/notification"
      },
      "response": {
        "proxyBaseUrl": "<http://localhost:8081>",
        "removeProxyRequestHeaders": [
          "Authorization"
        ]
      }
    }
    but at the end, the Authorization header is still sent to the final server did I miss anything?
    l
    • 2
    • 8
  • a

    Abhishek R Prasad

    04/30/2025, 6:10 AM
    Hi Team , I received this error when I tried to create a stub which has dynamic response based on the value of a query parameter sent in the request. Here's the Stub creation request :
    Copy code
    curl --request POST \   --url <http://localhost:8080/__admin/mappings> \   --header 'content-type: application/json' \   --data '{   "priority": 15,   "request": {     "method": "GET",     "urlPath": "/reports/awb/tracking",     "queryParameters": {       "clientId": {         "equalTo": "323245"       },       "language": {         "equalTo": "en"       },       "awb[]": {         "matches": ".+"       }     }   },   "response": {     "status": 200,     "headers": {       "Content-Type": "application/json"     },     "jsonBody": {         "status": "success",         "data": [           {             "awbNumber": "{{request.query.awb[0]}}",             "content": "test",             "confirmation": {               "name": "test",               "date": "2023-03-06 13:58"             },             "returnAwbNumber": null,             "events": [               {                 "id": "H4",                 "name": " Shipment sorted on the belt",                 "location": "Bucharest",                 "date": "2023-03-01 04:46:46"               },               {                 "id": "H10",                 "name": " Shipment in transit towards the destination warehouse ",                 "location": "Bucharest",                 "date": "2023-03-01 05:19:10"               }             ]           }         ]       },     "transformers": [       "response-template"     ]   },   "persistent": true }'
    I have deployed Wiremock using Flux (kubernetes) and I am using the below arguments :
    Copy code
    args:
      - "--no-request-journal"
      - "--disable-request-logging"
      - "--max-template-cache-entries=50"
      - "--local-response-templating"
      - "--root-dir"
      - "/mnt/azure"
    not sure why "--local-response-templating" does not work in this case. Could you please let me know how I can fix this 🙂 .
    l
    • 2
    • 2
  • c

    Claudio Waldvogel

    04/30/2025, 9:58 PM
    Hi, I'm trying to implement a custom WebhookTransformer to sign a request body with a secretKey. The transformer is porperly invoked before dispatching the webhook. But it is always invoked as soon as the transformer is registered. Is it possible to limit invocation only to stubs where it is explicitly defined? Code of the transformer:
    Copy code
    public class WebhookSigningExtension implements WebhookTransformer {
    
    
        @Override
        public WebhookDefinition transform(ServeEvent serveEvent, WebhookDefinition webhookDefinition) {
            System.out.println("WebhookSigningExtension: transform called");
            return webhookDefinition;
        }
    
        @Override
        public String getName() {
            return "webhook-signer";
        }
    }
    Code to test the transformer:
    Copy code
    public class Main {
    
        public static void main(String[] args) {
            WireMockServer wireMockServer = new WireMockServer(
                    WireMockConfiguration.options().port(8080).extensions(new WebhookSigningExtension())
            );
    
            wireMockServer.start();
    
            wireMockServer.stubFor(<http://WireMock.post|WireMock.post>(WireMock.urlPathEqualTo("/webhook"))
                    .willReturn(WireMock.ok())
                    .withServeEventListener("webhook", Webhooks.webhook()
                            .withMethod(<http://RequestMethod.POST|RequestMethod.POST>)
                            .withUrl("<http://localhost:9898/webhook/test>")
                            .withHeader("Content-Type", "application/json")
                            .withBody("{ \"result\": \"SUCCESS\" }"))
            );
    
        }
    }
    Do I have to implement the logic to enabled/disable the transformer by passing custom parameter? Thanks in advance, Claudio
    t
    a
    • 3
    • 3
  • p

    Patrick Davy

    05/01/2025, 4:27 PM
    Hello, I've got a bit of an issue deploying wiremock as an appservice in azure... We're using wiremock to act as a stub for a training mode in our app. The plan was to build our own image with the json config baked in, that works fine locally. It also works fine when I build/push to our azure container registry from our pipelines and pull locally. Now when it comes to deploying into an azure app service, the server responds but all of our mapping config isn't in the
    home/wiremock
    directory anymore, it's exactly the same image as the one I pulled and tested locally. Any ideas what's going on here or potential avenues of investigation?
    • 1
    • 1
  • b

    Barns Anderson

    05/05/2025, 4:46 AM
    Hey folks, so I'm getting to grips with WireMock, I'm using the Java version 3.12.1 in a Kotlin project with the GraphQL extension. The thing I'm having trouble with is the
    BackingStore
    . I've read that it is specified in the options when we initialise a WireMockServer like this:
    Copy code
    WireMockConfiguration config = WireMockConfiguration.options()
        .port(8080)
        .backingStore(new FileBasedBackingStore("wiremock_data"));
    WireMockServer wireMockServer = new WireMockServer(config);
    wireMockServer.start();
    Where the
    FileBasedBackingStore
    is imported from here:
    com.github.tomakehurst.wiremock.store.file.FileBasedBackingStore
    . However the package structure has changed since then. Is the BackingStore no longer a thing? Best wishes and many thanks in advance.
    l
    t
    • 3
    • 8
  • a

    Andreas Winter

    05/06/2025, 11:28 AM
    Hello everyone. I have following setup. While this works fine for a keystore with just one keypair inside, it does not when my keystore has multiple values. I dont find a way to configure, which alias to choose. I already wanted to create a Merge Request for it but I cant build it. So question first here: Is there currently really no way to configure the alias to choose from a keystore? Actually keystores are used to store multiple keys, arent they?
    Copy code
    wireMockConfig()
    .[...]
    .keystorePath(<somePath>)
    .keystoreType(KEYSTORE_TYPE)
    .keystorePassword(KEYSTORE_PASSWORD)
  • r

    Ravi Shankar Reddy Kanakaveedu

    05/08/2025, 10:26 AM
    Hello, We are using Spring Boot. For integration Testing we are using Cucumber with WireMock. We want to implement recording and playback feature in our integration tests. We have our mocks added to
    mappings
    and
    __files
    folders. When
    Recording
    is enabled we could see actual API call is being made and
    recordings/stubMappings
    are saved in
    mappings
    and
    __files
    , but we want to update existing
    mappings
    instead of creating
    new files in mappings and __files
    folder. Can someone let us know if it is possible?
  • r

    rishi

    05/09/2025, 4:11 AM
    Hello, I need to start a wm server using standalone jar, along with it I have to add the behavior of wm extensions to the same server. But I cannot use custom extension jar as the remote machine I am using doesn't allow custom jars to be stored in it for security reasons. I'm currently exploring the ways to add extensions without using the jar (by using .class files or something) Can someone help me with this?
    t
    t
    • 3
    • 6
  • m

    Manish Arora

    05/12/2025, 10:43 AM
    Hello, How can we mention in request mapping if a query parameter should not be null or mandatory Currently I have defined query parametere like
    Copy code
    "urlPathPattern": "/v3/item*",
    "queryParameters": {
      "item": {
        "doesNotMatch": "^00000000[1-2]$"
      }
    }
    but it's also matching with another type of request
    Copy code
    "urlPathPattern": "/v3/item*",
    "queryParameters": {
      "product": {
        "equalTo": "12312321421"
      }
    }
    My understanding is that because in second json request item is null but it's satisfying condition for
    Copy code
    "doesNotMatch": "^00000000[1-2]$"
    which is why wiremock is responding with stub mapped to first reques while ideally it should respond with stub for second mapping. I know with priority this can fixed but in my application already priorities are set and getting messed up. Does wiremock provide anything for such scenario ?
  • a

    Anil Mullamuri

    05/13/2025, 8:31 AM
    Hello, i am using record/ playback, i am recording multiple url's same time, i want a specific url to stop recording based on conditions is there anyway to do it, i am using wiremock standalone 3.10.0 version in spring boot
  • j

    junwei chen

    05/14/2025, 1:44 AM
    Hello, I would like to ask about using WireMock. It uses a proxy to send requests to the target server, but the server has IP restrictions, allowing only certain IPs to access it. Thus, I can't send requests using the WireMock proxy. Is there a way to resolve this issue?
    t
    • 2
    • 2
  • e

    Ekaterina Blech

    05/15/2025, 12:29 PM
    Hi there, could please someone help me with the docker & createNewStub issue, I'll add now some details in the thread
    l
    v
    • 3
    • 23
  • t

    ty

    05/17/2025, 3:53 PM
    i'm trying to use wiremock to facilitate mocking a variety external apis in tests via recordings/replay (something like ruby's vcr library). what would be the simplest set of wiremock extensions (or better yet, built-in functionality) to capture and pass something like a uuid through a sequence of requests obtained via recording, such that the recording can be played back in a uuid-independent way. would a
    StubRequestFilterV2
    be suitable for doing something like this? one that re-writes the body the of the requests using information passed to the transformers via the specific test? (oops posted in the wrong spot, also details in thread)
    • 1
    • 1
  • j

    Jonathan Pink

    05/19/2025, 11:51 AM
    Hi, I am having some trouble using the
    absent
    feature with
    matchesJsonPath
    when attempting to filter request logs. I'll explain below 👍 if I check equality of the
    $.entitlementId
    alone returns 1 request. Request:
    Copy code
    POST /requests/count
    {
        "method": "POST",
        "urlPathPattern": "/merchant-entitlement/ns/804c2d9f-3689-4095-8403-fd0525fb834b/entitlements",
        "bodyPatterns": [
            {
                "matchesJsonPath": {
                    "expression": "$.entitlementId",
                    "equalTo": "e331678d-160a-4530-a966-57341666b0b2"
                }
            }
        ]
    }
    Response:
    200 OK
    Copy code
    {
      "count": 1,
      "requestJournalDisabled": false
    }
    So this is evidence that the property appears in the log and is equal. if I switch it to use
    absent
    My expectation is that this will check if the field itself exists - so I perform the following request:
    Copy code
    POST /requests/count
    {
        "method": "POST",
        "urlPathPattern": "/merchant-entitlement/ns/804c2d9f-3689-4095-8403-fd0525fb834b/entitlements",
        "bodyPatterns": [
            {
                "matchesJsonPath": {
                    "expression": "$.entitlementId",
                    "absent": false
                }
            }
        ]
    }
    Response:
    200 OK
    Copy code
    {
      "count": 0,
      "requestJournalDisabled": false
    }
    My thinking here that I am checking to ensure the property exists - which it does since the request first request for field equality returns a count of 1. If I change the above request to
    "absent":"true"
    I would expect it to return the above response like it does e.g
    "count":0
    . I've tried looking for more information about how
    absent
    works but haven't been able to locate it so I'm hoping someone here can support 🙏 thank you Further note: before I went down a bit of a rabbit hole here - my core requirement was to use this endpoint to ensure fields in requests do not exist e.g.
    Copy code
    entitlementId == xyz && otherFields does not exist
    I'm unsure if this is possible, and if not - is there another way? wiremock server - docker - wiremock:3.4.1-2
    t
    l
    • 3
    • 23
  • r

    Ricardo Moura

    05/22/2025, 2:14 AM
    Hi all! So I'm running standalone WireMock and I've ran into a use case. I wonder if you guys can give me any insight. I'll leave it in the thread.
    l
    • 2
    • 4
  • v

    Vadim Chekulaev

    05/23/2025, 12:18 PM
    Hello. I want to use Wiremock to mock several parties. Let's say I have a payment service and there's integration with several PSP - Paypal, Ingenico, etc. So I want to use Wiremock to mock Paypal and Ingenico. I have a dedicated test environment to run my e2e autotests on it. Should I put 2 independent instances of Wiremock there? I.e., paypal-mock.mydomain.local and ingenico-mock.mydomain.local? What if I have 50 dependencies? Do I need to run 50 Wiremocks? Is it possible to mock 50 dependencies with one instance of Wiremock? I can route requests to different mappings with URL path or some header, but it doesn't seem to be a good solution (unnecessary changes to my app code). And I don't have any idea, how to route requests in other way.
    b
    • 2
    • 3
  • b

    Benoit LEFEVRE -CAMPUS-

    05/23/2025, 1:17 PM
    Hi Wiremock users ! 👋 I’m using Wiremock for some Spring Boot API integration tests, with the JUnit
    WireMockExtension
    I’ve noticing that whenever the json to return is designated with a
    bodyFileName
    that points to a missing file, this error have WM server still returning an answer, but in text/html content type, with the call stack in the HTML body It’s somehow a bit puzzeling because whenever no stubs match the requested ressource, an error is produced in the log console ... if we use a
    ConsoleNotifier
    to get extra WM informations while tuning our test’s mocks Is there any way to configure the WM extension in order to also have the missing files exceptions being reported on the console ?
  • d

    Deepak Jayakumar

    05/27/2025, 5:59 PM
    Hi, Request matching needs to separate out query params so we match only against the query param keys and not the values. Any suggestions on how to handle this? I tried Wiremock Extension to capture the stubs and modify the content with the regex but seems like its complicated. If I have 3 different query params and I need to match only the key for the first query param and leave the others.
  • v

    Vishnu

    05/28/2025, 10:43 AM
    I have upgraded WireMock.Net from version 1.4.9 to 1.8.9. After that i am facing an issue with SendAsync with Post method. It is always returning 404 "Not Found". It was working as expected which returning 200 "OK" Can some one please help me to fix the issue!
  • p

    Pieter Hagedoorn

    05/28/2025, 1:39 PM
    Good afternoon, I am trying to mock a grpc service in the standalone version of wiremock, but there seems to be something going wrong with the response encoding. This is my mapper:
    Copy code
    {
      "name": "aanroep splunk geeft 200 OK",
      "priority": 5,
      "request": {
        "urlPath": "/nl.bkwi.audit.log.grpc.v0100.AuditLog_v0100Service/AuditLogRequest",
        "method": "POST"
      },
      "response": {
        "status": 200,
        "headers": {
          "content-type": "application/grpc",
          "grpc-status-name": "OK"
        },
        "body": "{\"message\": \"hi\"}",
        "transformers": [
          "response-template"
        ]
      }
    }
  • p

    Pieter Hagedoorn

    05/28/2025, 1:40 PM
    this is what happens when I run a query:
    Copy code
    grpcurl -plaintext \
            -d '{"key":"message1", "arguments":["argument1","argument2"]}' \
            -proto AuditServiceV1.proto \
    -import-path target/protoc-dependencies/ec4b3d39b9b3c3f5186cf878d88e0a4e/nl/bkwi/specification/proto \
            -H "X-correlation-id: 1" -v\
            localhost:8088  nl.bkwi.audit.log.grpc.v0100.AuditLog_v0100Service/AuditLogRequest
    
    Resolved method descriptor:
    rpc AuditLogRequest ( .nl.bkwi.audit.log.grpc.v0100.AuditLogRecord ) returns ( .nl.bkwi.audit.log.grpc.v0100.AuditLogResponse ) {
      option (.google.api.http) = { post: "/AuditLog_v0200/AuditLogRequestV2" };
    }
    
    Request metadata to send:
    x-correlation-id: 1
    
    Response headers received:
    content-type: application/grpc
    grpc-status-name: OK
    matched-stub-id: 5e78e4f5-d7b9-4dd6-8e90-3bd1b7e84b29
    matched-stub-name: aanroep splunk geeft 200 OK
    
    Response trailers received:
    (empty)
    Sent 1 request and received 0 responses
    ERROR:
      Code: ResourceExhausted
      Message: grpc: received message larger than max (577594739 vs. 4194304)
  • p

    Pieter Hagedoorn

    05/28/2025, 1:41 PM
    What could I be doing wrong? There is nothing in the logs indicating that something is going wrong
  • j

    Jesus Perez

    05/29/2025, 2:07 PM
    Hi everyone 👋 I'm using WireMock in standalone mode (via
    wiremock-standalone.jar
    ), configured to act as an HTTPS proxy using:
    Copy code
    --https-port 8443 --enable-browser-proxying
    I noticed that WireMock generates a dynamic self-signed CA, and exposes the root certificate at:
    Copy code
    /__admin/certs/wiremock-ca.crt
    This works fine, I can trust the CA in my clients and avoid SSL errors when intercepting HTTPS traffic. However, I'm looking for a way to use a custom or persistent CA, so I don’t have to re-export and re-trust the CA every time WireMock restarts... Does anyone know if there's a way to: 1. Provide a custom CA in standalone mode? 2. Or at least reuse a previously generated CA? I’m aware this can be done when embedding WireMock as a Java library (
    caKeystorePath
    , etc.), but I’d prefer to keep using the standalone JAR if possible. Thanks in advance!
    • 1
    • 1
  • d

    Deepak Jayakumar

    06/02/2025, 5:00 PM
    Hi Team - (Reposting)Would love to hear your thoughts on this. Request matching needs to separate out query params so we match only against the query param keys and not the values. Any suggestions on how to handle this? I tried Wiremock Extension to capture the stubs and modify the content with the regex but seems like its complicated. If I have 3 different query params and I need to match only the key for the first query param and leave the others.