From f01edc56e9929c399c98d8e96b4db5b73f4730e9 Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Sun, 24 Jul 2022 16:01:44 +0200 Subject: [PATCH] Updated Request Matching JsonPartialMatcher (markdown) --- Request-Matching-JsonPartialMatcher.md | 63 ++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 8 deletions(-) diff --git a/Request-Matching-JsonPartialMatcher.md b/Request-Matching-JsonPartialMatcher.md index 4e6d079..03463e6 100644 --- a/Request-Matching-JsonPartialMatcher.md +++ b/Request-Matching-JsonPartialMatcher.md @@ -9,17 +9,17 @@ Matcher value ```csharp var server = WireMockServer.Start(); server - .Given(Request + .Given(Request .Create() - .WithPath("/jsonpartialmatcher1") - .WithBody(new JsonPartialMatcher("{ \"test\": \"abc\" }")) - .UsingPost()) - .WithGuid("debaf408-3b23-4c04-9d18-ef1c020e79f2") - .RespondWith(Response.Create().WithBody(@"{ ""result"": ""jsonpartialbodytest1"" }")); + .WithPath("/jsonpartialmatcher1") + .WithBody(new JsonPartialMatcher("{ \"test\": \"abc\" }")) + .UsingPost()) + .WithGuid("debaf408-3b23-4c04-9d18-ef1c020e79f2") + .RespondWith(Response.Create().WithBody(@"{ ""result"": ""jsonpartialbodytest1"" }")); ``` #### JSON Mapping option 1 -``` js +``` json { "Guid": "debaf408-3b23-4c04-9d18-ef1c020e79f2", "Request": { @@ -59,4 +59,51 @@ server #### IgnoreCase It's also possible to use set `IgnoreCase` to true, this means that the PropertNames and PropertyValues will be matched regarding any case. -Same logic as the normal JsonMatcher. \ No newline at end of file +Same logic as the normal JsonMatcher. + +#### Use Regex +It's possible to add a property `Regex` with the value `true`, with this option set, PropertyValues are matched using a specified regular expression. + +Example for C# when you want to match the `id` for any number. +```csharp +var server = WireMockServer.Start(); +server + .Given(Request + .Create() + .WithPath("/jsonpartialmatcher1") + .WithBody(new JsonPartialMatcher("{ \"id\": \"^\\d+$\" }", false, false, true)) + .UsingPost()) + .WithGuid("debaf408-3b23-4c04-9d18-ef1c020e79f2") + .RespondWith(Response.Create().WithBody(@"{ ""result"": ""jsonpartialbodytest1"" }")); +``` + +Or in JSON mapping: +``` json +{ + "Guid": "debaf408-3b23-4c04-9d18-ef1c020e79f2", + "Request": { + "Methods": [ + "post" + ], + "Body": { + "Matcher": { + "Name": "JsonPartialWildcardMatcher", + "Regex": true, // <--- add this property + "Pattern": { + "applicationId": "*", + "currency": "EUR", + "price": "^\\d*$", // <--- use regex + "externalId": "*", + "transactionDescription": "*", + }, + "IgnoreCase": false + } + } + }, + "Response": { + "StatusCode": 200, + "Body": "{ \"result\": \"jsonpartialbodytest1-with-regex\" }", + "UseTransformer": false + } +} +```