FileWebRequestTest.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. //
  2. // FileWebRequestTest.cs - NUnit Test Cases for System.Net.FileWebRequest
  3. //
  4. // Author:
  5. // Lawrence Pit ([email protected])
  6. //
  7. using NUnit.Framework;
  8. using System;
  9. using System.IO;
  10. using System.Net;
  11. using System.Collections;
  12. using System.Security;
  13. using System.Security.Permissions;
  14. namespace MonoTests.System.Net
  15. {
  16. public class FileWebRequestTest : TestCase
  17. {
  18. public FileWebRequestTest () :
  19. base ("[MonoTests.System.Net.FileWebRequestTest]") {}
  20. public FileWebRequestTest (string name) : base (name) {}
  21. protected override void SetUp () {}
  22. protected override void TearDown () {}
  23. public static ITest Suite
  24. {
  25. get {
  26. return new TestSuite (typeof (FileWebRequestTest));
  27. }
  28. }
  29. public void TestAll ()
  30. {
  31. string tmpdir = Environment.GetEnvironmentVariable ("TMPDIR");
  32. if (tmpdir == null || tmpdir.Length == 0) {
  33. Console.WriteLine ("\n\nSet environment variable TMPDIR to a temporary directory to test FileWebRequest\n");
  34. return;
  35. }
  36. tmpdir = tmpdir.Replace ('\\', '/');
  37. if (tmpdir [tmpdir.Length - 1] != '/')
  38. tmpdir += "/";
  39. string tmpFilename = tmpdir + "FileWebRequestTest.tmp";
  40. try {
  41. if (File.Exists (tmpFilename))
  42. File.Delete (tmpFilename);
  43. Uri uri = new Uri ("file:///" + tmpFilename);
  44. WebRequest req = WebRequest.Create (uri);
  45. try {
  46. Stream stream = req.GetRequestStream ();
  47. Fail ("should throw exception");
  48. } catch (ProtocolViolationException) {}
  49. req.Method = "PUT";
  50. Stream wstream = req.GetRequestStream ();
  51. AssertEquals ("#1r", false, wstream.CanRead);
  52. AssertEquals ("#1w", true, wstream.CanWrite);
  53. AssertEquals ("#1s", true, wstream.CanSeek);
  54. wstream.WriteByte (72);
  55. wstream.WriteByte (101);
  56. wstream.WriteByte (108);
  57. wstream.WriteByte (108);
  58. wstream.WriteByte (111);
  59. wstream.Close ();
  60. // stream written
  61. req = WebRequest.Create (uri);
  62. WebResponse res = req.GetResponse ();
  63. AssertEquals ("#2 len", (long) 5, res.ContentLength);
  64. AssertEquals ("#2 type", "binary/octet-stream", res.ContentType);
  65. AssertEquals ("#2 scheme", "file", res.ResponseUri.Scheme);
  66. Stream rstream = res.GetResponseStream ();
  67. AssertEquals ("#3r", true, rstream.CanRead);
  68. AssertEquals ("#3w", false, rstream.CanWrite);
  69. AssertEquals ("#3s", true, rstream.CanSeek);
  70. AssertEquals ("#4a", 72, rstream.ReadByte ());
  71. AssertEquals ("#4b", 101, rstream.ReadByte ());
  72. AssertEquals ("#4c", 108, rstream.ReadByte ());
  73. rstream.Close ();
  74. // res.Close ();
  75. try {
  76. long len = res.ContentLength;
  77. AssertEquals ("#5", (long) 5, len);
  78. } catch (ObjectDisposedException) {
  79. Fail ("#disposed contentlength");
  80. }
  81. try {
  82. WebHeaderCollection w = res.Headers;
  83. } catch (ObjectDisposedException) {
  84. Fail ("#disposed headers");
  85. }
  86. try {
  87. res.Close ();
  88. } catch (ObjectDisposedException) {
  89. Fail ("#disposed close");
  90. }
  91. } finally {
  92. try {
  93. File.Delete (tmpFilename);
  94. } catch (Exception) { }
  95. }
  96. }
  97. }
  98. }