public void SharesParentNamespaceUrlSpace() { var controller = typeof(DefaultController.DefaultController1Controller); routes.Clear(); routes.MapCodeRoutes(controller, new CodeRoutingSettings { IgnoredControllers = { typeof(DefaultController.DefaultController3.DefaultController3Controller) } }); var httpContextMock = new Mock <HttpContextBase>(); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/DefaultController2"); var routeData = routes.GetRouteData(httpContextMock.Object); Assert.AreEqual("DefaultController2", routeData.GetRequiredString("controller")); Assert.AreEqual(controller.Namespace, ((string[])routeData.DataTokens["Namespaces"])[0]); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/DefaultController2/Foo"); routeData = routes.GetRouteData(httpContextMock.Object); Assert.AreEqual("DefaultController2", routeData.GetRequiredString("controller")); Assert.AreEqual(typeof(DefaultController.DefaultController2.DefaultController2Controller).Namespace, ((string[])routeData.DataTokens["Namespaces"])[0]); }
public void BindCustomName() { var controller = typeof(CustomName.BindCustomNameController); routes.Clear(); routes.MapCodeRoutes(controller); var httpContextMock = new Mock <HttpContextBase>(); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/Foo/hello"); var httpResponseMock = new Mock <HttpResponseBase>(); httpContextMock.Setup(c => c.Response).Returns(httpResponseMock.Object); var routeData = routes.GetRouteData(httpContextMock.Object); var controllerInstance = (ControllerBase)Activator.CreateInstance(controller); controllerInstance.ValidateRequest = false; var requestContext = new RequestContext(httpContextMock.Object, routeData); var controllerContext = new ControllerContext(requestContext, controllerInstance); controllerInstance.ValueProvider = new ValueProviderCollection(new IValueProvider[] { new RouteDataValueProvider(controllerContext) }); ((IController)controllerInstance).Execute(requestContext); httpResponseMock.Verify(c => c.Write(It.Is <string>(s => s == "hello")), Times.AtLeastOnce()); }
public void UseCustomName() { var controller = typeof(FromRouteAttr.CustomNameController); routes.Clear(); routes.MapCodeRoutes(controller); Assert.IsNotNull(routes.At(0).Url.Contains("{b}")); }
public void EmptyUnlessUsingVerbAttributeIn() { var controller = typeof(ActionName.ActionName4Controller); routes.Clear(); routes.MapCodeRoutes(typeof(ActionName.ActionName4Controller), new CodeRoutingSettings { RootOnly = true }); Assert.IsNotNull(Url.HttpRouteUrl(null, controller)); Assert.IsNotNull(Url.HttpRouteUrl(null, controller, new { action = "Foo" })); }
public void GroupOverloadsWithSameCustomRoute() { // #744 // Create only one route for multiple actions with equal custom routes var controller = typeof(CustomRoute.CustomRoute1Controller); routes.Clear(); routes.MapCodeRoutes(controller, new CodeRoutingSettings { RootOnly = true }); Assert.AreEqual(1, routes.Count); }
void Run(Type controller, BinderPrecedence.BinderPrecedence expected, ParameterBinder globalBinder = null) { var settings = new CodeRoutingSettings(); if (globalBinder != null) { settings.ParameterBinders.Add(globalBinder); } routes.Clear(); routes.MapCodeRoutes(controller, settings); var httpContextMock = new Mock <HttpContextBase>(); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/index/foo"); var httpResponseMock = new Mock <HttpResponseBase>(); httpContextMock.Setup(c => c.Response).Returns(httpResponseMock.Object); var routeData = routes.GetRouteData(httpContextMock.Object); var controllerInstance = (Controller)Activator.CreateInstance(controller); controllerInstance.ValidateRequest = false; var requestContext = new RequestContext(httpContextMock.Object, routeData); var controllerContext = new ControllerContext(requestContext, controllerInstance); controllerInstance.ValueProvider = new ValueProviderCollection(new IValueProvider[] { new RouteDataValueProvider(controllerContext) }); ((IController)controllerInstance).Execute(requestContext); httpResponseMock.Verify(c => c.Write(It.Is <string>(s => s == expected.ToString())), Times.AtLeastOnce()); }
public void SupportsCatchAllParameter() { var controller = typeof(CatchAll.CatchAllParameter1Controller); routes.Clear(); routes.MapCodeRoutes(controller, new CodeRoutingSettings { RootOnly = true }); var httpContextMock = new Mock <HttpContextBase>(); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/Foo/1/2/3"); Assert.IsNotNull(routes.GetRouteData(httpContextMock.Object)); Assert.IsNotNull(Url.Action("Foo", controller, new { a = "1/2/3" })); }
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapCodeRoutes( rootController: typeof(Controllers.HomeController), settings: new CodeRoutingSettings { UseImplicitIdToken = true } ); }
public static void RegisterRoutes(RouteCollection routes) { routes.MapCodeRoutes( rootController: typeof(Controllers.HomeController) ); routes.MapCodeRoutes( baseRoute: "Account", rootController: typeof(MvcAccount.AccountController), settings: new CodeRoutingSettings { EnableEmbeddedViews = true, Configuration = new MvcAccount.AccountConfiguration { AccountRepositoryResolver = () => new Models.TestAccountRepository(), PasswordServiceResolver = () => new MvcAccount.ClearTextPasswordService() } } ); }
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); CodeRoutingSettings.Defaults.RouteFormatter = args => Regex.Replace(args.OriginalSegment, @"([a-z])([A-Z])", "$1-$2").ToLowerInvariant(); routes.MapCodeRoutes(typeof(Controllers.HomeController)); }
public void OnlyMatchesExistingActions() { var controller = typeof(ActionConstraint.ActionConstraint1Controller); routes.Clear(); routes.MapCodeRoutes(controller, new CodeRoutingSettings { RootOnly = true }); var httpContextMock = new Mock <HttpContextBase>(); foreach (var item in new[] { "Foo", "Bar" }) { httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/" + item); Assert.IsNotNull(routes.GetRouteData(httpContextMock.Object)); Assert.AreEqual("/" + item, Url.Action(item, controller)); } httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/a"); Assert.IsNotNull(routes.GetRouteData(httpContextMock.Object)); Assert.AreEqual("/a", Url.Action("Custom", controller)); foreach (var item in new[] { "Custom2", "Custom3" }) { httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/b/" + item); Assert.IsNotNull(routes.GetRouteData(httpContextMock.Object)); Assert.AreEqual("/b/" + item, Url.Action(item, controller)); } httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/b/XYZ"); Assert.IsNull(routes.GetRouteData(httpContextMock.Object)); Assert.IsNull(Url.Action("XYZ", controller)); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/Bar2"); Assert.IsNull(routes.GetRouteData(httpContextMock.Object)); Assert.IsNull(Url.Action("Bar2", controller)); }
public void CreateRoutesForCallableActionMethodsOnly() { var controller = typeof(ControllerReflection.ControllerReflection1Controller); routes.Clear(); routes.MapCodeRoutes(controller, new CodeRoutingSettings { RootOnly = true }); Assert.AreEqual(0, routes.Count); }
public void UseActionAlias() { var controller = typeof(ActionName.ActionName1Controller); routes.Clear(); routes.MapCodeRoutes(controller, new CodeRoutingSettings { RootOnly = true }); Assert.IsNotNull(Url.Action("Bar", controller)); controller = typeof(ActionName.ActionName3Controller); routes.Clear(); routes.MapCodeRoutes(controller, new CodeRoutingSettings { RootOnly = true }); Assert.IsNotNull(Url.Action("Bar", controller)); }
public void IncomingRequestAction() { var controller = typeof(RouteFormatting.RouteFormatting1Controller); routes.Clear(); routes.MapCodeRoutes(controller, new CodeRoutingSettings { RouteFormatter = args => { if (args.SegmentType == RouteSegmentType.Action) { return("_" + args.OriginalSegment); } return(args.OriginalSegment); } }); var httpContextMock = new Mock <HttpContextBase>(); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/_AbcDfg"); RouteData routeData = routes.GetRouteData(httpContextMock.Object); Assert.IsNotNull(routeData); Assert.AreEqual("AbcDfg", routeData.GetRequiredString("action")); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/_Index"); routeData = routes.GetRouteData(httpContextMock.Object); Assert.IsNotNull(routeData); Assert.AreEqual("Index", routeData.GetRequiredString("action")); }
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //routes.MapRoute( // name: "Default", // url: "{controller}/{action}/{id}", // defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } //); routes.MapCodeRoutes(typeof(Controllers.HomeController)); ContactConfiguration.Defaults.From = "*****@*****.**"; routes.MapCodeRoutes( baseRoute: "Contact", rootController: typeof(ContactController), settings: new CodeRoutingSettings { EnableEmbeddedViews = true, Configuration = new ContactConfiguration { To = "*****@*****.**" } } ); routes.MapCodeRoutes( baseRoute: "CustomContact", rootController: typeof(ContactController), settings: new CodeRoutingSettings { EnableEmbeddedViews = true, Configuration = new ContactConfiguration { To = "*****@*****.**", ContactSenderResolver = () => new Models.CustomContactSender() } } ); }
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //routes.MapRoute( // name: "Default", // url: "{controller}/{action}/{id}", // defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } //); routes.MapCodeRoutes( typeof(HomeController), new CodeRoutingSettings { UseImplicitIdToken = true } ); }
public void DontIncludeControllerToken() { var controller = typeof(RootController.RootController1Controller); routes.Clear(); routes.MapCodeRoutes(controller, new CodeRoutingSettings { RootOnly = true }); Assert.AreEqual("/Foo", Url.Action("Foo", controller)); var httpContextMock = new Mock <HttpContextBase>(); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/Foo"); Assert.IsNotNull(routes.GetRouteData(httpContextMock.Object)); }
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // remove classic ASP.NET MVC route configuration //routes.MapRoute( // name: "Default", // url: "{controller}/{action}/{id}", // defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } //); // setup MvcCodeRouting routes routes.MapCodeRoutes( typeof(DemoApp.Controllers.HomeController), new CodeRoutingSettings { UseImplicitIdToken = true } ); }
void Run(Type controller, CodeRoutingSettings settings = null, bool useBinder = false) { if (settings == null) { settings = new CodeRoutingSettings(); } var routes = new RouteCollection(); routes.MapCodeRoutes(controller, settings); var httpContextMock = new Mock <HttpContextBase>(); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/Archive/02"); var httpResponseMock = new Mock <HttpResponseBase>(); httpContextMock.Setup(c => c.Response).Returns(httpResponseMock.Object); var routeData = routes.GetRouteData(httpContextMock.Object); var controllerInstance = (Controller)Activator.CreateInstance(controller); controllerInstance.ValidateRequest = false; var requestContext = new RequestContext(httpContextMock.Object, routeData); var controllerContext = new ControllerContext(requestContext, controllerInstance); controllerInstance.ValueProvider = new ValueProviderCollection(new IValueProvider[] { new RouteDataValueProvider(controllerContext) }); ((IController)controllerInstance).Execute(requestContext); string expected = (useBinder) ? "02" : "00"; httpResponseMock.Verify(c => c.Write(It.Is <string>(s => s == expected)), Times.AtLeastOnce()); }
void Run(Type controller, CodeRoutingSettings settings = null, bool useBinder = false) { if (settings == null) { settings = new CodeRoutingSettings(); } var routes = new RouteCollection(); routes.MapCodeRoutes(controller, settings); var httpContextMock = new Mock<HttpContextBase>(); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/Archive/02"); var httpResponseMock = new Mock<HttpResponseBase>(); httpContextMock.Setup(c => c.Response).Returns(httpResponseMock.Object); var routeData = routes.GetRouteData(httpContextMock.Object); var controllerInstance = (Controller)Activator.CreateInstance(controller); controllerInstance.ValidateRequest = false; var requestContext = new RequestContext(httpContextMock.Object, routeData); var controllerContext = new ControllerContext(requestContext, controllerInstance); controllerInstance.ValueProvider = new ValueProviderCollection(new IValueProvider[] { new RouteDataValueProvider(controllerContext) }); ((IController)controllerInstance).Execute(requestContext); string expected = (useBinder) ? "02" : "00"; httpResponseMock.Verify(c => c.Write(It.Is<string>(s => s == expected)), Times.AtLeastOnce()); }
public void Self() { var controller = typeof(ControllerReference.Self.AController); routes.Clear(); routes.MapCodeRoutes(controller); var Url = TestUtil.CreateUrlHelper(routes, "~/Foo"); Assert.AreEqual("/Bar", Url.Action("Bar", controller)); }
public void MustHaveRouteParametersThatAreEqualInNameAndPosition() { routes.MapCodeRoutes(typeof(OverloadedAction.OverloadedAction1Controller), new CodeRoutingSettings { RootOnly = true }); }
public void IsNamedIndex() { var controller = typeof(DefaultAction.DefaultAction2Controller); routes.Clear(); routes.MapCodeRoutes(controller, new CodeRoutingSettings { RootOnly = true }); var httpContextMock = new Mock <HttpContextBase>(); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/"); Assert.AreEqual("Index", routes.GetRouteData(httpContextMock.Object).GetRequiredString("action")); Assert.AreEqual("/", Url.Action("Index", controller)); controller = typeof(DefaultAction.DefaultAction5Controller); routes.Clear(); routes.MapCodeRoutes(controller, new CodeRoutingSettings { RootOnly = true }); httpContextMock.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/"); Assert.IsNull(routes.GetRouteData(httpContextMock.Object)); Assert.IsNull(Url.Action("", controller)); }