| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- //
- // FileWebResponseTest.cs - NUnit Test Cases for System.Net.FileWebResponse
- //
- // Authors:
- // Gert Driesen ([email protected])
- //
- // (C) 2007 Gert Driesen
- //
- using System;
- using System.IO;
- using System.Net;
- using NUnit.Framework;
- namespace MonoTests.System.Net
- {
- [TestFixture]
- public class FileWebResponseTest
- {
- private string _tempDirectory;
- private string _tempFile;
- private Uri _tempFileUri;
- [SetUp]
- public void SetUp ()
- {
- _tempDirectory = Path.Combine (Path.GetTempPath (), "MonoTests.System.Net.FileWebResponseTest");
- _tempFile = Path.Combine (_tempDirectory, "FileWebResponseTest.tmp");
- if (!Directory.Exists (_tempDirectory)) {
- Directory.CreateDirectory (_tempDirectory);
- } else {
- // ensure no files are left over from previous runs
- string [] files = Directory.GetFiles (_tempDirectory, "*");
- foreach (string file in files)
- File.Delete (file);
- }
- _tempFileUri = GetTempFileUri ();
- }
- [TearDown]
- public void TearDown ()
- {
- if (Directory.Exists (_tempDirectory)) {
- string [] files = Directory.GetFiles (_tempDirectory, "*");
- foreach (string file in files)
- File.Delete (file);
- Directory.Delete (_tempDirectory, true);
- }
- }
- [Test]
- public void ContentLength ()
- {
- FileWebRequest req = (FileWebRequest) WebRequest.Create (_tempFileUri);
- req.Method = "PUT";
- req.ContentLength = 100;
- using (Stream s = req.GetRequestStream ()) {
- s.WriteByte (72);
- s.WriteByte (110);
- s.WriteByte (80);
- s.Flush ();
- }
- req = (FileWebRequest) WebRequest.Create (_tempFileUri);
- using (FileWebResponse resp = (FileWebResponse) req.GetResponse ()) {
- Assert.AreEqual (3, resp.ContentLength, "#1");
- Assert.AreEqual (2, resp.Headers.Count, "#2");
- Assert.AreEqual ("Content-Length", resp.Headers.Keys [0], "#3");
- Assert.AreEqual ("3", resp.Headers.Get (0), "#4");
- resp.Headers.Clear ();
- Assert.AreEqual (3, resp.ContentLength, "#5");
- Assert.AreEqual (0, resp.Headers.Count, "#6");
- }
- }
- [Test]
- public void ContentType ()
- {
- FileWebRequest req = (FileWebRequest) WebRequest.Create (_tempFileUri);
- req.Method = "PUT";
- req.ContentType = "image/png";
- using (Stream s = req.GetRequestStream ()) {
- s.WriteByte (72);
- s.WriteByte (110);
- s.WriteByte (80);
- s.Flush ();
- }
- req = (FileWebRequest) WebRequest.Create (_tempFileUri);
- using (FileWebResponse resp = (FileWebResponse) req.GetResponse ()) {
- Assert.AreEqual ("application/octet-stream", resp.ContentType, "#1");
- Assert.AreEqual (2, resp.Headers.Count, "#2");
- Assert.AreEqual ("Content-Type", resp.Headers.Keys [1], "#3");
- Assert.AreEqual ("application/octet-stream", resp.Headers.Get (1), "#4");
- resp.Headers.Clear ();
- Assert.AreEqual ("application/octet-stream", resp.ContentType, "#5");
- Assert.AreEqual (0, resp.Headers.Count, "#6");
- }
- }
- [Test]
- public void GetResponseStream ()
- {
- FileWebRequest req = (FileWebRequest) WebRequest.Create (_tempFileUri);
- req.Method = "PUT";
- req.ContentType = "image/png";
- using (Stream s = req.GetRequestStream ()) {
- s.WriteByte (72);
- s.WriteByte (110);
- s.WriteByte (80);
- s.Flush ();
- }
- req = (FileWebRequest) WebRequest.Create (_tempFileUri);
- FileWebResponse respA = null;
- FileWebResponse respB = null;
- FileStream fsA = null;
- FileStream fsB = null;
- try {
- respA = (FileWebResponse) req.GetResponse ();
- fsA = respA.GetResponseStream () as FileStream;
- Assert.IsNotNull (fsA, "#A1");
- Assert.IsTrue (fsA.CanRead, "#A2");
- Assert.IsTrue (fsA.CanSeek, "#A3");
- Assert.IsFalse (fsA.CanTimeout, "#A4");
- Assert.IsFalse (fsA.CanWrite, "#A5");
- Assert.AreEqual (3, fsA.Length, "#A6");
- Assert.AreEqual (0, fsA.Position, "#A7");
- try {
- int i = fsA.ReadTimeout;
- Assert.Fail ("#A8:" + i);
- } catch (InvalidOperationException) {
- }
- try {
- int i = fsA.WriteTimeout;
- Assert.Fail ("#A9:" + i);
- } catch (InvalidOperationException) {
- }
- respB = (FileWebResponse) req.GetResponse ();
- fsB = respB.GetResponseStream () as FileStream;
- Assert.IsNotNull (fsB, "#B1");
- Assert.IsTrue (fsB.CanRead, "#B2");
- Assert.IsTrue (fsB.CanSeek, "#B3");
- Assert.IsFalse (fsB.CanTimeout, "#B4");
- Assert.IsFalse (fsB.CanWrite, "#B5");
- Assert.AreEqual (3, fsB.Length, "#B6");
- Assert.AreEqual (0, fsB.Position, "#B7");
- try {
- int i = fsB.ReadTimeout;
- Assert.Fail ("#B8:" + i);
- } catch (InvalidOperationException) {
- }
- try {
- int i = fsB.WriteTimeout;
- Assert.Fail ("#B9:" + i);
- } catch (InvalidOperationException) {
- }
- } finally {
- if (respA != null)
- respA.Close ();
- if (respB != null)
- respB.Close ();
- }
- }
- [Test]
- public void Headers ()
- {
- FileWebRequest req = (FileWebRequest) WebRequest.Create (_tempFileUri);
- req.Method = "PUT";
- req.Headers.Add ("Disposition", "attach");
- using (Stream s = req.GetRequestStream ()) {
- s.WriteByte (72);
- s.WriteByte (110);
- s.WriteByte (80);
- s.Flush ();
- }
- req = (FileWebRequest) WebRequest.Create (_tempFileUri);
- using (FileWebResponse resp = (FileWebResponse) req.GetResponse ()) {
- Assert.AreEqual (2, resp.Headers.Count, "#1");
- Assert.AreEqual ("Content-Length", resp.Headers.Keys [0], "#2");
- Assert.AreEqual ("Content-Type", resp.Headers.Keys [1], "#3");
- }
- }
- [Test]
- public void ResponseUri ()
- {
- FileWebRequest req = (FileWebRequest) WebRequest.Create (_tempFileUri);
- req.Method = "PUT";
- req.ContentType = "image/png";
- using (Stream s = req.GetRequestStream ()) {
- s.WriteByte (72);
- s.WriteByte (110);
- s.WriteByte (80);
- s.Flush ();
- }
- req = (FileWebRequest) WebRequest.Create (_tempFileUri);
- using (FileWebResponse resp = (FileWebResponse) req.GetResponse ()) {
- Assert.AreEqual (_tempFileUri, resp.ResponseUri);
- }
- }
- private Uri GetTempFileUri ()
- {
- string tempFile = _tempFile;
- if (RunningOnUnix) {
- // remove leading slash for absolute paths
- tempFile = tempFile.TrimStart ('/');
- } else {
- tempFile = tempFile.Replace ('\\', '/');
- }
- return new Uri ("file:///" + tempFile);
- }
- private bool RunningOnUnix {
- get {
- // check for Unix platforms - see FAQ for more details
- // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
- int platform = (int) Environment.OSVersion.Platform;
- return ((platform == 4) || (platform == 128));
- }
- }
- }
- }
|