Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regex support for JsonMatcher #1088

Closed
pluma9 opened this issue Mar 31, 2024 · 10 comments
Closed

Regex support for JsonMatcher #1088

pluma9 opened this issue Mar 31, 2024 · 10 comments
Assignees
Labels

Comments

@pluma9
Copy link

pluma9 commented Mar 31, 2024

Is your feature request related to a problem? Please describe.
I'd like to use regex in JsonMatcher (just like in JsonPartialMatcher)

Describe the solution you'd like
Add the option to turn on regex. Similar to: https://github.com/WireMock-Net/WireMock.Net/wiki/Request-Matching-JsonPartialMatcher#use-regex

Describe alternatives you've considered
No alternative solution I can think of

Is your feature request supported by WireMock (java version)? Please provide details.
I am not sure. Please let know if this is important. I can do some more research.

Additional context
No.

@pluma9 pluma9 added the feature label Mar 31, 2024
@StefH StefH self-assigned this Mar 31, 2024
@StefH
Copy link
Collaborator

StefH commented Apr 2, 2024

@pluma9
I'll see if this can be added easily.

Is there a reason you cannot use the JsonPartialMatcher ?

@pluma9
Copy link
Author

pluma9 commented Apr 3, 2024

Thanks. That is because I want to assert that the request contains exactly certain fields. Adding more fields may make the real API server returns an error.

@StefH
Copy link
Collaborator

StefH commented Apr 4, 2024

I've added this logic, can you please test preview version WireMock.Net.1.5.51-ci-18462?

See https://github.com/WireMock-Net/WireMock.Net/wiki/MyGet-preview-versions

@pluma9
Copy link
Author

pluma9 commented Apr 5, 2024

Thanks very much. It works great in terms of regex.

There seems to be a regression.
Given JsonMatcher:

{
  "Contact": {
    "Phone": "1234",
    "Street": "King Street"
  },
  "Info": {
    "Occupation": "Developer"
  }
}

In previous versions, it does not match the following body:

{
  "Contact": {
    "Phone": "1234",
    "Street": "King Street"
  },
  "Info": {
    "Occupation": "Developer"
  },
  "OtherInfo": {
    "NickName": "Jimmy"
  }
}

However, in WireMock.Net.1.5.51-ci-18462, it does

@StefH
Copy link
Collaborator

StefH commented Apr 5, 2024

I see.
Thanks for this observation.

I need to adjust the logic to match exact. I'll check tomorrow.

@StefH
Copy link
Collaborator

StefH commented Apr 6, 2024

@pluma9
It's fixed.

Can you please test preview WireMock.1.5.51-ci-18469 ?

@pluma9
Copy link
Author

pluma9 commented Apr 6, 2024

The previous case works great now.

However, there is one more case. Given the matcher above, the following body does not match (expected):

{
  "Contact": {
    "Phone": "1234",
    "Street": "King Street"
  },
  "Info": {
    "Occupation": "Dancer"
  }
}

The following body oddly matches:

{
  "Contact": {
    "Phone": "1234",
    "Street": "King Street"
  },
  "Info": {
    "Occupation": "Developer2"
  }
}

@StefH
Copy link
Collaborator

StefH commented Apr 6, 2024

All strings should be defined as valid regular expressions.

So in this case like this:

^Developer2$

@pluma9
Copy link
Author

pluma9 commented Apr 6, 2024

Ah, I see. Then things work great now.

I really appreciate your support.

@StefH
Copy link
Collaborator

StefH commented Apr 6, 2024

I'll merge the PR and create a new normal NuGet soon.

@StefH StefH closed this as completed Apr 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants