public void When_two_args_in_route_expect_all_to_be_present_in_order_to_match() { var route = new RegexRoute("/<one>/<two>"); Assert.That(route.HasMatch("/one/two")); Assert.That(route.HasMatch("/one"), Is.False); }
public static RegexRoute MapRegexRoute(this AreaRegistrationContext context, string name, string url, string pattern, object defaults, object constraints, string[] namespaces) { if (context == null) { throw new ArgumentNullException("context"); } if (url == null) { throw new ArgumentNullException("url"); } if (pattern == null) { throw new ArgumentNullException("pattern"); } var route = new RegexRoute(url, pattern, constraints, new MvcRouteHandler()) { DataTokens = new RouteValueDictionary(), Defaults = new RouteValueDictionary(defaults) }; route.DataTokens.Add("Area", context.AreaName); if (namespaces != null && namespaces.Length > 0) { route.DataTokens["Namespaces"] = namespaces; } context.Routes.Add(name, route); return(route); }
public void ShouldReturnNullIfRouteIsNotMatched() { var route = new RegexRoute("asdf", handler); RouteData routeData = route.GetRouteData("fdsa"); Assert.IsNull(routeData, "routedata should be null if the path didn't match"); }
public void ShouldNotBeNullIfRouteIsMatched() { var route = new RegexRoute("asdf", handler); RouteData routeData = route.GetRouteData("asdf"); Assert.AreSame(handler, routeData.RouteHandler); Assert.IsNotNull(routeData, "routeData should not be null if the path matched the regex"); }
public void When_route_contains_parameters_parameters_are_populated() { var route = new RegexRoute(@"foo/<bar>/"); Assert.That(route.Parameters, Is.Not.Null); Assert.That(route.Parameters, Is.Not.Empty); Assert.That(route.Parameters.Length, Is.EqualTo(1)); Assert.That(route.Parameters, Contains.Item("bar")); }
public void ShouldHaveMatchedPairIfValueFound() { var route = new RegexRoute(@"(?<Controller>[a-zA-Z]+)_((?<Action>[a-zA-Z]+)_)?(?<Id>\d+)?", handler); RouteData routeData = route.GetRouteData("Products_View_0"); Assert.AreSame(handler, routeData.RouteHandler); Assert.AreEqual("Products", routeData.Values["Controller"]); Assert.AreEqual("View", routeData.Values["Action"]); Assert.AreEqual("0", routeData.Values["Id"]); }
public void ShouldHaveDefaultValuesIfPairFoundButDoesNotMatchAnything() { var defaults = new RouteValueDictionary(new { a = "A" }); var route = new RegexRoute("asdf", defaults, handler); RouteData routeData = route.GetRouteData("asdf"); Assert.AreSame(handler, routeData.RouteHandler); Assert.IsNotNull(routeData, "routeData should not be null if the path matched the regex"); Assert.IsTrue(routeData.Values.ContainsKey("a")); Assert.AreEqual("A", routeData.Values["a"], "if the match failed, the value should be default"); }
private static Regex PrepareRegexRoutePattern(RegexRoute regexRoute) { Regex regex; if (!regexPatterns.TryGetValue(regexRoute.RegexRoutePattern, out regex)) { regex = regexPatterns[regexRoute.RegexRoutePattern] = new Regex($"^{RouteHandler.RemoveAccents(regexRoute.RegexRoutePattern)}$", RegexOptions.Compiled | RegexOptions.IgnoreCase); } return(regex); }
public void RouteGeneratorReturnsNullWhenNotAllParametersFilledIn() { var route = new RegexRoute(@"(?<Controller>[a-zA-Z]+)(_(?<Action>[a-zA-Z]+))?(_?<Id>\d+)?", "{Controller}_{Action}_{Id}", handler); RouteData routeData = route.GetRouteData("Products_View_0"); VirtualPathData pathData = route.GetVirtualPath(new RequestContext(mr.PartialMock <HttpContextBase>(), routeData), new RouteValueDictionary( new { Controller = "Accounts", Action = "Delete" })); Assert.IsNull(pathData); }
public void RouteGeneratorGeneratesValidRouteWithoutDefaults() { var route = new RegexRoute(@"(?<Controller>[a-zA-Z]+)(_(?<Action>[a-zA-Z]+))?(_?<Id>\d+)?", "{Controller}_{Action}_{Id}", handler); RouteData routeData = route.GetRouteData("Products_View_0"); VirtualPathData pathData = route.GetVirtualPath(new RequestContext(mr.PartialMock <HttpContextBase>(), routeData), new RouteValueDictionary( new { Controller = "Accounts", Action = "Delete", Id = 0 })); Assert.AreEqual("Accounts_Delete_0", pathData.VirtualPath); }
private static IDictionary <string, object> PrepareRouteData(string text, RegexRoute regexRoute) { var match = PrepareRegexRoutePattern(regexRoute).Match(RouteHandler.RemoveAccents(text)); if (match.Success) { match = Regex.Match(text, regexRoute.RegexRoutePattern, RegexOptions.IgnoreCase); var routeData = new Dictionary <string, object>(); var groups = match.Groups; for (var i = 1; i < groups.Count; i++) { var key = regexRoute.RegexRouteParameters[i - 1]; routeData[key] = groups[i].Value; } return(routeData); } return(null); }
public void RouteGeneratorCallsCustomFunctionIfProvided() { bool called = false; RequestContext innerContext = null; RouteValueDictionary innerRouteValues = null; RegexRoute innerRoute = null; VirtualPathData innerPathData = null; var route = new RegexRoute( @"(?<Controller>[a-zA-Z]+)(_(?<Action>[a-zA-Z]+))?(_?<Id>\d+)?", delegate(RequestContext context, RouteValueDictionary routeValues, RegexRoute thisRoute) { called = true; innerContext = context; innerRouteValues = routeValues; innerRoute = thisRoute; innerPathData = new VirtualPathData(thisRoute, ""); return(innerPathData); }, handler); RouteData routeData = route.GetRouteData("Products_View_0"); var values = new RouteValueDictionary(new { Controller = "Accounts", Action = "Delete", Id = 0 }); var requestContext = new RequestContext(mr.PartialMock <HttpContextBase>(), routeData); VirtualPathData pathData = route.GetVirtualPath( requestContext, values); Assert.IsTrue(called); Assert.IsNotNull(innerContext); Assert.AreSame(requestContext, innerContext); Assert.IsNotNull(innerRouteValues); Assert.AreSame(values, innerRouteValues); Assert.IsNotNull(innerRoute); Assert.AreSame(route, innerRoute); Assert.IsNotNull(pathData); Assert.AreSame(pathData, innerPathData); }
public void When_route_path_different_to_request_path_match_is_not_successful() { var route = new RegexRoute("foo/"); Assert.That(route.HasMatch("bar/"), Is.False); }
public void When_route_path_same_as_request_path_match_is_successful() { var route = new RegexRoute("foo/"); Assert.That(route.HasMatch("foo/"), Is.True); }
public void When_route_that_has_parameter_has_parameter_queried_expect_value_is_returned() { var route = new RegexRoute(@"foo/<bar>/"); Assert.That(route.GetParameterValue("foo/moishere/", "bar"), Is.EqualTo("moishere")); }
public void When_route_path_contains_regex_and_path_that_matches_regex_match_is_successful() { var route = new RegexRoute(@"foo/<bar>/"); Assert.That(route.HasMatch("foo/bar/"), Is.True); }