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(); }
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/"); }
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/"); }
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(); }
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(); }
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¤tPage=2"); }
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"); }
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"); }
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"); }
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"); }
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"); }
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"); }
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"); }
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/"); }
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/"); }
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); }
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"); }