예제 #1
0
        public void Route_is_not_picted_if_one_parameter_condition_does_return_false()
        {
            var route = new Route("GET", "/test/{ProductId}/{Title}", App);

            route.AddCondition("ProductId", value => true);
            route.AddCondition("ProductId", value => false);
            Assert.True(DoesNotRouteTo(route, Utils.BuildGetRequest("/test/foo/nice-product")));
        }
예제 #2
0
        public void Route_is_picted_if_all_parameter_conditions_return_true()
        {
            var route = new Route("GET", "/test/{ProductId}/{Title}", App);

            route.AddCondition("ProductId", value => true);
            route.AddCondition("ProductId", value => true);
            route.AddCondition("Title", value => true);
            Assert.True(RoutesTo(route, _other, "/test/foo/nice-product"));
        }
예제 #3
0
        public void Passes_parameter_values_to_parameter_condition_functions()
        {
            var route = new Route("GET", "/test/{ProductId}/{Title}", App);

            string receivedProductId = null;
            string receivedTitle     = null;

            route.AddCondition("ProductId", value => { receivedProductId = value.Value; return(true); });
            route.AddCondition("Title", value => { receivedTitle = value.Value; return(true); });
            var router = new Router();

            router.AddRoute(route);
            router.Resolve(Utils.BuildGetRequest("/test/123/foo"));

            Assert.Equal("123", receivedProductId);
            Assert.Equal("foo", receivedTitle);
        }
        public void Does__otherturn_Route_if_condition_is_false()
        {
            var url = "/test";

            var Route = new Route("GET", url, App);

            Route.AddCondition(new RouteCondition(data => data.OwinEnv.ContainsKey("KeyNeedsToExist")));

            Assert.True(DoesNotRouteTo(Route, url));
        }
예제 #5
0
        public void Router_stops_checking_conditions_if_it_found_condition_that_returns_false()
        {
            var route = new Route("GET", "/test", App);
            var c1    = false;
            var c2    = false;
            var c3    = false;
            var c4    = false;

            route.AddCondition(new RouteCondition(data => { c1 = true; return(true); }));
            route.AddCondition(new RouteCondition(data => { c2 = true; return(true); }));
            route.AddCondition(new RouteCondition(data => { c3 = true; return(false); }));
            route.AddCondition(new RouteCondition(data => { c4 = true; return(true); }));

            var router = new Router();

            router.AddRoute(route);
            router.Resolve(Utils.BuildGetRequest("/test"));

            Assert.True(c1 && c2 && c3 && !c4);
        }
예제 #6
0
        public void All_Parameter_condition_for_same_paramter_get_checked_until_one_returns_false()
        {
            var route = new Route("GET", "/test/{ProductId}/{Title}", App);

            var c1 = false;
            var c2 = false;
            var c3 = false;

            route.AddCondition("ProductId", value => { c1 = true; return(true); });
            route.AddCondition("ProductId", value => { c2 = true; return(false); });
            route.AddCondition("ProductId", value => { c3 = true; return(true); });

            var router = new Router();

            router.AddRoute(route);
            router.Resolve(Utils.BuildGetRequest("/test/1234/title"));

            Assert.True(c1);
            Assert.True(c2);
            Assert.False(c3);
        }
        public void Route_instance_is_passed_to_condition_function()
        {
            var   route         = new Route("GET", "/test", App);
            Route receivedRoute = null;

            route.AddCondition(new RouteCondition(data => {
                receivedRoute = data.Route;
                return(true);
            }));

            var router = new Router();

            router.AddRoute(route);
            router.Resolve(Utils.BuildGetRequest("/test"));

            Assert.Equal(route, receivedRoute);
        }
        public void Route_parameters_passed_to_condition_function_are_not_null_if_route_contains_no_parameters()
        {
            var route = new Route("GET", "/test", App);
            IDictionary <string, RouteValue> receivedParams = null;

            route.AddCondition(new RouteCondition(data => {
                receivedParams = data.RouteParameters;
                return(true);
            }));

            var router = new Router();

            router.AddRoute(route);
            router.Resolve(Utils.BuildGetRequest("/test"));

            Assert.NotNull(receivedParams);
        }
예제 #9
0
        public void Routes_with_similar_segments_are_working_01()
        {
            var router = new Router();

            var route1 = new Route("GET", "/SiteMaps/PreviewPages.xml");
            var route2 = new Route("GET", "/SiteMaps/PreviewPages_{page}.xml");

            route2.AddCondition(new RouteCondition(data => {
                int isInteger;
                return(int.TryParse(data.RouteParameters["page"].Value, out isInteger));
            }));

            router.AddRoute(route1);
            router.AddRoute(route2);

            var received = router.Resolve(Utils.BuildGetRequest("/SiteMaps/PreviewPages.xml"));

            Assert.Same(route1, received.Route);
        }
        public void ConditionData_is_passed_to_condition_function()
        {
            var    route         = new Route("GET", "/test", App);
            object conditionData = "test data to pass to check method";
            object receivedDataFromCheckMethod = null;

            route.AddCondition(new RouteCondition(
                                   x => {
                receivedDataFromCheckMethod = x.ConditionData;
                return(true);
            },
                                   conditionData)
                               );

            var router = new Router();

            router.AddRoute(route);
            router.Resolve(FakeRequest.Get("/test"));

            Assert.Same(conditionData, receivedDataFromCheckMethod);
        }
        public void Owin_Environment_is_passed_to_condition_function()
        {
            var     route           = new Route("GET", "/test", App);
            OwinEnv receivedOwinEnv = null;

            route.AddCondition(new RouteCondition(data => {
                receivedOwinEnv = data.OwinEnv;
                return(true);
            }));

            var router = new Router();

            router.AddRoute(route);

            var owinEnv = Utils.BuildGetRequest("/test");

            owinEnv["test"] = true;

            router.Resolve(owinEnv);
            Assert.Equal(true, receivedOwinEnv["test"]);
        }
        public void Route_parameters_are_passed_to_condition_function()
        {
            var route = new Route("GET", @"/products/{ProductId}-{Name}", App);

            IDictionary <string, RouteValue> receivedParams = null;

            route.AddCondition(new RouteCondition(data => {
                receivedParams = data.RouteParameters;
                return(true);
            }));

            var router = new Router();

            router.AddRoute(route);
            router.Resolve(Utils.BuildGetRequest("/products/1234-myproduct"));

            Assert.Equal(new Dictionary <string, RouteValue>()
            {
                { "ProductId", new RouteValue("1234") },
                { "Name", new RouteValue("myproduct") }
            }, receivedParams);
        }