Commit 35418d67 35418d674e1b245caf365b1bab4c525acf549e27 by Christian Gerdes

New Requst Plugin

- ExtractRegularExpressionFromResources
Will add regular expression extranction rule to dependent (dynamic and static) requests.
1 parent baddbbf1
...@@ -433,6 +433,78 @@ namespace LIL_VSTT_Plugins ...@@ -433,6 +433,78 @@ namespace LIL_VSTT_Plugins
433 } 433 }
434 } 434 }
435 435
436 [DisplayName("Extract Regular Expression From Dependents"), Description("Extracts data matching a regular expression from dependents belonging to this request")]
437 public class ExtractRegularExpressionFromResources : WebTestRequestPlugin
438 {
439 [DisplayName("Match Dependents"), Description("If specified, this regular expression must match the dependent. If empty, the extraction rule will be applied to all dependents.")]
440 public String DepRegex { get; set; }
441
442 [DisplayName("Context Parameter Name"), Description("Parameter name for the Extraction Rule")]
443 [Category("Extract Regular Expression Rule")]
444 public String ContextParameterName { get; set; }
445
446 [DisplayName("Regular Expression"), Description("Regular Expression for the Extraction rule")]
447 [Category("Extract Regular Expression Rule")]
448 public String RegularExpression { get; set; }
449
450 [DisplayName("Ignore Case"), Description("Ignore Case for the Extraction rule")]
451 [Category("Extract Regular Expression Rule")]
452 [DefaultValue(false)]
453 public bool IgnoreCase { get; set; }
454
455 [DisplayName("Required"), Description("Required for the Extraction rule")]
456 [Category("Extract Regular Expression Rule")]
457 [DefaultValue(true)]
458 public bool Required { get; set; }
459
460 [DisplayName("Index"), Description("Index for the Extraction rule")]
461 [Category("Extract Regular Expression Rule")]
462 [DefaultValue(0)]
463 public int Index { get; set; }
464
465 [DisplayName("Html Decode"), Description("Html Decode for the Extraction rule")]
466 [Category("Extract Regular Expression Rule")]
467 [DefaultValue(true)]
468 public bool HtmlDecode { get; set; }
469
470 [DisplayName("Use Groups"), Description("Use Groups for the Extraction rule")]
471 [Category("Extract Regular Expression Rule")]
472 [DefaultValue(false)]
473 public bool UseGroups { get; set; }
474
475 public override void PostRequest(object sender, PostRequestEventArgs e)
476 {
477 base.PostRequest(sender, e);
478 Regex rx = null;
479 if(!String.IsNullOrEmpty(DepRegex))
480 {
481 rx = new Regex(DepRegex);
482 }
483 e.WebTest.ResponseBodyCaptureLimit = 10000000;
484 if (e.Request.HasDependentRequests)
485 {
486 foreach (WebTestRequest r in e.Request.DependentRequests)
487 {
488 if (rx != null && rx.IsMatch(r.Url))
489 {
490 ExtractionRuleReference ef = new ExtractionRuleReference(typeof(ExtractRegularExpression));
491 ef.ContextParameterName = ContextParameterName;
492 ef.DisplayName = "AutoExtractDisplayName";
493 ef.Description = "AutoExtractDescription";
494 ef.ExecutionOrder = RuleExecutionOrder.BeforeDependents;
495 ef.Properties.Add("RegularExpression", RegularExpression);
496 ef.Properties.Add("IgnoreCase", IgnoreCase.ToString());
497 ef.Properties.Add("Required", Required.ToString());
498 ef.Properties.Add("Index", Index.ToString());
499 ef.Properties.Add("HtmlDecode", HtmlDecode.ToString());
500 ef.Properties.Add("UseGroups", UseGroups.ToString());
501 r.ExtractionRuleReferences.Add(ef);
502 }
503 }
504 }
505 }
506 }
507
436 [DisplayName("Regular Expression Loop"), Description("Loop Condition that matches once on each regexp in previous response body")] 508 [DisplayName("Regular Expression Loop"), Description("Loop Condition that matches once on each regexp in previous response body")]
437 public class RegExpLoop : ConditionalRule 509 public class RegExpLoop : ConditionalRule
438 { 510 {
......