コード例 #1
0
        public void WhenAMethodRequestForUrlIsMade(string method, string url)
        {
            var desiredMethod = (method.HasValue() ? method : "GET").Trim().ToUpperInvariant();
            var requestMethod = (desiredMethod.ValueEquals("GET") ? "GET" : "POST").ToUpperInvariant();
            var pathAndQuery  = url.SplitAndTrim("?");

            var httpContextMock = MockBuilder.BuildMockHttpContext(r =>
            {
                r.SetupGet(x => x.HttpMethod).Returns(requestMethod);
                r.SetupGet(x => x.AppRelativeCurrentExecutionFilePath).Returns("~/" + Regex.Replace(pathAndQuery[0], @"[{}]", ""));

                if (pathAndQuery.Length > 1)
                {
                    r.SetupGet(x => x.QueryString).Returns(HttpUtility.ParseQueryString(pathAndQuery[1]));
                }

                if (desiredMethod != requestMethod)
                {
                    r.SetupGet(x => x.Headers).Returns(new NameValueCollection
                    {
                        { "X-HTTP-Method-Override", desiredMethod }
                    });

                    r.SetupGet(x => x.HttpMethod).Returns(desiredMethod);
                }
            });

            ScenarioContext.Current.SetCurrentHttpContext(httpContextMock.Object);
        }
コード例 #2
0
        public void Route_is_matched_if_subdomain_is_not_mapped_and_parsed_subdomain_is_null()
        {
            var routes = RouteTable.Routes;

            routes.Clear();
            routes.MapAttributeRoutes(config =>
            {
                config.AddRoutesFromController <StandardUsageController>();
                config.AddRoutesFromController <SubdomainController>();
            });

            const string host            = "localhost";
            var          httpContextMock = MockBuilder.BuildMockHttpContext(r =>
            {
                r.SetupGet(x => x.Url).Returns(new Uri("http://" + host, UriKind.Absolute));
                r.SetupGet(x => x.Headers).Returns(new NameValueCollection {
                    { "host", host }
                });
            });

            var route = routes.First();
            var data  = route.GetRouteData(httpContextMock.Object);

            Assert.That(data, Is.Not.Null);
        }
コード例 #3
0
        private UrlHelper GetUrlHelper(RouteCollection routes, string host, string schema = "http")
        {
            Mock <HttpContextBase> httpContextMock = MockBuilder.BuildMockHttpContext(r =>
            {
                r.SetupGet(x => x.Url).Returns(new Uri(schema + "://" + host, UriKind.Absolute));
                r.SetupGet(x => x.Headers).Returns(new NameValueCollection {
                    { "host", host }
                });
            });

            return(new UrlHelper(new RequestContext(httpContextMock.Object, new RouteData()), routes));
        }
コード例 #4
0
        public void It_matches_translated_route_when_translation_is_available_for_culture()
        {
            var route = MapRoutesAndFetchFirst(r => r.CultureName == "es-ES");

            Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-ES");

            var httpContextMock = MockBuilder.BuildMockHttpContext(
                r => r.SetupGet(x => x.AppRelativeCurrentExecutionFilePath)
                .Returns("~/Translate/Actions/HOLA!"));

            var routeData = route.GetRouteData(httpContextMock.Object);

            Assert.That(routeData, Is.Not.Null);
        }
コード例 #5
0
        public void It_does_not_match_translated_route_for_neutral_culture_when_current_culture_is_neutral_from_another_language()
        {
            var route = MapRoutesAndFetchFirst(r => r.CultureName == "es");

            Thread.CurrentThread.CurrentUICulture = new CultureInfo("pt-BR");

            var httpContextMock = MockBuilder.BuildMockHttpContext(
                r => r.SetupGet(x => x.AppRelativeCurrentExecutionFilePath)
                .Returns("~/Translate/Actions/hola"));

            var routeData = route.GetRouteData(httpContextMock.Object);

            Assert.That(routeData, Is.Null);
        }
コード例 #6
0
        public void It_does_not_match_default_route_when_translation_is_available_for_neutral_culture()
        {
            var route = MapRoutesAndFetchFirst(r => r.CultureName == null);

            Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-AR");

            var httpContextMock = MockBuilder.BuildMockHttpContext(r =>
            {
                r.SetupGet(x => x.PathInfo).Returns("Translate/Actions/Index");
            });

            var routeData = route.GetRouteData(httpContextMock.Object);

            Assert.That(routeData, Is.Null);
        }
コード例 #7
0
        public void It_matches_route_when_no_translations_are_available()
        {
            var routes = RouteTable.Routes;

            routes.MapAttributeRoutes(c => c.AddRoutesFromController <TranslateActionsController>());

            // Fetch the first route
            var route = routes.Cast <Route>().SingleOrDefault();

            Assert.That(route, Is.Not.Null);

            var httpContextMock = MockBuilder.BuildMockHttpContext(
                r => r.SetupGet(x => x.AppRelativeCurrentExecutionFilePath)
                .Returns("~/Translate/Actions/Index"));

            var routeData = route.GetRouteData(httpContextMock.Object);

            Assert.That(routeData, Is.Not.Null);
        }
コード例 #8
0
        public void Route_is_not_matched_if_subdomain_is_not_mapped_and_is_not_equal_to_configured_default()
        {
            var routes = RouteTable.Routes;

            routes.Clear();
            routes.MapAttributeRoutes(config => config.AddRoutesFromController <SubdomainController>());

            const string host            = "whatever.domain.com";
            var          httpContextMock = MockBuilder.BuildMockHttpContext(r =>
            {
                r.SetupGet(x => x.Url).Returns(new Uri("http://" + host, UriKind.Absolute));
                r.SetupGet(x => x.Headers).Returns(new NameValueCollection {
                    { "host", host }
                });
            });

            var route = routes.Single();
            var data  = route.GetRouteData(httpContextMock.Object);

            Assert.That(data, Is.Null);
        }