public void SendAsync_IgnoreRoute_UsesRouteDataWithStopRoutingHandlerFromRequestContext() { // 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()) { HttpMessageHandler routeHandler = new StopRoutingHandler(); 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.Equal(response.StatusCode, HttpStatusCode.NotFound); Assert.True(response.RequestMessage.Properties.ContainsKey(HttpPropertyKeys.NoRouteMatched)); } }
public void WhenUseRouteHandlerThenSetValue() { string pattern = "{controller}/{action}/{id}"; var stopRoutingHandler = new StopRoutingHandler(); var route = new AbsoluteRoute(pattern, routeHandler: stopRoutingHandler); route.RouteHandler.Should().Be(stopRoutingHandler); }
public void StopRoutingHandlerDefault() { StopRoutingHandler srh = new StopRoutingHandler(); IRouteHandler rh = srh as IRouteHandler; Assert.NotNull(rh); Assert.Throws <NotSupportedException>(() => rh.GetHttpHandler(null)); }
public void WhenMatchThenAssignRouteHandler() { var stopRoutingHandler = new StopRoutingHandler(); var route = new AbsoluteRoute("{controller}/{action}/{id}", routeHandler: stopRoutingHandler); var context = "http://acme.com/pizza/calda/1".AsUri().ToHttpContext(); var routedata = route.GetRouteData(context); routedata.RouteHandler.Should().Be.SameInstanceAs(stopRoutingHandler); }
public static Route GetRouteForElement(RouteDefinition route) { IRouteHandler handler; RouteValueDictionary defaults = new RouteValueDictionary(); RouteValueDictionary restrictions = new RouteValueDictionary(); if (String.IsNullOrEmpty(route.VirtualPath)) { if (route.RouteHandler == null) { //Stop Route ... handler = new StopRoutingHandler(); } else { handler = route.RouteHandler; } } else { handler = new mojoPortal.RouteHelpers.RoutingHandler(route.VirtualPath); } foreach (RouteDefault d in route.RouteDefaults) { defaults.Add(d.ParameterName, d.DefaultValue); } foreach (RouteRestriction r in route.RouteRestrictions) { restrictions.Add(r.ParameterName, r.Restriction); } return(new Route(route.RouteUrl, defaults, restrictions, handler)); }