Author: andrews
Date: 2006-06-22 09:58:53 -0400 (Thu, 22 Jun 2006)
New Revision: 61934
Added:
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Response.cs
Removed:
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormPostback.cs
Modified:
trunk/mcs/class/System.Web/System.Web_test.dll.sources
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseRequest.cs
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormRequest.cs
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTest.cs
Log:
implemented simple postback test infrastructure
Modified: trunk/mcs/class/System.Web/System.Web_test.dll.sources
===================================================================
--- trunk/mcs/class/System.Web/System.Web_test.dll.sources 2006-06-22
10:56:03 UTC (rev 61933)
+++ trunk/mcs/class/System.Web/System.Web_test.dll.sources 2006-06-22
13:58:53 UTC (rev 61934)
@@ -12,14 +12,16 @@
mainsoft/MainsoftWebTest/HtmlAgilityPack/tools.cs
mainsoft/MainsoftWebTest/NunitWebTest.cs
mainsoft/MainsoftWebTest/XmlComparer.cs
-mainsoft/NunitWeb/NunitWeb/MyHandler.cs
-mainsoft/NunitWeb/NunitWeb/MyHost.cs
mainsoft/NunitWeb/NunitWeb/BaseInvoker.cs
mainsoft/NunitWeb/NunitWeb/BaseRequest.cs
mainsoft/NunitWeb/NunitWeb/BaseWorkerRequest.cs
+mainsoft/NunitWeb/NunitWeb/FormRequest.cs
+mainsoft/NunitWeb/NunitWeb/HandlerInvoker.cs
+mainsoft/NunitWeb/NunitWeb/MyHandler.cs
+mainsoft/NunitWeb/NunitWeb/MyHost.cs
mainsoft/NunitWeb/NunitWeb/PageDelegates.cs
-mainsoft/NunitWeb/NunitWeb/HandlerInvoker.cs
mainsoft/NunitWeb/NunitWeb/PageInvoker.cs
+mainsoft/NunitWeb/NunitWeb/Response.cs
mainsoft/NunitWeb/NunitWeb/StandardUrl.cs
mainsoft/NunitWeb/NunitWeb/WebTest.cs
System.Web/HttpCacheVaryByHeadersTest.cs
Modified:
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseRequest.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseRequest.cs
2006-06-22 10:56:03 UTC (rev 61933)
+++ trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/BaseRequest.cs
2006-06-22 13:58:53 UTC (rev 61934)
@@ -38,10 +38,15 @@
///
public virtual HttpWorkerRequest CreateWorkerRequest ()
{
- StringWriter wr = new StringWriter ();
- BaseWorkerRequest br = new BaseWorkerRequest (Url, "",
wr);
+ StringWriter wr = new StringWriter ();
+ BaseWorkerRequest br = new BaseWorkerRequest (Url,
GetQueryString (), wr);
((IDictionary) br) [GetType ()] = wr;
return br;
+ }
+
+ protected virtual string GetQueryString ()
+ {
+ return "";
}
/// <summary>
@@ -50,14 +55,16 @@
/// <param name="request">this must be the same request that
was returned by
/// CreateWorkerRequest</param>
/// <returns></returns>
- public virtual string GetRequestResult (HttpWorkerRequest
request)
+ public virtual Response GetRequestResult (HttpWorkerRequest
request)
{
BaseWorkerRequest br = (BaseWorkerRequest) request;
IDictionary d = (IDictionary) br;
TextWriter wr = (TextWriter) d[GetType ()];
d.Remove (GetType ());
- wr.Close ();
- return wr.ToString ();
+ wr.Close ();
+ Response r = new Response ();
+ r.Body = wr.ToString ();
+ return r;
}
}
}
Deleted:
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormPostback.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormPostback.cs
2006-06-22 10:56:03 UTC (rev 61933)
+++ trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormPostback.cs
2006-06-22 13:58:53 UTC (rev 61934)
@@ -1,27 +0,0 @@
-using System;
-using System.Collections.Specialized;
-
-namespace MonoTests.SystemWeb.Framework
-{
- [Serializable]
- public class FormPostback:FormRequest
- {
- internal FormPostback (string url, NameValueCollection fields)
- :base (url)
- {
- this._fields = fields;
- }
-
- private NameValueCollection _fields;
- public NameValueCollection Fields
- {
- get { return Fields; }
- }
-
- public virtual string Url
- {
- get { return base.Url; }
- set { throw new Exception ("Must not change Url of
FormPostback"); }
- }
- }
-}
Modified:
trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormRequest.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormRequest.cs
2006-06-22 10:56:03 UTC (rev 61933)
+++ trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/FormRequest.cs
2006-06-22 13:58:53 UTC (rev 61934)
@@ -1,39 +1,24 @@
using System;
-using System.Xml;
using System.Collections.Specialized;
+using System.Text;
using System.Web;
using System.IO;
-using System.Text;
+using System.Collections;
+using System.Xml;
namespace MonoTests.SystemWeb.Framework
{
- [Serializable]
- public class FormRequest: BaseRequest
+ [Serializable]
+ public class FormRequest : BaseRequest
{
- public FormRequest ()
+ public FormRequest (Response response, string formId)
{
- }
+ fields = new NameValueCollection();
- public FormRequest (string url)
- :base (url)
- {
- }
-
- [NonSerialized]
- string lastResult;
-
- public virtual string GetRequestResult (HttpWorkerRequest
request)
- {
- lastResult = base.GetRequestResult (request);
- return lastResult;
- }
-
- public FormPostback CreateNext (string formId)
- {
HtmlAgilityPack.HtmlDocument htmlDoc = new
HtmlAgilityPack.HtmlDocument ();
- htmlDoc.LoadHtml (lastResult);
+ htmlDoc.LoadHtml (response.Body);
- StringBuilder tempxml = new StringBuilder ();
+ StringBuilder tempxml = new StringBuilder ();
StringWriter tsw = new StringWriter (tempxml);
htmlDoc.OptionOutputAsXml = true;
htmlDoc.Save (tsw);
@@ -41,21 +26,65 @@
XmlDocument doc = new XmlDocument ();
doc.LoadXml (tempxml.ToString ());
- XmlNode formNode = doc.SelectSingleNode ("[EMAIL
PROTECTED]" + formId + "]");
+ const string HTML_NAMESPACE =
"http://www.w3.org/1999/xhtml";
+
+ XmlNamespaceManager nsmgr = new XmlNamespaceManager
(doc.NameTable);
+ nsmgr.AddNamespace ("html", HTML_NAMESPACE);
+
+#if USE_CORRECT_FORMID
+ XmlNode formNode = doc.SelectSingleNode ("//html:[EMAIL
PROTECTED]'" + formId + "']", nsmgr);
+#else
+ XmlNode formNode = doc.SelectSingleNode ("//html:form",
nsmgr);
+#endif
if (formNode == null)
throw new ArgumentException ("Form with id='" +
formId +
- "' was not found in document: " +
lastResult);
+ "' was not found in document: " +
response.Body);
- string targetUrl = formNode.Attributes ["action"].Value;
- if (targetUrl == null)
- targetUrl = this.Url;
+ string actionUrl = formNode.Attributes["action"].Value;
+ if (!string.IsNullOrEmpty (actionUrl))
+ base.Url = actionUrl;
+#if USE_CORRECT_FORMID
- NameValueCollection fields = new NameValueCollection ();
- foreach (XmlNode inputNode in formNode.SelectNodes
("input"))
- fields.Add (inputNode.Attributes["name"].Value,
- inputNode.Attributes["value"].Value);
+ foreach (XmlNode inputNode in formNode.SelectNodes
("//html:input", nsmgr))
+#else
+ foreach (XmlNode inputNode in doc.SelectNodes
("//html:input", nsmgr))
+#endif
+ {
+ string name;
+ string value = "";
+ name = inputNode.Attributes["name"].Value;
+ if (inputNode.Attributes["value"] != null)
+ value =
inputNode.Attributes["value"].Value;
+ fields.Add (name, value);
+ }
+ }
- return new FormPostback (targetUrl, fields);
+ private NameValueCollection fields;
+ public NameValueCollection Fields
+ {
+ get { return fields; }
}
+
+ public override string Url
+ {
+ get { return base.Url; }
+ set { throw new Exception ("Must not change Url of
FormPostback"); }
+ }
+
+ protected override string GetQueryString ()
+ {
+ StringBuilder query = new StringBuilder ();
+ bool first = true;
+ foreach (string key in Fields.AllKeys) {
+ if (first)
+ first = false;
+ else
+ query.Append ("&");
+ query.Append (HttpUtility.UrlEncode (key));
+ query.Append ("=");
+ query.Append (HttpUtility.UrlEncode
(Fields[key]));
+ }
+ return query.ToString ();
+ }
}
}
Modified: trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs
2006-06-22 10:56:03 UTC (rev 61933)
+++ trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs
2006-06-22 13:58:53 UTC (rev 61934)
@@ -28,7 +28,7 @@
public AppDomain AppDomain
{ get { return AppDomain.CurrentDomain; } }
- public string Run (BaseInvoker invoker, BaseRequest request)
+ public Response Run (BaseInvoker invoker, BaseRequest request)
{
HttpWorkerRequest wr = request.CreateWorkerRequest ();
IDictionary d = (IDictionary) wr;
@@ -40,13 +40,13 @@
d[GetType ()] = data;
HttpRuntime.ProcessRequest (wr);
- string res = request.GetRequestResult (wr);
+ Response res = request.GetRequestResult (wr);
if (data.exception != null)
RethrowException (data.exception);
if (!data.invoked)
- throw new Exception ("internal error:
ProcessRequest did not reach WebTest.Invoke; response was: " + res);
+ throw new Exception ("internal error:
ProcessRequest did not reach WebTest.Invoke; response was: " + res.Body);
return res;
}
Added: trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Response.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Response.cs
2006-06-22 10:56:03 UTC (rev 61933)
+++ trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/Response.cs
2006-06-22 13:58:53 UTC (rev 61934)
@@ -0,0 +1,10 @@
+using System;
+
+namespace MonoTests.SystemWeb.Framework
+{
+ [Serializable]
+ public class Response
+ {
+ public string Body;
+ }
+}
Modified: trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTest.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTest.cs
2006-06-22 10:56:03 UTC (rev 61933)
+++ trunk/mcs/class/System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTest.cs
2006-06-22 13:58:53 UTC (rev 61934)
@@ -6,7 +6,13 @@
namespace MonoTests.SystemWeb.Framework
{
public class WebTest
- {
+ {
+ Response _response;
+ public Response Response
+ {
+ get { return _response; }
+ }
+
BaseInvoker _invoker;
public BaseInvoker Invoker
{
@@ -40,7 +46,8 @@
{
if (Request.Url == null)
Request.Url = Invoker.GetDefaultUrl ();
- return Host.Run (Invoker, Request);
+ _response = Host.Run (Invoker, Request);
+ return _response.Body;
}
public static void Invoke (object param)
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches