2 // HttpWebRequestCas.cs - CAS unit tests for System.Net.WebRequest class
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
10 using NUnit.Framework;
15 using System.Security;
16 using System.Security.Permissions;
17 using System.Threading;
19 namespace MonoCasTests.System.Net {
23 public class HttpWebRequestCas {
25 private const int timeout = 30000;
27 static ManualResetEvent reset;
28 private string message;
29 private string uri = "http://www.google.com";
32 public void FixtureSetUp ()
34 reset = new ManualResetEvent (false);
38 public void FixtureTearDown ()
46 if (!SecurityManager.SecurityEnabled)
47 Assert.Ignore ("SecurityManager.SecurityEnabled is OFF");
50 // async tests (for stack propagation)
52 private void GetRequestStreamCallback (IAsyncResult ar)
54 HttpWebRequest hwr = (HttpWebRequest)ar.AsyncState;
55 hwr.EndGetRequestStream (ar);
57 // can we do something bad here ?
58 Assert.IsNotNull (Environment.GetEnvironmentVariable ("USERNAME"));
59 message = "Expected a SecurityException";
61 catch (SecurityException) {
66 message = e.ToString ();
71 [EnvironmentPermission (SecurityAction.Deny, Read = "USERNAME")]
72 public void AsyncGetRequestStream ()
74 HttpWebRequest w = (HttpWebRequest)WebRequest.Create (uri);
76 message = "AsyncGetRequestStream";
78 IAsyncResult r = w.BeginGetRequestStream (new AsyncCallback (GetRequestStreamCallback), w);
79 Assert.IsNotNull (r, "IAsyncResult");
80 if (!reset.WaitOne (timeout, true))
81 Assert.Ignore ("Timeout");
82 Assert.IsNull (message, message);
85 private void GetResponseCallback (IAsyncResult ar)
87 HttpWebRequest hwr = (HttpWebRequest)ar.AsyncState;
88 hwr.EndGetResponse (ar);
90 // can we do something bad here ?
91 Assert.IsNotNull (Environment.GetEnvironmentVariable ("USERNAME"));
92 message = "Expected a SecurityException";
94 catch (SecurityException) {
99 message = e.ToString ();
104 [EnvironmentPermission (SecurityAction.Deny, Read = "USERNAME")]
105 public void AsyncGetResponse ()
107 HttpWebRequest w = (HttpWebRequest)WebRequest.Create (uri);
108 message = "AsyncGetResponse";
110 IAsyncResult r = w.BeginGetResponse (new AsyncCallback (GetResponseCallback), w);
111 Assert.IsNotNull (r, "IAsyncResult");
112 if (!reset.WaitOne (timeout, true))
113 Assert.Ignore ("Timeout");
114 Assert.IsNull (message, message);