public void ShouldGetVariousScopesAsStrings() { _valueGetter.Initialize(Scope.OriginalUrl); Assert.AreEqual(_request1.OriginalUrlString, _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.OriginalUrlString, _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.OriginalUrlString, _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.Url); Assert.AreEqual(_request1.NewUrlString, _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.NewUrlString, _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.NewUrlString, _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.OriginalPath); Assert.AreEqual(_request1.OriginalPathString, _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.OriginalPathString, _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.OriginalPathString, _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.Path); Assert.AreEqual(_request1.NewPathString, _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.NewPathString, _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.NewPathString, _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.OriginalQueryString); Assert.AreEqual(_request1.OriginalParametersString, _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.OriginalParametersString, _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.OriginalParametersString, _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.QueryString); Assert.AreEqual(_request1.NewParametersString, _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.NewParametersString, _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.NewParametersString, _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.OriginalPathElement, 1); Assert.AreEqual(_request1.OriginalPath[1], _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.OriginalPath[1], _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.OriginalPath[1], _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.OriginalPathElement, -1); Assert.AreEqual("path2", _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual("path2", _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual("path2", _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.PathElement, 1); Assert.AreEqual(_request1.NewPath[1], _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.NewPath[1], _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.NewPath[1], _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.PathElement, -1); Assert.AreEqual("path2", _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual("changed2", _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual("changed2", _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.OriginalParameter, "param"); Assert.AreEqual("value", _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual("", _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual("", _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.Parameter, "param"); Assert.AreEqual("changed", _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual("", _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual("added", _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.Header, "HOST"); Assert.AreEqual(_request1.GetHeader("HOST"), _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.GetHeader("HOST"), _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.GetHeader("HOST"), _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.OriginalHeader, "USER_AGENT"); Assert.AreEqual(_request1.GetOriginalHeader("USER_AGENT"), _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.GetOriginalHeader("USER_AGENT"), _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.GetOriginalHeader("USER_AGENT"), _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.ServerVariable, "URL"); Assert.AreEqual(_request1.GetServerVariable("URL"), _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.GetServerVariable("URL"), _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.GetServerVariable("URL"), _valueGetter.GetString(_request3, _ruleResult)); _valueGetter.Initialize(Scope.OriginalServerVariable, "SERVER_PORT"); Assert.AreEqual(_request1.GetOriginalServerVariable("SERVER_PORT"), _valueGetter.GetString(_request1, _ruleResult)); Assert.AreEqual(_request2.GetOriginalServerVariable("SERVER_PORT"), _valueGetter.GetString(_request2, _ruleResult)); Assert.AreEqual(_request3.GetOriginalServerVariable("SERVER_PORT"), _valueGetter.GetString(_request3, _ruleResult)); _ruleResult.Properties.Set <IList <string> >(new List <string> { "match0", "match1", "match2" }, "R"); _ruleResult.Properties.Set <IList <string> >(new List <string> { "condition0", "condition1" }, "C"); _valueGetter.Initialize(Scope.MatchGroup, "0"); Assert.AreEqual("match0", _valueGetter.GetString(_request1, _ruleResult)); _valueGetter.Initialize(Scope.MatchGroup, "1"); Assert.AreEqual("match1", _valueGetter.GetString(_request1, _ruleResult)); _valueGetter.Initialize(Scope.MatchGroup, "2"); Assert.AreEqual("match2", _valueGetter.GetString(_request1, _ruleResult)); _valueGetter.Initialize(Scope.ConditionGroup, "0"); Assert.AreEqual("condition0", _valueGetter.GetString(_request1, _ruleResult)); _valueGetter.Initialize(Scope.ConditionGroup, "1"); Assert.AreEqual("condition1", _valueGetter.GetString(_request1, _ruleResult)); _valueGetter.Initialize(Scope.ConditionGroup, "2"); Assert.AreEqual("", _valueGetter.GetString(_request1, _ruleResult)); }