WireMock-Net / WireMock.Net

WireMock.Net is a flexible product for stubbing and mocking web HTTP responses using advanced request matching and response templating. Based on the functionality from http://WireMock.org, but extended with more functionality.
Apache License 2.0
1.37k stars 200 forks source link

Support OData #556

Open xadvfh opened 3 years ago

xadvfh commented 3 years ago

Is your feature request related to a problem? Please describe. Is there a way to support OData with the responses that we stub out in WireMock.Net?

Describe the solution you'd like Given I stub a request to return a specific response When a user requests the data with a OData query Then the response should only include the data the query specifies

Describe alternatives you've considered Stubbing every single query used

Is your feature request supported by WireMock (java version)? Please provide details. Only via stubbing each query

Additional context

72 talks about stubbing a specific OData query but I'm wondering if this is something that could be built in.

StefH commented 3 years ago

OData is just a specification.

With WireMock.Net you can stub any request and response.

Or do you have a different question?

xadvfh commented 3 years ago

I guess I was wondering if there is a way for wiremock to autogenerate the stubs based on a request. I'm not even sure if this is possible but here is what I had floating around in my head.

Assuming the response is a json object, if there was a stub like this:

server
    .Given(Request.Create()
        .WithPath($"/personal/api/v2/Accounts/11234567890")
        .UsingGet()
        .StubODataQueries());
    .RespondWith(Response.Create()
        .WithStatusCode(200)
        .WithHeader(ResponseConstants.ContentTypeKey, ResponseConstants.ContentTypeJson)
        .WithBodyAsJson(CreateResponse(accountSection)));

When a request matches that path but has an OData query attached to it, it would take the response that the user specified in WithBodyAsJson and create a new one based on the OData query.