Added FailOnMatch to XPath Validation Rule
Showing
2 changed files
with
29 additions
and
3 deletions
... | @@ -412,6 +412,7 @@ The extraction rule was created under the following request: | ... | @@ -412,6 +412,7 @@ The extraction rule was created under the following request: |
412 | validationTextReference.Type = typeof(XPathValidationRule); | 412 | validationTextReference.Type = typeof(XPathValidationRule); |
413 | validationTextReference.Properties.Add(new PluginOrRuleProperty("XPathToSearch", this.XPathTextBox.Text)); | 413 | validationTextReference.Properties.Add(new PluginOrRuleProperty("XPathToSearch", this.XPathTextBox.Text)); |
414 | validationTextReference.Properties.Add(new PluginOrRuleProperty("Index", "0")); | 414 | validationTextReference.Properties.Add(new PluginOrRuleProperty("Index", "0")); |
415 | validationTextReference.Properties.Add(new PluginOrRuleProperty("FailOnMatch", "False")); | ||
415 | validationTextReference.Properties.Add(new PluginOrRuleProperty("IgnoreCase", "True")); | 416 | validationTextReference.Properties.Add(new PluginOrRuleProperty("IgnoreCase", "True")); |
416 | validationTextReference.Properties.Add(new PluginOrRuleProperty("ExpectedValue", expectedValue)); | 417 | validationTextReference.Properties.Add(new PluginOrRuleProperty("ExpectedValue", expectedValue)); |
417 | 418 | ... | ... |
... | @@ -60,6 +60,15 @@ namespace WebTest.WebService.Plugin.Runtime | ... | @@ -60,6 +60,15 @@ namespace WebTest.WebService.Plugin.Runtime |
60 | set { ignoreCase = value; } | 60 | set { ignoreCase = value; } |
61 | } | 61 | } |
62 | 62 | ||
63 | private bool failOnMatch = false; | ||
64 | [DisplayName("FailOnMatch")] | ||
65 | [Description("Fails the validation if the xpath evaluates to the expected value. If it does not, or the xpath does not exist, the validation passes.")] | ||
66 | public bool FailOnMatch | ||
67 | { | ||
68 | get { return failOnMatch; } | ||
69 | set { failOnMatch = value; } | ||
70 | } | ||
71 | |||
63 | /// <summary> | 72 | /// <summary> |
64 | /// The Validation method. The parameter e contains the Web test context. | 73 | /// The Validation method. The parameter e contains the Web test context. |
65 | /// </summary> | 74 | /// </summary> |
... | @@ -86,6 +95,7 @@ namespace WebTest.WebService.Plugin.Runtime | ... | @@ -86,6 +95,7 @@ namespace WebTest.WebService.Plugin.Runtime |
86 | 95 | ||
87 | XPathNodeIterator iterator = contentHandler.EvaluateXPath(XPathToSearch); | 96 | XPathNodeIterator iterator = contentHandler.EvaluateXPath(XPathToSearch); |
88 | int i = 0; | 97 | int i = 0; |
98 | bool found = false; | ||
89 | while (iterator.MoveNext()) | 99 | while (iterator.MoveNext()) |
90 | { | 100 | { |
91 | XPathNavigator nav2 = iterator.Current.Clone(); | 101 | XPathNavigator nav2 = iterator.Current.Clone(); |
... | @@ -104,15 +114,22 @@ namespace WebTest.WebService.Plugin.Runtime | ... | @@ -104,15 +114,22 @@ namespace WebTest.WebService.Plugin.Runtime |
104 | 114 | ||
105 | if (ignoreCase) | 115 | if (ignoreCase) |
106 | { | 116 | { |
107 | e.IsValid = ExpectedValue.Equals(value, StringComparison.OrdinalIgnoreCase); | 117 | found = ExpectedValue.Equals(value, StringComparison.OrdinalIgnoreCase); |
108 | } | 118 | } |
109 | else | 119 | else |
110 | { | 120 | { |
111 | e.IsValid = ExpectedValue.Equals(value, StringComparison.Ordinal); | 121 | found = ExpectedValue.Equals(value, StringComparison.Ordinal); |
112 | } | 122 | } |
113 | 123 | ||
114 | if (i == Index || e.IsValid) | 124 | if (i == Index || found) |
125 | { | ||
126 | if(failOnMatch) | ||
127 | { | ||
128 | e.IsValid = false; | ||
129 | } else | ||
115 | { | 130 | { |
131 | e.IsValid = true; | ||
132 | } | ||
116 | return; | 133 | return; |
117 | } | 134 | } |
118 | } | 135 | } |
... | @@ -124,7 +141,15 @@ namespace WebTest.WebService.Plugin.Runtime | ... | @@ -124,7 +141,15 @@ namespace WebTest.WebService.Plugin.Runtime |
124 | e.Message = ex.Message; | 141 | e.Message = ex.Message; |
125 | } | 142 | } |
126 | 143 | ||
144 | // No match or no content | ||
145 | if (failOnMatch) | ||
146 | { | ||
147 | e.IsValid = true; | ||
148 | } | ||
149 | else | ||
150 | { | ||
127 | e.IsValid = false; | 151 | e.IsValid = false; |
152 | } | ||
128 | return; | 153 | return; |
129 | } | 154 | } |
130 | } | 155 | } | ... | ... |
-
Please register or sign in to post a comment