public void MapRoute3WithNameSpaces()
        {
            // Arrange
            RouteCollection routes = new RouteCollection();

            //string[] namespaces = new string[] { "nsA.nsB.nsC", "ns1.ns2.ns3" };

            // Act
            routes.MapRoute("RouteName", "SomeUrl", _nameSpaces);

            // Assert
            Route route = Assert.Single(routes.Cast <Route>());

            Assert.NotNull(route);
            Assert.NotNull(route.DataTokens);
            Assert.NotNull(route.DataTokens["Namespaces"]);
            string[] routeNameSpaces = route.DataTokens["Namespaces"] as string[];
            Assert.Equal(routeNameSpaces.Length, 2);
            Assert.Same(route, routes["RouteName"]);
            Assert.Same(routeNameSpaces, _nameSpaces);
            Assert.Equal("SomeUrl", route.Url);
            Assert.IsType <MvcRouteHandler>(route.RouteHandler);
            Assert.Empty(route.Defaults);
            Assert.Empty(route.Constraints);
        }
Ejemplo n.º 2
0
        public void MapRoute5WithDefaultsAndConstraintsAsDictionary()
        {
            // Arrange
            RouteCollection routes   = new RouteCollection();
            var             defaults = new Dictionary <string, object> {
                { "Foo", "DefaultFoo" }
            };
            var constraints = new Dictionary <string, object> {
                { "Foo", "ConstraintFoo" }
            };

            // Act
            routes.MapRoute("RouteName", "SomeUrl", defaults, constraints);

            // Assert
            Route route = Assert.Single(routes.Cast <Route>());

            Assert.NotNull(route);
            Assert.Same(route, routes["RouteName"]);
            Assert.Equal("SomeUrl", route.Url);
            Assert.IsType <MvcRouteHandler>(route.RouteHandler);
            Assert.Equal("DefaultFoo", route.Defaults["Foo"]);
            Assert.Equal("ConstraintFoo", route.Constraints["Foo"]);
            Assert.Empty(route.DataTokens);
        }
Ejemplo n.º 3
0
        public void RegisterUploadLogoRoute()
        {
            var routes = new RouteCollection();

            AppRoutes.RegisterRoutes(routes);

            var route = routes.Cast<Route>().SingleOrDefault(r =>
                    string.Equals(r.Url, "{tenant}/MyAccount/UploadLogo", StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["controller"] as string, "Account", StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["action"] as string, "UploadLogo", StringComparison.OrdinalIgnoreCase));
            Assert.IsNotNull(route);
        }
Ejemplo n.º 4
0
        public void RegisterOnBoardingRoute()
        {
            var routes = new RouteCollection();

            AppRoutes.RegisterRoutes(routes);

            var route = routes.Cast<Route>().SingleOrDefault(r =>
                    string.Equals(r.Url, string.Empty, StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["controller"] as string, "OnBoarding", StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["action"] as string, "Index", StringComparison.OrdinalIgnoreCase));
            Assert.IsNotNull(route);
        }
Ejemplo n.º 5
0
        public void RegisterFederationResultRoute()
        {
            var routes = new RouteCollection();

            AppRoutes.RegisterRoutes(routes);

            var route = routes.Cast<Route>().SingleOrDefault(r =>
                    string.Equals(r.Url, "FederationResult", StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["controller"] as string, "ClaimsAuthentication", StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["action"] as string, "FederationResult", StringComparison.OrdinalIgnoreCase));
            Assert.IsNotNull(route);
        }
        public void RegisterAuthenticationRoute()
        {
            var routes = new RouteCollection();

            AppRoutes.RegisterRoutes(routes);

            var route = routes.Cast <Route>().SingleOrDefault(r =>
                                                              string.Equals(r.Url, "Account/{action}", StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["controller"] as string, "Authentication", StringComparison.OrdinalIgnoreCase));

            Assert.IsNotNull(route);
        }
Ejemplo n.º 7
0
        public void RegisteThankYouForFillingSurveyRoute()
        {
            var routes = new RouteCollection();

            AppRoutes.RegisterRoutes(routes);

            var route = routes.Cast<Route>().SingleOrDefault(r =>
                    string.Equals(r.Url, "survey/{tenant}/{surveySlug}/thankyou", System.StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["controller"] as string, "Surveys", System.StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["action"] as string, "ThankYou", System.StringComparison.OrdinalIgnoreCase));
            Assert.IsNotNull(route);
        }
Ejemplo n.º 8
0
        public void RegisterDisplaySurveyRoute()
        {
            var routes = new RouteCollection();

            RouteConfig.RegisterRoutes(routes);

            var route = routes.Cast <Route>().SingleOrDefault(r =>
                                                              string.Equals(r.Url, "survey/{tenant}/{surveySlug}", System.StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["controller"] as string, "Surveys", System.StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["action"] as string, "Display", System.StringComparison.OrdinalIgnoreCase));

            Assert.IsNotNull(route);
        }
        public void RegisterOnBoardingRoute()
        {
            var routes = new RouteCollection();

            AppRoutes.RegisterRoutes(routes);

            var route = routes.Cast <Route>().SingleOrDefault(r =>
                                                              string.Equals(r.Url, string.Empty, StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["controller"] as string, "OnBoarding", StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["action"] as string, "Index", StringComparison.OrdinalIgnoreCase));

            Assert.IsNotNull(route);
        }
        public void RegisterUploadLogoRoute()
        {
            var routes = new RouteCollection();

            AppRoutes.RegisterRoutes(routes);

            var route = routes.Cast <Route>().SingleOrDefault(r =>
                                                              string.Equals(r.Url, "{tenant}/MyAccount/UploadLogo", StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["controller"] as string, "Account", StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["action"] as string, "UploadLogo", StringComparison.OrdinalIgnoreCase));

            Assert.IsNotNull(route);
        }
Ejemplo n.º 11
0
        public void RegisteThankYouForFillingSurveyRoute()
        {
            var routes = new RouteCollection();

            AppRoutes.RegisterRoutes(routes);

            var route = routes.Cast <Route>().SingleOrDefault(r =>
                                                              string.Equals(r.Url, "survey/{tenantId}/{surveySlug}/thankyou", System.StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["controller"] as string, "Surveys", System.StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["action"] as string, "ThankYou", System.StringComparison.OrdinalIgnoreCase));

            Assert.IsNotNull(route);
        }
Ejemplo n.º 12
0
        public void RegisterFederatedSignoutRoute()
        {
            var routes = new RouteCollection();

            RouteConfig.RegisterRoutes(routes);

            var route = routes.Cast <Route>().SingleOrDefault(r =>
                                                              string.Equals(r.Url, "Signout", StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["controller"] as string, "ClaimsAuthentication", StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["action"] as string, "Signout", StringComparison.OrdinalIgnoreCase));

            Assert.IsNotNull(route);
        }
Ejemplo n.º 13
0
        public void RouteOrder()
        {
            RouteCollection collection = new RouteCollection();
            Routing.RegisterRoutes(collection);

            Route[] routes = collection.Cast<Route>().ToArray();
            Assert.Equal("a/b/c", routes[0].Url);
            Assert.Equal("a/b", routes[1].Url);
            Assert.Equal("a/{b}/{c}", routes[2].Url);
            Assert.Equal("a/{b}", routes[3].Url);
            Assert.Equal("a/{*b}", routes[4].Url);
            Assert.Equal("a", routes[5].Url);
            Assert.Equal(6, routes.Length);
        }
        public void RegisteNewQuestionRoute()
        {
            var routes = new RouteCollection();
            var registrationArea = new SurveyAreaRegistration();
            var areaRegistrationContext = new AreaRegistrationContext(registrationArea.AreaName, routes);

            registrationArea.RegisterArea(areaRegistrationContext);

            var route = routes.Cast<Route>().SingleOrDefault(r =>
                    string.Equals(r.Url, "survey/{tenant}/newquestion", System.StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["controller"] as string, "Surveys", System.StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["action"] as string, "NewQuestion", System.StringComparison.OrdinalIgnoreCase));
            Assert.IsNotNull(route);
        }
        public void RegisteDeleteSurveyRoute()
        {
            var routes                  = new RouteCollection();
            var registrationArea        = new SurveyAreaRegistration();
            var areaRegistrationContext = new AreaRegistrationContext(registrationArea.AreaName, routes);

            registrationArea.RegisterArea(areaRegistrationContext);

            var route = routes.Cast <Route>().SingleOrDefault(r =>
                                                              string.Equals(r.Url, "survey/{tenantId}/{surveySlug}/delete", System.StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["controller"] as string, "Surveys", System.StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["action"] as string, "Delete", System.StringComparison.OrdinalIgnoreCase));

            Assert.IsNotNull(route);
        }
            public void GetLinkMetadataEndpointUrl_SystemWidgetRouteIsRegistered()
            {
                // Enable page builder routes registration
                var appBuilderMock = Substitute.For <IApplicationBuilder>();

                appBuilderMock.UsePageBuilder();

                // Register Kentico routes
                var routes = new RouteCollection();

                routes.Kentico().MapRoutes();

                Assert.That(routes.Cast <Route>().First(r => r.Url == "Kentico.PageBuilder/Widgets/{" + RichTextWidgetUrlRetriever.CULTURE_ROUTE_KEY + "}/{" + RichTextWidgetUrlRetriever.TYPE_IDENTIFIER_ROUTE_KEY + "}/{action}"),
                            Is.Not.Null);
            }
Ejemplo n.º 17
0
        /// <summary>
        /// Registers the specified routes.
        /// </summary>
        /// <param name="routes">The routes.</param>
        /// <param name="action">Error action.</param>
        /// <param name="controller">Error controller.</param>
        /// <param name="urlFilterFunc">The URL filter function.</param>
        /// <param name="ignorePatterns">The ignore patterns.</param>
        public static void RegisterRoutes(RouteCollection routes, string action, string controller, Func <string, bool> urlFilterFunc, IEnumerable <string> ignorePatterns = null)
        {
            if (routes == null)
            {
                return;
            }

            foreach (var route in routes.Cast <Route>()
                     .Where(route => urlFilterFunc != null && urlFilterFunc(route.Url))
                     .Where(route => !string.IsNullOrEmpty(route.Url)))
            {
                // ReSharper disable once PossibleMultipleEnumeration
                route.RouteHandler = new RouteProviderHandler(route.RouteHandler, action, controller, ignorePatterns);
            }
        }
        public void RegisterBrowseSurveyResponsesRoute()
        {
            var routes                  = new RouteCollection();
            var registrationArea        = new SurveyAreaRegistration();
            var areaRegistrationContext = new AreaRegistrationContext(registrationArea.AreaName, routes);

            registrationArea.RegisterArea(areaRegistrationContext);

            var route = routes.Cast <Route>().SingleOrDefault(r =>
                                                              string.Equals(r.Url, "survey/{tenant}/{surveySlug}/analyze/browse/{answerId}", System.StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["controller"] as string, "Surveys", System.StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["action"] as string, "BrowseResponses", System.StringComparison.OrdinalIgnoreCase) &&
                                                              string.Equals(r.Defaults["answerId"] as string, string.Empty, System.StringComparison.OrdinalIgnoreCase));

            Assert.IsNotNull(route);
        }
        public void IgnoreRoute3()
        {
            // Arrange
            RouteCollection routes = new RouteCollection();

            // Act
            routes.IgnoreRoute("SomeUrl");

            // Assert
            Route route = Assert.Single(routes.Cast <Route>());

            Assert.NotNull(route);
            Assert.Equal("SomeUrl", route.Url);
            Assert.IsType <StopRoutingHandler>(route.RouteHandler);
            Assert.Null(route.Defaults);
            Assert.Empty(route.Constraints);
        }
        public void MapMvcAttributeRoutes_MapRouteAttributes()
        {
            // Arrange
            var controllerTypes = new[] { typeof(SimpleRoutingController) };
            var routes = new RouteCollection();

            // Act
            routes.MapMvcAttributeRoutes(controllerTypes);

            // Assert
            var expectedResults = new List<Tuple<string, string, string[]>>
             {
                 new Tuple<string, string, string[]>("getme", "GetMe", new[] { "GET" }),
                 new Tuple<string, string, string[]>("postme", "PostMe", new[] { "POST" }),
                 new Tuple<string, string, string[]>("getorpostme", "GetOrPostMe", new[] { "GET", "POST" }),
                 new Tuple<string, string, string[]>("routeme", "RouteMe", null),
                 new Tuple<string, string, string[]>("once", "FoolMe", new[] { "GET" }),
                 new Tuple<string, string, string[]>("twice", "FoolMe", new[] { "GET" }),
                 new Tuple<string, string, string[]>("twice", "FoolMe", new[] { "GET" }),
             };

            foreach (var expected in expectedResults)
            {
                var url = expected.Item1;
                var methodName = expected.Item2;
                var expectedHttpMethods = expected.Item3;
                Route route = routes.Cast<Route>().Single(r => r.Url == url);
                Assert.Equal(methodName, route.GetTargetActionMethod().Name);
                var httpMethodConstraint = (HttpMethodConstraint)route.Constraints["httpMethod"];
                if (expectedHttpMethods == null)
                {
                    Assert.Null(httpMethodConstraint);
                }
                else
                {
                    Assert.NotNull(httpMethodConstraint);

                    var actualHttpMethods = httpMethodConstraint.AllowedMethods.ToArray();
                    Array.Sort(expectedHttpMethods);
                    Array.Sort(actualHttpMethods);
                    Assert.Equal(expectedHttpMethods, actualHttpMethods);
                }
            }
        }
        public void MapRoute3WithEmptyNameSpaces()
        {
            // Arrange
            RouteCollection routes = new RouteCollection();

            // Act
            routes.MapRoute("RouteName", "SomeUrl", new string[] { });

            // Assert
            Route route = Assert.Single(routes.Cast <Route>());

            Assert.NotNull(route);
            Assert.Same(route, routes["RouteName"]);
            Assert.Equal("SomeUrl", route.Url);
            Assert.IsType <MvcRouteHandler>(route.RouteHandler);
            Assert.Empty(route.Defaults);
            Assert.Empty(route.Constraints);
            Assert.Empty(route.DataTokens);
        }
        public void MapRoute4()
        {
            // Arrange
            RouteCollection routes   = new RouteCollection();
            var             defaults = new { Foo = "DefaultFoo" };

            // Act
            routes.MapRoute("RouteName", "SomeUrl", defaults);

            // Assert
            Route route = Assert.Single(routes.Cast <Route>());

            Assert.NotNull(route);
            Assert.Same(route, routes["RouteName"]);
            Assert.Equal("SomeUrl", route.Url);
            Assert.IsType <MvcRouteHandler>(route.RouteHandler);
            Assert.Equal("DefaultFoo", route.Defaults["Foo"]);
            Assert.Empty(route.Constraints);
            Assert.Empty(route.DataTokens);
        }
Ejemplo n.º 23
0
        public void VirtualDirWithChild()
        {
            //Arrange
            var portalInfo = new ArrayList {
                new PortalInfo {
                    PortalID = 0
                }
            };

            _mockPortalController.Setup(x => x.GetPortals()).Returns(portalInfo);

            var mockPac = new Mock <IPortalAliasController>();

            mockPac.Setup(x => x.GetPortalAliasByPortalId(0)).Returns(new[] { new PortalAliasInfo {
                                                                                  HTTPAlias = "www.foo.com/vdir"
                                                                              }, new PortalAliasInfo {
                                                                                  HTTPAlias = "www.foo.com/vdir/child"
                                                                              } });
            TestablePortalAliasController.SetTestableInstance(mockPac.Object);

            var mockGlobals = new Mock <IGlobals>();

            mockGlobals.Setup(x => x.ApplicationPath).Returns("/vdir");
            TestableGlobals.SetTestableInstance(mockGlobals.Object);

            var routeCollection = new RouteCollection();
            var srm             = new ServicesRoutingManager(routeCollection);

            //Act
            srm.MapRoute("folder", "url", new[] { "foo" });

            //Assert
            Assert.AreEqual(2, routeCollection.Count);
            var urls = routeCollection.Cast <Route>().Select(x => x.Url).ToList();

            Assert.AreEqual(1, urls.Count(x => x.Contains("{prefix0}")));
            //if 2 urls and only 1 has prefix 0 then the other has no prefixesed wcon
        }
        public void IgnoreRoute4()
        {
            // Arrange
            RouteCollection routes = new RouteCollection();
            var constraints = new { Foo = "DefaultFoo" };

            // Act
            routes.IgnoreRoute("SomeUrl", constraints);

            // Assert
            Route route = Assert.Single(routes.Cast<Route>());
            Assert.NotNull(route);
            Assert.Equal("SomeUrl", route.Url);
            Assert.IsType<StopRoutingHandler>(route.RouteHandler);
            Assert.Null(route.Defaults);
            Assert.Single(route.Constraints);
            Assert.Equal("DefaultFoo", route.Constraints["Foo"]);
        }
        public void RegisterBrowseSurveyResponsesRoute()
        {
            var routes = new RouteCollection();
            var registrationArea = new SurveyAreaRegistration();
            var areaRegistrationContext = new AreaRegistrationContext(registrationArea.AreaName, routes);

            registrationArea.RegisterArea(areaRegistrationContext);

            var route = routes.Cast<Route>().SingleOrDefault(r =>
                    string.Equals(r.Url, "survey/{tenant}/{surveySlug}/analyze/browse/{answerId}", System.StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["controller"] as string, "Surveys", System.StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["action"] as string, "BrowseResponses", System.StringComparison.OrdinalIgnoreCase) &&
                    string.Equals(r.Defaults["answerId"] as string, string.Empty, System.StringComparison.OrdinalIgnoreCase));
            Assert.IsNotNull(route);
        }
        public void MapRoute4WithNameSpaces()
        {
            // Arrange
            RouteCollection routes = new RouteCollection();
            var defaults = new { Foo = "DefaultFoo" };

            // Act
            routes.MapRoute("RouteName", "SomeUrl", defaults, _nameSpaces);

            // Assert
            Route route = Assert.Single(routes.Cast<Route>());
            Assert.NotNull(route);
            Assert.NotNull(route.DataTokens);
            Assert.NotNull(route.DataTokens["Namespaces"]);
            string[] routeNameSpaces = route.DataTokens["Namespaces"] as string[];
            Assert.Equal(routeNameSpaces.Length, 2);
            Assert.Same(route, routes["RouteName"]);
            Assert.Same(routeNameSpaces, _nameSpaces);
            Assert.Equal("SomeUrl", route.Url);
            Assert.IsType<MvcRouteHandler>(route.RouteHandler);
            Assert.Equal("DefaultFoo", route.Defaults["Foo"]);
            Assert.Empty(route.Constraints);
        }
        public void MapRoute3WithEmptyNameSpaces()
        {
            // Arrange
            RouteCollection routes = new RouteCollection();

            // Act
            routes.MapRoute("RouteName", "SomeUrl", new string[] { });

            // Assert
            Route route = Assert.Single(routes.Cast<Route>());
            Assert.NotNull(route);
            Assert.Same(route, routes["RouteName"]);
            Assert.Equal("SomeUrl", route.Url);
            Assert.IsType<MvcRouteHandler>(route.RouteHandler);
            Assert.Empty(route.Defaults);
            Assert.Empty(route.Constraints);
            Assert.Empty(route.DataTokens);
        }
Ejemplo n.º 28
0
        public void VirtualDirWithChild()
        {
            //Arrange
            var portalInfo = new ArrayList { new PortalInfo { PortalID = 0 } };
            _mockPortalController.Setup(x => x.GetPortals()).Returns(portalInfo);

            var mockPac = new Mock<IPortalAliasController>();
            mockPac.Setup(x => x.GetPortalAliasByPortalId(0)).Returns(new[] { new PortalAliasInfo { HTTPAlias = "www.foo.com/vdir" }, new PortalAliasInfo{HTTPAlias = "www.foo.com/vdir/child"} });
            TestablePortalAliasController.SetTestableInstance(mockPac.Object);

            var mockGlobals = new Mock<IGlobals>();
            mockGlobals.Setup(x => x.ApplicationPath).Returns("/vdir");
            TestableGlobals.SetTestableInstance(mockGlobals.Object);

            var routeCollection = new RouteCollection();
            var srm = new ServicesRoutingManager(routeCollection);

            //Act
            srm.MapRoute("folder", "url", new[] { "foo" });

            //Assert
            Assert.AreEqual(2, routeCollection.Count);
            var urls = routeCollection.Cast<Route>().Select(x => x.Url).ToList();
            Assert.AreEqual(1, urls.Count(x => x.Contains("{prefix0}")));
            //if 2 urls and only 1 has prefix 0 then the other has no prefixesed wcon
        }
Ejemplo n.º 29
0
 public static Route At(this RouteCollection routes, int index)
 {
     return(routes.Cast <Route>().Skip(index).First());
 }
        public void MapRoute5()
        {
            // Arrange
            RouteCollection routes = new RouteCollection();
            var defaults = new { Foo = "DefaultFoo" };
            var constraints = new { Foo = "ConstraintFoo" };

            // Act
            routes.MapRoute("RouteName", "SomeUrl", defaults, constraints);

            // Assert
            Route route = Assert.Single(routes.Cast<Route>());
            Assert.NotNull(route);
            Assert.Same(route, routes["RouteName"]);
            Assert.Equal("SomeUrl", route.Url);
            Assert.IsType<MvcRouteHandler>(route.RouteHandler);
            Assert.Equal("DefaultFoo", route.Defaults["Foo"]);
            Assert.Equal("ConstraintFoo", route.Constraints["Foo"]);
            Assert.Empty(route.DataTokens);
        }
        public void MapMvcAttributeRoutes_WithInlineConstraints_ParseConstraintsDefaultsAndOptionals()
        {
            // Arrange
            var controllerTypes = new[] { typeof(SimpleRoutingController) };
            var routes = new RouteCollection();

            // Act
            routes.MapMvcAttributeRoutes(controllerTypes);

            // Assert
            Route route = routes.Cast<Route>().Single(r => r.GetTargetActionMethod().Name == "Parameterized");
            Assert.NotNull(route);

            Assert.Equal("i/{have}/{id}/{defaultsto}/{name}", route.Url);
            Assert.IsAssignableFrom<IntRouteConstraint>(route.Constraints["id"]);
            Assert.Equal("VAL", route.Defaults["defaultsto"]);
            Assert.Equal("", route.Defaults["name"].ToString());
        }
        public void MapRoute4WithDefaultsAsDictionary()
        {
            // Arrange
            RouteCollection routes = new RouteCollection();
            var defaults = new Dictionary<string, object> { { "Foo", "DefaultFoo" } };

            // Act
            routes.MapRoute("RouteName", "SomeUrl", defaults);

            // Assert
            Route route = Assert.Single(routes.Cast<Route>());
            Assert.NotNull(route);
            Assert.Same(route, routes["RouteName"]);
            Assert.Equal("SomeUrl", route.Url);
            Assert.IsType<MvcRouteHandler>(route.RouteHandler);
            Assert.Equal("DefaultFoo", route.Defaults["Foo"]);
            Assert.Empty(route.Constraints);
            Assert.Empty(route.DataTokens);
        }