2
0

FileWebRequestCas.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. //
  2. // FileWebRequestCas.cs - CAS unit tests for System.Net.WebRequest class
  3. //
  4. // Author:
  5. // Sebastien Pouliot <[email protected]>
  6. //
  7. // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
  8. //
  9. using NUnit.Framework;
  10. using System;
  11. using System.IO;
  12. using System.Net;
  13. using System.Security;
  14. using System.Security.Permissions;
  15. using System.Threading;
  16. namespace MonoCasTests.System.Net {
  17. [TestFixture]
  18. [Category ("CAS")]
  19. public class FileWebRequestCas {
  20. private const int timeout = 30000;
  21. static ManualResetEvent reset;
  22. private string message;
  23. private string uri;
  24. private string file;
  25. [TestFixtureSetUp]
  26. public void FixtureSetUp ()
  27. {
  28. reset = new ManualResetEvent (false);
  29. }
  30. [TestFixtureTearDown]
  31. public void FixtureTearDown ()
  32. {
  33. reset.Close ();
  34. }
  35. [SetUp]
  36. public void SetUp ()
  37. {
  38. if (!SecurityManager.SecurityEnabled)
  39. Assert.Ignore ("SecurityManager.SecurityEnabled is OFF");
  40. // unique uri for each test
  41. file = Path.GetTempFileName ();
  42. // to please both Windows and Unix file systems
  43. uri = ((file [0] == '/') ? "file://" : "file:///") + file.Replace ('\\', '/');
  44. }
  45. // async tests (for stack propagation)
  46. private void GetRequestStreamCallback (IAsyncResult ar)
  47. {
  48. FileWebRequest fwr = (FileWebRequest)ar.AsyncState;
  49. fwr.EndGetRequestStream (ar);
  50. try {
  51. // can we do something bad here ?
  52. Assert.IsNotNull (Environment.GetEnvironmentVariable ("USERNAME"));
  53. message = "Expected a SecurityException";
  54. }
  55. catch (SecurityException) {
  56. message = null;
  57. reset.Set ();
  58. }
  59. catch (Exception e) {
  60. message = e.ToString ();
  61. }
  62. }
  63. [Test]
  64. [EnvironmentPermission (SecurityAction.Deny, Read = "USERNAME")]
  65. public void AsyncGetRequestStream ()
  66. {
  67. if (File.Exists (file))
  68. File.Delete (file);
  69. FileWebRequest w = (FileWebRequest)WebRequest.Create (uri);
  70. w.Method = "PUT";
  71. message = "AsyncGetRequestStream";
  72. reset.Reset ();
  73. IAsyncResult r = w.BeginGetRequestStream (new AsyncCallback (GetRequestStreamCallback), w);
  74. Assert.IsNotNull (r, "IAsyncResult");
  75. if (!reset.WaitOne (timeout, true))
  76. Assert.Ignore ("Timeout");
  77. Assert.IsNull (message, message);
  78. }
  79. private void GetResponseCallback (IAsyncResult ar)
  80. {
  81. FileWebRequest fwr = (FileWebRequest)ar.AsyncState;
  82. fwr.EndGetResponse (ar);
  83. try {
  84. // can we do something bad here ?
  85. Assert.IsNotNull (Environment.GetEnvironmentVariable ("USERNAME"));
  86. message = "Expected a SecurityException";
  87. }
  88. catch (SecurityException) {
  89. message = null;
  90. reset.Set ();
  91. }
  92. catch (Exception e) {
  93. message = e.ToString ();
  94. }
  95. }
  96. [Test]
  97. [EnvironmentPermission (SecurityAction.Deny, Read = "USERNAME")]
  98. public void AsyncGetResponse ()
  99. {
  100. FileWebRequest w = (FileWebRequest)WebRequest.Create (uri);
  101. message = "AsyncGetResponse";
  102. reset.Reset ();
  103. IAsyncResult r = w.BeginGetResponse (new AsyncCallback (GetResponseCallback), w);
  104. Assert.IsNotNull (r, "IAsyncResult");
  105. if (!reset.WaitOne (timeout, true))
  106. Assert.Ignore ("Timeout");
  107. Assert.IsNull (message, message);
  108. }
  109. }
  110. }