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