public async Task RequestIsNotSplitIfLessThanOrEqualToMaxTest(int maxRequestSize, [Frozen] MiddlewareContext context) { var options = new WebApiRequestOptions { BulkQueryParameterIdsName = "ids", EndpointPath = "/some/endpoint", EndpointQuery = new Dictionary <string, string> { ["ids"] = "K1,K2,K3" } }; context.Request.Options.Returns(options); var elements = new[] { new Element { Id = "K1", Value = "V1" }, new Element { Id = "K2", Value = "V2" }, new Element { Id = "K3", Value = "V3" } }; var middleware = new RequestSplitterMiddleware { MaxRequestSize = maxRequestSize }; var response = await middleware.OnRequestAsync(context, (c, t) => { var ids = c.Request.Options.EndpointQuery["ids"].Split(','); ids.Should().HaveCountLessOrEqualTo(middleware.MaxRequestSize); ids.Should().BeEquivalentTo(elements.Select(x => x.Id)); IWebApiResponse innerResponse = new WebApiResponse(JsonSerializer.Serialize(elements)); return(Task.FromResult(innerResponse)); }); var actual = JsonSerializer.Deserialize <IList <Element> >(response.Content); actual.Should().BeEquivalentTo(elements); }
public async Task RequestIsNotSplitNotBulkTest([Frozen] MiddlewareContext context, [Frozen] IWebApiResponse response, Element element) { var options = new WebApiRequestOptions { BulkQueryParameterIdsName = "ids", EndpointPath = "/some/endpoint", EndpointQuery = new Dictionary <string, string>() }; context.Request.Options.Returns(options); string rawResponse = JsonSerializer.Serialize(element); response.Content.Returns(rawResponse); var middleware = new RequestSplitterMiddleware(); var finalResponse = await middleware.OnRequestAsync(context, (c, t) => Task.FromResult(response)); finalResponse.Should().BeEquivalentTo(response); }
public void MaxRequestSizeIsAtLeastOneTest() { var middleware = new RequestSplitterMiddleware(); Assert.Throws <ArgumentOutOfRangeException>("value", () => middleware.MaxRequestSize = 0); }