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

Introduce a flag to strictly enforce the http method #518

Open
StefH opened this issue Oct 12, 2020 · 8 comments
Open

Introduce a flag to strictly enforce the http method #518

StefH opened this issue Oct 12, 2020 · 8 comments
Labels

Comments

@StefH
Copy link
Collaborator

StefH commented Oct 12, 2020

#504

I did notice something else about partial match scores that seemed off. (probably requires a little redesign). For our team to continue using wiremock.net we need to trust that the Http VERB is ALWAYS respected. I've been noticing that, even when a post call is fired, Get matches are being favored (given higher scores) over POST calls (in this case because of the bug mentioned above, the POST call has a lower score because it is failing to match on the body matcher). This seems off. It should match on the highest score, for only a single verb type. I can't imagine a scenario where someone is okay with a get request/response being returned for a post call in an integration test??? That would be a broken integration test to me. Can we introduce a flag to strictly enforce just the verb?

@StefH StefH added the feature label Oct 12, 2020
@StefH StefH changed the title Introduce a flag to strictly enforce the verb (http method) Introduce a flag to strictly enforce the http method Oct 12, 2020
@StefH
Copy link
Collaborator Author

StefH commented Oct 12, 2020

@RiccoFerraro in this scenario ; do you use "AllowPartialMapping"?
https://github.com/WireMock-Net/WireMock.Net/wiki/Settings#allowpartialmapping

@RiccoFerraro
Copy link

Hi @StefH. Yes that is the case.

@RiccoFerraro
Copy link

Partial mapping is very useful, but I need to have partial mapping, only for the correct verb type

@RiccoFerraro
Copy link

RiccoFerraro commented Oct 12, 2020

Also @StefH would AllowPartialMapping = false ever work for a POST request with a json body given #504? It seems to return a 0 or the body matcher and reject all strict mapping when I try that

@StefH
Copy link
Collaborator Author

StefH commented Oct 12, 2020

Normally you would not use AllowPartialMapping (set it to false), only use AllowPartialMapping in special cases/scenarios.

If you have troubles matching a POST request with a JSON body --> please provide a full example project, so that I can investigate it because it should work as designed.

@StefH
Copy link
Collaborator Author

StefH commented Oct 26, 2020

@RiccoFerraro
Copy link

RiccoFerraro commented Oct 27, 2020

Hi @StefH , thanks for the response and for the idea. That is really cool. However, I'm not sure it works with my use case. I'm really trying to use record playback functionality as much as possible. In our case, Record/Playback is preferable because it allows us to mitigate unstable dependencies (api's). Stubbing out the endpoints becomes a maintenance nightmare with api's that change frequently. Is priority something that could be set for record playback as a flag somehow? I think the (probably) better solution that you already alluded to is going to be to refactor our integration tests which use wiremock's partial mapping to instead use strict mapping. That is dependent on post body request properties being correctly matched though. Is the fix for that published to nuget.org yet?

@StefH
Copy link
Collaborator Author

StefH commented Oct 27, 2020

About your last question : check the https://github.com/WireMock-Net/WireMock.Net/blob/master/CHANGELOG.md for that.

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