public void SendAsync_UsesRouteDataFromRequestContext() { // Arrange Mock <HttpMessageHandler> doNotUseDefaultHandlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict); doNotUseDefaultHandlerMock.Protected().Setup("Dispose", true); using (HttpConfiguration configuration = new HttpConfiguration()) using (HttpMessageHandler doNoUseDefaultHandler = doNotUseDefaultHandlerMock.Object) using (HttpRoutingDispatcher dispatcher = new HttpRoutingDispatcher(configuration, doNoUseDefaultHandler)) using (HttpMessageInvoker invoker = new HttpMessageInvoker(dispatcher)) using (HttpRequestMessage expectedRequest = new HttpRequestMessage()) using (HttpResponseMessage expectedResponse = new HttpResponseMessage()) { SpyHttpMessageHandler routeHandler = new SpyHttpMessageHandler(expectedResponse); Mock <IHttpRoute> routeMock = new Mock <IHttpRoute>(MockBehavior.Strict); routeMock.Setup(r => r.Handler).Returns(routeHandler); Mock <IHttpRouteData> routeDataMock = new Mock <IHttpRouteData>(MockBehavior.Strict); routeDataMock.Setup(d => d.Route).Returns(routeMock.Object); routeDataMock.Setup(d => d.Values).Returns(new Dictionary <string, object>()); HttpRequestContext context = new HttpRequestContext(); context.RouteData = routeDataMock.Object; expectedRequest.SetRequestContext(context); // Act HttpResponseMessage response = invoker.SendAsync(expectedRequest, CancellationToken.None).Result; // Assert Assert.Same(expectedResponse, response); Assert.Same(expectedRequest, routeHandler.Request); } }
public void SendAsync_UsesRouteDataFromRequestContext() { // Arrange Mock<HttpMessageHandler> doNotUseDefaultHandlerMock = new Mock<HttpMessageHandler>(MockBehavior.Strict); doNotUseDefaultHandlerMock.Protected().Setup("Dispose", true); using (HttpConfiguration configuration = new HttpConfiguration()) using (HttpMessageHandler doNoUseDefaultHandler = doNotUseDefaultHandlerMock.Object) using (HttpRoutingDispatcher dispatcher = new HttpRoutingDispatcher(configuration, doNoUseDefaultHandler)) using (HttpMessageInvoker invoker = new HttpMessageInvoker(dispatcher)) using (HttpRequestMessage expectedRequest = new HttpRequestMessage()) using (HttpResponseMessage expectedResponse = new HttpResponseMessage()) { SpyHttpMessageHandler routeHandler = new SpyHttpMessageHandler(expectedResponse); Mock<IHttpRoute> routeMock = new Mock<IHttpRoute>(MockBehavior.Strict); routeMock.Setup(r => r.Handler).Returns(routeHandler); Mock<IHttpRouteData> routeDataMock = new Mock<IHttpRouteData>(MockBehavior.Strict); routeDataMock.Setup(d => d.Route).Returns(routeMock.Object); routeDataMock.Setup(d => d.Values).Returns(new Dictionary<string, object>()); HttpRequestContext context = new HttpRequestContext(); context.RouteData = routeDataMock.Object; expectedRequest.SetRequestContext(context); // Act HttpResponseMessage response = invoker.SendAsync(expectedRequest, CancellationToken.None).Result; // Assert Assert.Same(expectedResponse, response); Assert.Same(expectedRequest, routeHandler.Request); } }