Commit ce576f2a ce576f2a59c0e5bbea8c7d783ece1afc6315b9b9 by Christian Gerdes

Two new plugins

ExtractionRule: Extract Cookie Value
RequestPlugin: Add Session Cookie
1 parent 582965e0
...@@ -23,6 +23,35 @@ using Microsoft.VisualStudio.TestTools.LoadTesting; ...@@ -23,6 +23,35 @@ using Microsoft.VisualStudio.TestTools.LoadTesting;
23 23
24 namespace LIL_VSTT_Plugins 24 namespace LIL_VSTT_Plugins
25 { 25 {
26 [DisplayName("Add Session Cookie")]
27 [Description("Adds a cookie to the webtest cookie collection for this request and all remaining requests in this session.")]
28 public class AddSessionCookie : WebTestRequestPlugin
29 {
30 [DisplayName("Cookie Name"), DefaultValue(""), Description("Name of the cookie to set.")]
31 public string CookieName { get; set; }
32 [DisplayName("Cookie Value"), DefaultValue(""), Description("Value of the cookie to set.")]
33 public string CookieValue { get; set; }
34 [DisplayName("Cookie Value Parameter Name"), DefaultValue(""), Description("Parameter for the cookie value. If the parameter is not found, the Cookie Value will be used instead.")]
35 public string CookieParameter { get; set; }
36 [DisplayName("Cookie Path"), DefaultValue("/"), Description("Path for the cookie to set. Cookie will only be sent if the URL Path matches.")]
37 public string CookiePath { get; set; }
38 [DisplayName("Cookie Domain"), DefaultValue(""), Description("Domain for the cookie to set. Cookie will only be sent if the host name matches.")]
39 public string CookieDomain { get; set; }
40 [DisplayName("Skip URL Encode"), DefaultValue(false), Description("By default the cookie value is URL Encoded for transfer. This will turn it off.")]
41 public bool SkipURLEncode { get; set; }
42 public override void PreRequestDataBinding(object sender, PreRequestDataBindingEventArgs e)
43 {
44 if (!String.IsNullOrEmpty(CookieParameter) && e.WebTest.Context.ContainsKey(CookieParameter))
45 CookieValue = e.WebTest.Context[CookieParameter].ToString();
46 if (!SkipURLEncode)
47 {
48 CookieValue = System.Net.WebUtility.UrlEncode(CookieValue);
49 CookieName = System.Net.WebUtility.UrlEncode(CookieName);
50 }
51 e.WebTest.Context.CookieContainer.Add(new System.Net.Cookie(CookieName, CookieValue, CookiePath, CookieDomain));
52 }
53 }
54
26 [DisplayName("Add Parameter To Reporting Name")] 55 [DisplayName("Add Parameter To Reporting Name")]
27 [Description("This request plugin will add the specified parameter to the end of the reporting name of the request")] 56 [Description("This request plugin will add the specified parameter to the end of the reporting name of the request")]
28 public class AddParameterToReportingName : WebTestRequestPlugin 57 public class AddParameterToReportingName : WebTestRequestPlugin
......
...@@ -108,4 +108,50 @@ namespace LIL_VSTT_Plugins ...@@ -108,4 +108,50 @@ namespace LIL_VSTT_Plugins
108 e.Success = true; 108 e.Success = true;
109 } 109 }
110 } 110 }
111
112 /// <summary>
113 /// Extract Cookie Value
114 /// Fångar värdet av en cookie till en parameter
115 /// </summary>
116 [DisplayName("Extract Cookie Value")]
117 [Description("(C) Copyright 2019 LIGHTS IN LINE AB\r\nExtracts the value of a cookie into a context parameter. Note: Can only find cookies that are valid for the current URI of the request.")]
118 public class ExtractCookie : ExtractionRule
119 {
120 // Indata
121
122 private string cookieName;
123 [DisplayName("Cookie Name")]
124 [Description("Name of the cookie to extract the value from")]
125 public string CookieName
126 {
127 get { return cookieName; }
128 set { cookieName = value; }
129 }
130
131 public override void Extract(object sender, ExtractionEventArgs e)
132 {
133 WebHeaderCollection col = e.Response.Headers;
134 foreach (string h in col.Keys)
135 {
136 if(h.Equals("Set-Cookie"))
137 {
138 string[] cookie = col[h].Split('=');
139 if(cookie[0].Equals(cookieName))
140 {
141 string value = "";
142 if (cookie.Length > 1)
143 {
144 value = cookie[1].Split(';')[0];
145 }
146 e.WebTest.Context.Add(this.ContextParameterName, WebUtility.UrlDecode(value));
147 e.Success = true;
148 e.Message = "Cookie found";
149 return;
150 }
151 }
152 }
153 e.Success = false;
154 e.Message = "Cookie not found";
155 }
156 }
111 } 157 }
......