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));
                                }
        }
Ejemplo n.º 2
0
        public void WhenUseRouteHandlerThenSetValue()
        {
            string pattern            = "{controller}/{action}/{id}";
            var    stopRoutingHandler = new StopRoutingHandler();
            var    route = new AbsoluteRoute(pattern, routeHandler: stopRoutingHandler);

            route.RouteHandler.Should().Be(stopRoutingHandler);
        }
Ejemplo n.º 3
0
        public void StopRoutingHandlerDefault()
        {
            StopRoutingHandler srh = new StopRoutingHandler();

            IRouteHandler rh = srh as IRouteHandler;

            Assert.NotNull(rh);
            Assert.Throws <NotSupportedException>(() => rh.GetHttpHandler(null));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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));
        }