コード例 #1
0
        public void WhenUseDataTokensThenSetValue()
        {
            var value = new RouteValueDictionary();
            var route = new AbsoluteRoute("{controller}/{action}/{id}", dataTokens: value);

            route.DataTokens.Should().Be.SameInstanceAs(value);
        }
コード例 #2
0
        public void WhenUseConstraintsThenSetValue()
        {
            var value = new RouteValueDictionary();
            var route = new AbsoluteRoute("{controller}/{action}/{id}", constraints: value);

            route.Constraints.Should().Be.SameInstanceAs(value);
        }
コード例 #3
0
        public void WhenUrlPatternHasValuesThenSetValue()
        {
            string pattern = "{controller}/{action}/{id}";
            var    route   = new AbsoluteRoute(pattern);

            route.UrlPattern.Should().Be(pattern);
        }
コード例 #4
0
        public void WhenNoMatchThenNull()
        {
            var route   = new AbsoluteRoute("fixedvalue/{action}/{id}");
            var context = "http://acme.com/pizza".AsUri().ToHttpContext();

            route.GetRouteData(context).Should().Be.Null();
        }
コード例 #5
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);
        }
コード例 #6
0
        public void WhenMatchThenAssignRoute()
        {
            var route     = new AbsoluteRoute("{controller}/{action}/{id}");
            var context   = "http://acme.com/pizza/calda/1".AsUri().ToHttpContext();
            var routedata = route.GetRouteData(context);

            routedata.Route.Should().Be.SameInstanceAs(route);
        }
コード例 #7
0
        public void WhenNoMatchWithQueryStringThenNull()
        {
            var route     = new AbsoluteRoute("http://{*host}/{category}");
            var context   = "http://acme.com/?p=5".AsUri().ToHttpContext();
            var routedata = route.GetRouteData(context);

            routedata.Should().Be.Null();
        }
コード例 #8
0
        public void WhenNoMatchByConstraintsThenNull()
        {
            var route     = new AbsoluteRoute("{controller}/{action}/{id}", constraints: new RouteValueDictionary(new { controller = "nomatch" }));
            var context   = "http://acme.com/pizza/calda/1".AsUri().ToHttpContext();
            var routedata = route.GetRouteData(context);

            routedata.Should().Be.Null();
        }
コード例 #9
0
        public void WhenSchemeAndHostHasJustCatchAllWithNoValueThenUseContextAsDefault()
        {
            var context        = "https://ar.acme.com/pizza".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("{scheme}://{*domain}");
            var virtualPath = route.GetVirtualPath(requestContext, null);

            virtualPath.VirtualPath.Should().Be("https://ar.acme.com/");
        }
コード例 #10
0
        public void WhenNoMatchByConstraintsThenNull()
        {
            var context        = "http://acme.com/pizza/calda/1".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("{controller}/{action}/{id}", constraints: new RouteValueDictionary(new { controller = "nomatch" }));
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { controller = "pizza", action = "calda", id = 1 }));

            virtualPath.Should().Be.Null();
        }
コード例 #11
0
        public void WhenNoVariableValeAndNewsValuesAreNotEqualsThenNull()
        {
            var context        = "http://acme.com".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("SomeController/{action}/{id}", new RouteValueDictionary(new { controller = "SomeController", action = "someaction", id = 1 }));
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { controller = "pizza", id = 1 }));

            virtualPath.Should().Be.Null();
        }
コード例 #12
0
        public void WhenHostHasCatchAllWithValueThenUseValue()
        {
            var context        = "http://ar.acme.com/pizza".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("{topLevelDomain}.{*domain}");
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { topLevelDomain = "cl", domain = "google.net" }));

            virtualPath.VirtualPath.Should().Be("http://cl.google.net/");
        }
コード例 #13
0
        public void WhenPathWithRequiredParamWithoutValueThenNull()
        {
            var context        = "http://acme.com".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("{controller}/{action}/{id}");
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { controller = "pizza", id = 1 }));

            virtualPath.Should().Be.Null();
        }
コード例 #14
0
        public void WhenHostAndPathMatchThenCreateAbsolutePath()
        {
            var context        = "http://acme.com".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("http://{host}.com/{controller}/{action}/{id}");
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { controller = "pizza", action = "calda", id = 1, host = "acme" }));

            virtualPath.Route.Should().Be.SameInstanceAs(route);
            virtualPath.VirtualPath.Should().Be("http://acme.com/pizza/calda/1");
        }
コード例 #15
0
        public void WhenMatchThenCopyDataTokens()
        {
            var route     = new AbsoluteRoute("{controller}/{action}/{id}", dataTokens: new RouteValueDictionary(new { a = 1, b = 2 }));
            var context   = "http://acme.com/pizza/calda/1".AsUri().ToHttpContext();
            var routedata = route.GetRouteData(context);
            var tokens    = routedata.DataTokens;

            tokens.Should().Not.Be.Null();
            tokens["a"].Should().Be(1);
            tokens["b"].Should().Be(2);
        }
コード例 #16
0
        public void WhenPathMatchCaseInsensitiveThenCreateRelativePath()
        {
            var context        = "http://acme.com".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("{controller}/{action}/{id}");
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { Controller = "pizza", Action = "calda", ID = 1 }));

            virtualPath.Route.Should().Be.SameInstanceAs(route);
            virtualPath.VirtualPath.Should().Be("pizza/calda/1");
        }
コード例 #17
0
        public void WhenHostMatchThenCreateAbsolutePathWithSchemeFromContext()
        {
            var context        = "https://acme.com".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("http://{host}.com/{controller}/{action}", defaults: new RouteValueDictionary(new { controller = "Home", action = "Index" }));
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { host = "acme", page = 10 }));

            virtualPath.Route.Should().Be.SameInstanceAs(route);
            virtualPath.VirtualPath.Should().Be("https://acme.com/?page=10");
        }
コード例 #18
0
        public void WhenMatchThenAssignValues()
        {
            var context        = "http://acme.com/pizza/calda/1".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("{controller}/{action}/{id}", constraints: new RouteValueDictionary(new { controller = "pazza|pizza" }));
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { controller = "pizza", action = "calda", id = 1 }));

            virtualPath.Route.Should().Be.SameInstanceAs(route);
            virtualPath.VirtualPath.Should().Be("pizza/calda/1");
        }
コード例 #19
0
        public void WhenPathContainsCostantsThenCreateRelativePath()
        {
            var context        = "http://acme.com".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("{controller}/bubu/{id}");
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { controller = "pizza", id = 1 }));

            virtualPath.Route.Should().Be.SameInstanceAs(route);
            virtualPath.VirtualPath.Should().Be("pizza/bubu/1");
        }
コード例 #20
0
        public void WhenPathMatchAndHasAdditionalValuesThenCreateRelativePathWithQueryString()
        {
            var context        = "http://acme.com".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("{controller}/{action}");
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { controller = "pizza", action = "calda", topLevelDomain = "xx", currentPage = 2 }));

            virtualPath.Route.Should().Be.SameInstanceAs(route);
            virtualPath.VirtualPath.Should().Be("pizza/calda?topLevelDomain=xx&currentPage=2");
        }
コード例 #21
0
        public void WhenHostMatchThenCreateAbsolutePathWithSchemeFromContext()
        {
            var context        = "https://acme.com".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("{host}.com/{controller}");
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { host = "acme", controller = "pizza" }));

            virtualPath.Route.Should().Be.SameInstanceAs(route);
            virtualPath.VirtualPath.Should().Be("https://acme.com/pizza");
        }
コード例 #22
0
        public void WhenMatchThenAssignValues()
        {
            var route     = new AbsoluteRoute("{controller}/{action}/{id}", constraints: new RouteValueDictionary(new { controller = "pazza|pizza" }));
            var context   = "http://acme.com/pizza/calda/1".AsUri().ToHttpContext();
            var routedata = route.GetRouteData(context);

            routedata.Values.Should().Not.Be.Null();
            routedata.Values["controller"].Should().Be("pizza");
            routedata.Values["action"].Should().Be("calda");
            routedata.Values["id"].Should().Be("1");
        }
コード例 #23
0
        public void WhenHostMatchAndRouteHasDefaultsThenCreateAbsolutePathWithoutNotNeededDefaults()
        {
            // when has default and values are not explicitly defined then does not use those values to create the URL
            var context        = "https://acme.com".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("http://{host}.com/{controller}/{action}", defaults: new RouteValueDictionary(new { controller = "Home", action = "Index" }));
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { host = "acme" }));

            virtualPath.Route.Should().Be.SameInstanceAs(route);
            virtualPath.VirtualPath.Should().Be("https://acme.com/");
        }
コード例 #24
0
        public void WhenHostHasDefaultsAndValuesThenUseValues()
        {
            // when has default and some values are explicitly defined then use defaults and values to create the URL
            var context        = "https://acme.com".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("http://{host}.com/{controller}/{action}", defaults: new RouteValueDictionary(new { host = "acme", controller = "Home", action = "Index" }));
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { host = "bubu" }));

            virtualPath.Route.Should().Be.SameInstanceAs(route);
            virtualPath.VirtualPath.Should().Be("https://bubu.com/");
        }
コード例 #25
0
        public void WhenHasDefaultsAndValuesAndContextThenDoesNotUseContextForNotRequiredParameters()
        {
            // when has default and some values are explicitly defined then use defaults and values to create the URL
            var context        = "https://something.acme.com/Super/Action/1234".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("{subdomain}.acme.com/{controller}/{action}/{id}", defaults: new RouteValueDictionary(new { controller = "Home", action = "Index", id = string.Empty }));
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { controller = "Pizza" }));

            virtualPath.Route.Should().Be.SameInstanceAs(route);
            virtualPath.VirtualPath.Should().Be("https://something.acme.com/Pizza");
        }
コード例 #26
0
        public void WhenMatchRouteContainsDataTokensThenCopyDataTokens()
        {
            var context        = "http://acme.com".AsUri().ToHttpContext();
            var requestContext = new RequestContext(context, new RouteData());

            var route       = new AbsoluteRoute("{controller}/{action}/{id}", dataTokens: new RouteValueDictionary(new { a = 1, b = 2 }));
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { controller = "pizza", action = "calda", id = 1 }));
            var tokens      = virtualPath.DataTokens;

            tokens.Should().Not.Be.Null();
            tokens["a"].Should().Be(1);
            tokens["b"].Should().Be(2);
        }
コード例 #27
0
        public void WhenPathMatchThenOverrideValuesInRouteData()
        {
            var context   = "http://acme.com/pizza/calda/1".AsUri().ToHttpContext();
            var routeData = new RouteData();

            routeData.Values.Add("controller", "pizza");
            var requestContext = new RequestContext(context, routeData);

            var route       = new AbsoluteRoute("{controller}/{action}/{id}");
            var virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { controller = "tepiso", action = "calda", id = 1 }));

            virtualPath.Route.Should().Be.SameInstanceAs(route);
            virtualPath.VirtualPath.Should().Be("tepiso/calda/1");
        }
コード例 #28
0
 internal static IAbsoluteFilePath AsFilePath(this string pathString, AbsoluteRoute routingBase)
 {
     return(AsFilePath(pathString,
                       () => routingBase.GetFilePath(pathString),
                       ext => routingBase.GetFilePathWithExtension(pathString, ext)));
 }