public void PrefixCountsCacheCanBeCleared() { // Arrange var mockPortalController = new Mock <IPortalController>(); var portals = new ArrayList { new PortalInfo { PortalID = 1 } }; mockPortalController.Setup(x => x.GetPortals()).Returns(portals); PortalController.SetTestableInstance(mockPortalController.Object); this.mockPortalAliasService.Setup(x => x.GetPortalAliasesByPortalId(It.IsAny <int>())).Returns(new[] { new PortalAliasInfo { HTTPAlias = "valid.lvh.me" } }); this.mockPortalAliasService.As <IPortalAliasController>().Setup(x => x.GetPortalAliasesByPortalId(It.IsAny <int>())).Returns(new[] { new PortalAliasInfo { HTTPAlias = "valid.lvh.me" } }); var mockGlobals = new Mock <IGlobals>(); mockGlobals.Setup(x => x.ApplicationPath).Returns(string.Empty); TestableGlobals.SetTestableInstance(mockGlobals.Object); // Act var parm = new PortalAliasRouteManager(); parm.GetRoutePrefixCounts(); parm.ClearCachedData(); parm.GetRoutePrefixCounts(); // Assert mockPortalController.Verify(x => x.GetPortals(), Times.Exactly(2)); }
public void ParentPortalOnVirtualDirReturnsAnEmptyPrefix() { // Arrange var mockPortalController = new Mock <IPortalController>(); var portals = new ArrayList { new PortalInfo { PortalID = 1 } }; mockPortalController.Setup(x => x.GetPortals()).Returns(portals); PortalController.SetTestableInstance(mockPortalController.Object); var mockPortalAliasController = new Mock <IPortalAliasController>(); mockPortalAliasController.Setup(x => x.GetPortalAliasesByPortalId(It.IsAny <int>())).Returns(new[] { new PortalAliasInfo { HTTPAlias = "valid.lvh.me/vdir" } }); PortalAliasController.SetTestableInstance(mockPortalAliasController.Object); var mockGlobals = new Mock <IGlobals>(); mockGlobals.Setup(x => x.ApplicationPath).Returns("/vdir"); TestableGlobals.SetTestableInstance(mockGlobals.Object); // Act List <int> prefixes = new PortalAliasRouteManager().GetRoutePrefixCounts().ToList(); // Assert CollectionAssert.AreEquivalent(new[] { 0 }, prefixes); }
public void PrefixCountsAreCached() { //Arrange var mockPortalController = new Mock <IPortalController>(); var portals = new ArrayList { new PortalInfo { PortalID = 1 } }; mockPortalController.Setup(x => x.GetPortals()).Returns(portals); TestablePortalController.SetTestableInstance(mockPortalController.Object); var mockPortalAliasController = new Mock <IPortalAliasController>(); mockPortalAliasController.Setup(x => x.GetPortalAliasesByPortalId(It.IsAny <int>())).Returns(new[] { new PortalAliasInfo { HTTPAlias = "valid.lvh.me" } }); TestablePortalAliasController.SetTestableInstance(mockPortalAliasController.Object); var mockGlobals = new Mock <IGlobals>(); mockGlobals.Setup(x => x.ApplicationPath).Returns(""); TestableGlobals.SetTestableInstance(mockGlobals.Object); //Act var parm = new PortalAliasRouteManager(); parm.GetRoutePrefixCounts(); parm.GetRoutePrefixCounts(); //Assert mockPortalController.Verify(x => x.GetPortals(), Times.Once()); }
public void GetRouteUrl(string moduleFolderName, string url, int count, string expected) { // Arrange // Act string result = new PortalAliasRouteManager().GetRouteUrl(moduleFolderName, url, count); // Assert Assert.AreEqual(expected, result); }
public void GetRouteNameHashesNameInCorrectFormat(string moduleFolderName, string routeName, int count, string expected) { // Arrange // Act var result = new PortalAliasRouteManager().GetRouteName(moduleFolderName, routeName, count); // Assert Assert.AreEqual(expected, result); }
public void GetRouteNameWithPortalAliasInfoHashesNameInCorrectFormat(string moduleFolderName, string routeName, string httpAlias, string expected) { // Arrange // Act var result = new PortalAliasRouteManager().GetRouteName(moduleFolderName, routeName, new PortalAliasInfo { HTTPAlias = httpAlias }); // Assert Assert.AreEqual(expected, result); }
public void GetAllRouteValuesPreservesPassedInRouteValues() { // Arrange // Act var result = new PortalAliasRouteManager().GetAllRouteValues( new PortalAliasInfo { HTTPAlias = string.Empty }, new { value1 = 1, value2 = 2 }); // Assert var expected = new Dictionary <string, object> { { "value1", 1 }, { "value2", 2 } }; CollectionAssert.AreEquivalent(expected, result); }
public void VirtralDirWithChildPortalHasABlankAndASinglePrefix() { // Arrange var mockPortalController = new Mock <IPortalController>(); var portals = new ArrayList { new PortalInfo { PortalID = 1 } }; mockPortalController.Setup(x => x.GetPortals()).Returns(portals); PortalController.SetTestableInstance(mockPortalController.Object); this.mockPortalAliasService.Setup(x => x.GetPortalAliasesByPortalId(It.IsAny <int>())).Returns(new[] { new PortalAliasInfo { HTTPAlias = "valid.lvh.me/vdir" }, new PortalAliasInfo { HTTPAlias = "valid.lvh.me/vdir/child" }, }); this.mockPortalAliasService.As <IPortalAliasController>() .Setup(x => x.GetPortalAliasesByPortalId(It.IsAny <int>())).Returns(new[] { new PortalAliasInfo { HTTPAlias = "valid.lvh.me/vdir" }, new PortalAliasInfo { HTTPAlias = "valid.lvh.me/vdir/child" }, }); var mockGlobals = new Mock <IGlobals>(); mockGlobals.Setup(x => x.ApplicationPath).Returns("/vdir"); TestableGlobals.SetTestableInstance(mockGlobals.Object); // Act List <int> prefixes = new PortalAliasRouteManager().GetRoutePrefixCounts().ToList(); // Assert CollectionAssert.AreEqual(new[] { 1, 0 }, prefixes); }
public void GetAllRouteValuesExtractsManyChildPortalParamsAndPreservesRouteValues() { // Arrange // Act var result = new PortalAliasRouteManager().GetAllRouteValues( new PortalAliasInfo { HTTPAlias = "ce.lvh.me/child0/child1/child2/child3" }, new { value1 = 1, value2 = 2 }); // Assert var expected = new Dictionary <string, object> { { "prefix0", "child0" }, { "prefix1", "child1" }, { "prefix2", "child2" }, { "prefix3", "child3" }, { "value1", 1 }, { "value2", 2 } }; CollectionAssert.AreEquivalent(expected, result); }
public void GetAllRouteValuesExtractsChildPortalParams() { // Arrange // Act var result = new PortalAliasRouteManager().GetAllRouteValues( new PortalAliasInfo { HTTPAlias = "ce.lvh.me/child" }, null); // Assert var expected = new Dictionary <string, object> { { "prefix0", "child" } }; CollectionAssert.AreEquivalent(expected, result); }
public IList <Route> MapHttpRoute(string moduleFolderName, string routeName, string url, object defaults, object constraints, string[] namespaces) { if (namespaces == null || namespaces.Length == 0 || string.IsNullOrEmpty(namespaces[0])) { throw new ArgumentException(Localization.GetExceptionMessage( "ArgumentCannotBeNullOrEmpty", "The argument '{0}' cannot be null or empty.", "namespaces")); } Requires.NotNullOrEmpty("moduleFolderName", moduleFolderName); url = url.Trim('/', '\\'); IEnumerable <int> prefixCounts = this._portalAliasRouteManager.GetRoutePrefixCounts(); var routes = new List <Route>(); foreach (int count in prefixCounts) { string fullRouteName = this._portalAliasRouteManager.GetRouteName(moduleFolderName, routeName, count); string routeUrl = this._portalAliasRouteManager.GetRouteUrl(moduleFolderName, url, count); Route route = this.MapHttpRouteWithNamespace(fullRouteName, routeUrl, defaults, constraints, namespaces); routes.Add(route); if (Logger.IsTraceEnabled) { Logger.Trace("Mapping route: " + fullRouteName + " @ " + routeUrl); } // compatible with old service path: DesktopModules/{namespace}/API/{controller}/{action}. var oldRouteName = $"{fullRouteName}-old"; var oldRouteUrl = PortalAliasRouteManager.GetOldRouteUrl(moduleFolderName, url, count); var oldRoute = this.MapHttpRouteWithNamespace(oldRouteName, oldRouteUrl, defaults, constraints, namespaces); routes.Add(oldRoute); if (Logger.IsTraceEnabled) { Logger.Trace("Mapping route: " + oldRouteName + " @ " + oldRouteUrl); } } return(routes); }
internal ServicesRoutingManager(RouteCollection routes) { _routes = routes; _portalAliasRouteManager = new PortalAliasRouteManager(); TypeLocator = new TypeLocator(); }