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));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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();
 }
 internal ServicesRoutingManager(RouteCollection routes)
 {
     _routes = routes;
     _portalAliasRouteManager = new PortalAliasRouteManager();
     TypeLocator = new TypeLocator();
 }