Author: gert
Date: 2007-11-07 11:24:21 -0500 (Wed, 07 Nov 2007)
New Revision: 89119

Added:
   trunk/gert/standalone/bug339330/
   trunk/gert/standalone/bug339330/default.build
   trunk/gert/standalone/bug339330/test.cs
Log:
Added test for bug #339330.


Added: trunk/gert/standalone/bug339330/default.build
===================================================================
--- trunk/gert/standalone/bug339330/default.build       2007-11-07 16:13:09 UTC 
(rev 89118)
+++ trunk/gert/standalone/bug339330/default.build       2007-11-07 16:24:21 UTC 
(rev 89119)
@@ -0,0 +1,51 @@
+<project name="bug339330" default="rebuild">
+       <target name="mono-2.0">
+               <property name="csc.defines" 
value="NET_1_0,NET_1_1,NET_2_0,ONLY_2_0,MONO" />
+       </target>
+
+       <target name="net-2.0">
+               <property name="csc.defines" 
value="NET_1_0,NET_1_1,NET_2_0,ONLY_2_0" />
+       </target>
+
+       <property name="frameworks" value="mono-2.0,net-2.0" />
+
+       <target name="clean">
+               <delete>
+                       <fileset>
+                               <include name="out" />
+                               <include name="test.exe" />
+                       </fileset>
+               </delete>
+       </target>
+
+       <target name="build">
+               <property name="original.targetframework" 
value="${nant.settings.currentframework}" />
+
+               <foreach property="framework" item="String" in="${frameworks}" 
delim=",">
+                       <if test="${framework::exists(framework)}">
+                               <property name="nant.settings.currentframework" 
value="${framework}" />
+                               <call 
target="${nant.settings.currentframework}" />
+                               <call target="run" />
+                               <call target="clean" />
+                       </if>
+               </foreach>
+
+               <property name="nant.settings.currentframework" 
value="${original.targetframework}" />
+       </target>
+
+       <target name="compile">
+               <csc target="exe" define="${csc.defines}" output="test.exe" 
warnaserror="true" warninglevel="4">
+                       <sources>
+                               <include name="../../build/common/Assert.cs" />
+                               <include name="test.cs" />
+                       </sources>
+               </csc>
+       </target>
+
+       <target name="run" depends="compile">
+               <exec program="test.exe" managed="true" output="out" />
+               <fail if="${file::exists('out')}" />
+       </target>
+
+       <target name="rebuild" depends="clean, build" />
+</project>


Property changes on: trunk/gert/standalone/bug339330/default.build
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/gert/standalone/bug339330/test.cs
===================================================================
--- trunk/gert/standalone/bug339330/test.cs     2007-11-07 16:13:09 UTC (rev 
89118)
+++ trunk/gert/standalone/bug339330/test.cs     2007-11-07 16:24:21 UTC (rev 
89119)
@@ -0,0 +1,101 @@
+using System;
+using System.Net;
+using System.Text;
+using System.Threading;
+
+class Program
+{
+       static void Main ()
+       {
+               Server server = new Server ();
+               server.Start ();
+
+               Client client = new Client ();
+
+               try {
+                       client.SendRequest (false, false);
+                       Assert.Fail ("#A1");
+               } catch (WebException ex) {
+                       Assert.IsNotNull (ex.Response, "#A2");
+                       Assert.IsTrue (ex.Response is HttpWebResponse, "#A3");
+
+                       HttpWebResponse response = (HttpWebResponse) 
ex.Response;
+                       Assert.AreEqual (HttpStatusCode.Unauthorized, 
response.StatusCode, "#A4");
+                       Assert.IsNull (ex.InnerException, "#A5");
+                       Assert.IsFalse (server.Callback, "#A6");
+               }
+
+               server.Reset ();
+
+               client.SendRequest (true, false);
+               Thread.Sleep (200);
+               Assert.IsTrue (server.Callback, "#B");
+
+               server.Stop ();
+       }
+}
+
+public class Client
+{
+       public void SendRequest (bool creds, bool preauth)
+       {
+               HttpWebResponse response;
+               HttpWebRequest request = (HttpWebRequest) WebRequest.Create 
("http://127.0.0.1:9675/authtest/";);
+
+               if (creds) {
+                       request.Credentials = new NetworkCredential 
("username", "password");
+                       if (preauth) {
+                               request.PreAuthenticate = true;
+                       }
+               }
+
+               response = (HttpWebResponse) request.GetResponse ();
+
+               response.Close ();
+       }
+}
+
+public class Server
+{
+       private HttpListener _listener;
+       private bool _callback;
+
+       public Server ()
+       {
+               _listener = new HttpListener ();
+               _listener.Prefixes.Add ("http://*:9675/authtest/";);
+               _listener.AuthenticationSchemes = AuthenticationSchemes.Basic;
+       }
+
+       public bool Callback {
+               get { return _callback; }
+       }
+
+       public void Start ()
+       {
+               _listener.Start ();
+               _listener.BeginGetContext (new AsyncCallback 
(ListenerCallback), _listener);
+       }
+
+       public void Reset ()
+       {
+               _callback = false;
+       }
+
+       public void Stop ()
+       {
+               _listener.Close ();
+       }
+
+       void ListenerCallback (IAsyncResult result)
+       {
+               HttpListener listener = (HttpListener) result.AsyncState;
+               HttpListenerContext context = listener.EndGetContext (result);
+               HttpListenerResponse response = context.Response;
+
+               response.OutputStream.Close ();
+
+               listener.BeginGetContext (new AsyncCallback (ListenerCallback), 
listener);
+               _callback = true;
+       }
+}


Property changes on: trunk/gert/standalone/bug339330/test.cs
___________________________________________________________________
Name: svn:eol-style
   + native

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to