mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Updating spec test cookie handling to support removing and updating existing cookies
--HG-- branch : dev
This commit is contained in:
@@ -4,6 +4,7 @@ using System.Diagnostics;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using System.Web.Hosting;
|
using System.Web.Hosting;
|
||||||
using Orchard.Specs.Util;
|
using Orchard.Specs.Util;
|
||||||
@@ -45,7 +46,28 @@ namespace Orchard.Specs.Hosting {
|
|||||||
string setCookie;
|
string setCookie;
|
||||||
if (details.ResponseHeaders.TryGetValue("Set-Cookie", out setCookie)) {
|
if (details.ResponseHeaders.TryGetValue("Set-Cookie", out setCookie)) {
|
||||||
Trace.WriteLine(string.Format("Set-Cookie: {0}", setCookie));
|
Trace.WriteLine(string.Format("Set-Cookie: {0}", setCookie));
|
||||||
webHost.Cookies = (webHost.Cookies + ';' + setCookie.Split(';').FirstOrDefault()).Trim(';');
|
var cookieName = setCookie.Split(';')[0].Split('=')[0];
|
||||||
|
DateTime expires;
|
||||||
|
if (!string.IsNullOrEmpty(webHost.Cookies)
|
||||||
|
&& setCookie.Contains("expires=")
|
||||||
|
&& DateTime.TryParse(setCookie.Split(new[] { "expires=" }, 2, StringSplitOptions.None)[1].Split(';')[0], out expires)
|
||||||
|
&& expires < DateTime.Now) {
|
||||||
|
// remove
|
||||||
|
Trace.WriteLine(string.Format("Removing cookie: {0}", cookieName));
|
||||||
|
webHost.Cookies = Regex.Replace(webHost.Cookies, string.Format("{0}=[^;]*;?", cookieName), "");
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(webHost.Cookies)
|
||||||
|
&& Regex.IsMatch(webHost.Cookies, string.Format("\b{0}=", cookieName))) {
|
||||||
|
// replace
|
||||||
|
Trace.WriteLine(string.Format("Replacing cookie: {0}", cookieName));
|
||||||
|
webHost.Cookies = Regex.Replace(webHost.Cookies, string.Format("{0}=[^;]*(;?)", cookieName), string.Format("{0}$1", setCookie.Split(';')[0]));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// add
|
||||||
|
Trace.WriteLine(string.Format("Adding cookie: {0}", cookieName));
|
||||||
|
webHost.Cookies = (webHost.Cookies + ';' + setCookie.Split(';').FirstOrDefault()).Trim(';');
|
||||||
|
}
|
||||||
|
Trace.WriteLine(string.Format("Cookie jar: {0}", webHost.Cookies));
|
||||||
}
|
}
|
||||||
|
|
||||||
return details;
|
return details;
|
||||||
|
Reference in New Issue
Block a user