2 // FileWebRequestCas.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 FileWebRequestCas {
25 private const int timeout = 30000;
27 static ManualResetEvent reset;
28 private string message;
33 public void FixtureSetUp ()
35 reset = new ManualResetEvent (false);
39 public void FixtureTearDown ()
47 if (!SecurityManager.SecurityEnabled)
48 Assert.Ignore ("SecurityManager.SecurityEnabled is OFF");
50 // unique uri for each test
51 file = Path.GetTempFileName ();
52 // to please both Windows and Unix file systems
53 uri = ((file [0] == '/') ? "file://" : "file:///") + file.Replace ('\\', '/');
56 // async tests (for stack propagation)
58 private void GetRequestStreamCallback (IAsyncResult ar)
60 FileWebRequest fwr = (FileWebRequest)ar.AsyncState;
61 fwr.EndGetRequestStream (ar);
63 // can we do something bad here ?
64 Assert.IsNotNull (Environment.GetEnvironmentVariable ("USERNAME"));
65 message = "Expected a SecurityException";
67 catch (SecurityException) {
72 message = e.ToString ();
77 [EnvironmentPermission (SecurityAction.Deny, Read = "USERNAME")]
78 public void AsyncGetRequestStream ()
80 if (File.Exists (file))
82 FileWebRequest w = (FileWebRequest)WebRequest.Create (uri);
84 message = "AsyncGetRequestStream";
86 IAsyncResult r = w.BeginGetRequestStream (new AsyncCallback (GetRequestStreamCallback), w);
87 Assert.IsNotNull (r, "IAsyncResult");
88 if (!reset.WaitOne (timeout, true))
89 Assert.Ignore ("Timeout");
90 Assert.IsNull (message, message);
93 private void GetResponseCallback (IAsyncResult ar)
95 FileWebRequest fwr = (FileWebRequest)ar.AsyncState;
96 fwr.EndGetResponse (ar);
98 // can we do something bad here ?
99 Assert.IsNotNull (Environment.GetEnvironmentVariable ("USERNAME"));
100 message = "Expected a SecurityException";
102 catch (SecurityException) {
106 catch (Exception e) {
107 message = e.ToString ();
112 [EnvironmentPermission (SecurityAction.Deny, Read = "USERNAME")]
113 public void AsyncGetResponse ()
115 FileWebRequest w = (FileWebRequest)WebRequest.Create (uri);
116 message = "AsyncGetResponse";
118 IAsyncResult r = w.BeginGetResponse (new AsyncCallback (GetResponseCallback), w);
119 Assert.IsNotNull (r, "IAsyncResult");
120 if (!reset.WaitOne (timeout, true))
121 Assert.Ignore ("Timeout");
122 Assert.IsNull (message, message);