예제 #1
0
        public void RelativeWithQueryString()
        {
            var request = new MockRequestInfo("path1/path2?param=value");

            Assert.AreEqual("path1/path2", request.OriginalPathString);
            Assert.AreEqual("param=value", request.OriginalParametersString);
            Assert.AreEqual("path1/path2", request.NewPathString);
            Assert.AreEqual("param=value", request.NewParametersString);

            var originalPath = request.OriginalPath;

            Assert.AreEqual(2, originalPath.Count);
            Assert.AreEqual("path1", originalPath[0]);
            Assert.AreEqual("path2", originalPath[1]);

            var originalParameters = request.OriginalParameters;

            Assert.AreEqual(1, originalParameters.Count);
            Assert.AreEqual("value", originalParameters["param"][0]);

            var newPath = request.NewPath;

            Assert.AreEqual(2, newPath.Count);
            Assert.AreEqual("path1", newPath[0]);
            Assert.AreEqual("path2", newPath[1]);

            var newParameters = request.NewParameters;

            Assert.AreEqual(1, newParameters.Count);
            Assert.AreEqual("value", newParameters["param"][0]);
        }
예제 #2
0
        public void ShouldGetDefaultNumberValues()
        {
            var request = new MockRequestInfo("/1/2?param1=3&param2=4&param1=5");

            request.NewPath[1] = "6";
            request.NewParameters.Add("param3", new List <string> {
                "7"
            });
            request.ParametersChanged();

            _valueGetter.Initialize(Scope.OriginalPathElement, 3);
            Assert.AreEqual(999, _valueGetter.GetInt(request, _ruleResult, 999));

            _valueGetter.Initialize(Scope.OriginalPathElement, -4);
            Assert.AreEqual(888, _valueGetter.GetInt(request, _ruleResult, 888));

            _valueGetter.Initialize(Scope.PathElement, 3);
            Assert.AreEqual(777, _valueGetter.GetInt(request, _ruleResult, 777));

            _valueGetter.Initialize(Scope.PathElement, -5);
            Assert.AreEqual(666, _valueGetter.GetInt(request, _ruleResult, 666));

            _valueGetter.Initialize(Scope.OriginalParameter, "nonexistant");
            Assert.AreEqual(555, _valueGetter.GetInt(request, _ruleResult, 555));
        }
예제 #3
0
        public void ShouldGetDefaultStringValues()
        {
            var request = new MockRequestInfo("/1/2?param1=3&param2=4&param1=5");

            request.NewPath[1] = "6";
            request.NewParameters.Add("param3", new List <string> {
                "7"
            });
            request.ParametersChanged();

            _valueGetter.Initialize(Scope.OriginalPathElement, 3);
            Assert.AreEqual("", _valueGetter.GetString(request, _ruleResult));

            _valueGetter.Initialize(Scope.OriginalPathElement, -4);
            Assert.AreEqual("", _valueGetter.GetString(request, _ruleResult));

            _valueGetter.Initialize(Scope.PathElement, 3);
            Assert.AreEqual("", _valueGetter.GetString(request, _ruleResult));

            _valueGetter.Initialize(Scope.PathElement, -5);
            Assert.AreEqual("", _valueGetter.GetString(request, _ruleResult));

            _valueGetter.Initialize(Scope.OriginalParameter, "nonexistant");
            Assert.AreEqual("", _valueGetter.GetString(request, _ruleResult));
        }
예제 #4
0
        public void ShouldGetVariousScopesAsNumbers()
        {
            var request = new MockRequestInfo(
                "/1/2?param1=3&param2=4&param1=5",
                "http",
                "www.test.com",
                80);

            request.NewPath[1] = "6";
            request.PathChanged();

            request.NewParameters.Add("param3", new List <string> {
                "7"
            });
            request.ParametersChanged();

            _valueGetter.Initialize(Scope.OriginalPathElement, 1);
            Assert.AreEqual(1, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.OriginalPathElement, 2);
            Assert.AreEqual(2, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.PathElement, 1);
            Assert.AreEqual(6, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.PathElement, 2);
            Assert.AreEqual(2, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.PathElement, -1);
            Assert.AreEqual(2, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.PathElement, -2);
            Assert.AreEqual(6, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.OriginalParameter, "param1");
            Assert.AreEqual(3, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.OriginalParameter, "param2");
            Assert.AreEqual(4, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.OriginalParameter, "param3");
            Assert.AreEqual(0, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.Parameter, "param1");
            Assert.AreEqual(3, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.Parameter, "param2");
            Assert.AreEqual(4, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.Parameter, "param3");
            Assert.AreEqual(7, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.Parameter, "param4");
            Assert.AreEqual(0, _valueGetter.GetInt(request, _ruleResult, 0));

            _valueGetter.Initialize(Scope.ServerVariable, "SERVER_PORT");
            Assert.AreEqual(80, _valueGetter.GetInt(request, _ruleResult, 0));
        }
예제 #5
0
        public void RelativeWithNoQueryString()
        {
            var request = new MockRequestInfo("path1/path2");

            Assert.AreEqual("path1/path2", request.OriginalPathString);
            Assert.AreEqual("", request.OriginalParametersString);
            Assert.AreEqual("path1/path2", request.NewPathString);
            Assert.AreEqual("", request.NewParametersString);

            var originalPath = request.OriginalPath;

            Assert.AreEqual(2, originalPath.Count);
            Assert.AreEqual("path1", originalPath[0]);
            Assert.AreEqual("path2", originalPath[1]);

            var originalParameters = request.OriginalParameters;

            Assert.AreEqual(0, originalParameters.Count);
        }