2 // WebRequestTest.cs - NUnit Test Cases for System.Net.WebRequest
\r
5 // Lawrence Pit (loz@cable.a2000.nl)
\r
6 // Martin Willemoes Hansen (mwh@sysrq.dk)
\r
7 // Sebastien Pouliot <sebastien@ximian.com>
\r
9 // (C) 2003 Martin Willemoes Hansen
\r
10 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
\r
13 using NUnit.Framework;
\r
16 using System.Collections;
\r
17 using System.Runtime.Serialization;
\r
19 namespace MonoTests.System.Net {
\r
21 // WebRequest is abstract
\r
23 public class NonAbstractWebRequest : WebRequest
\r
26 public NonAbstractWebRequest ()
\r
30 public NonAbstractWebRequest (SerializationInfo si, StreamingContext sc)
\r
37 public class WebRequestTest {
\r
39 private void Callback (IAsyncResult ar)
\r
41 Assert.Fail ("Callback");
\r
45 public void SerializationConstructor ()
\r
48 NonAbstractWebRequest w = new NonAbstractWebRequest (null, new StreamingContext ());
\r
49 Assert.IsNotNull (w);
\r
52 new NonAbstractWebRequest (null, new StreamingContext ());
\r
54 } catch (NotImplementedException) {
\r
59 // properties (only test 'get'ter)
\r
62 [ExpectedException (typeof (NotImplementedException))]
\r
63 public void ConnectionGroupName ()
\r
65 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
66 Assert.IsNull (w.ConnectionGroupName);
\r
70 [ExpectedException (typeof (NotImplementedException))]
\r
71 public void ContentLength ()
\r
73 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
74 Assert.IsNull (w.ContentLength);
\r
78 [ExpectedException (typeof (NotImplementedException))]
\r
79 public void ContentType ()
\r
81 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
82 Assert.IsNull (w.ContentType);
\r
86 [ExpectedException (typeof (NotImplementedException))]
\r
87 public void Credentials ()
\r
89 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
90 Assert.IsNull (w.Credentials);
\r
94 [ExpectedException (typeof (NotImplementedException))]
\r
95 public void Headers ()
\r
97 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
98 Assert.IsNull (w.Headers);
\r
102 [ExpectedException (typeof (NotImplementedException))]
\r
103 public void Method ()
\r
105 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
106 Assert.IsNull (w.Method);
\r
110 [ExpectedException (typeof (NotImplementedException))]
\r
111 public void PreAuthenticate ()
\r
113 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
114 Assert.IsTrue (w.PreAuthenticate);
\r
118 [ExpectedException (typeof (NotImplementedException))]
\r
119 public void Proxy ()
\r
121 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
122 Assert.IsNull (w.Proxy);
\r
126 [ExpectedException (typeof (NotImplementedException))]
\r
127 public void RequestUri ()
\r
129 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
130 Assert.IsNull (w.RequestUri);
\r
134 [ExpectedException (typeof (NotImplementedException))]
\r
135 public void Timeout ()
\r
137 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
138 Assert.IsNull (w.Timeout);
\r
144 [ExpectedException (typeof (NotImplementedException))]
\r
145 public void Abort ()
\r
147 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
152 [ExpectedException (typeof (NotImplementedException))]
\r
153 public void BeginGetRequestStream ()
\r
155 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
156 IAsyncResult r = w.BeginGetRequestStream (new AsyncCallback (Callback), w);
\r
160 [ExpectedException (typeof (NotImplementedException))]
\r
161 public void BeginGetResponse ()
\r
163 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
164 IAsyncResult r = w.BeginGetResponse (new AsyncCallback (Callback), w);
\r
168 [ExpectedException (typeof (NotImplementedException))]
\r
169 public void EndGetRequestStream ()
\r
171 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
172 w.EndGetRequestStream (null);
\r
176 [ExpectedException (typeof (NotImplementedException))]
\r
177 public void EndGetResponse ()
\r
179 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
180 w.EndGetResponse (null);
\r
184 [ExpectedException (typeof (NotImplementedException))]
\r
185 public void GetRequestStream ()
\r
187 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
188 w.GetRequestStream ();
\r
192 [ExpectedException (typeof (NotImplementedException))]
\r
193 public void GetResponse ()
\r
195 NonAbstractWebRequest w = new NonAbstractWebRequest ();
\r
202 WebRequest req = WebRequest.Create ("http://www.contoso.com");
\r
203 Assertion.Assert ("#1", req is HttpWebRequest);
\r
204 req = WebRequest.Create ("https://www.contoso.com");
\r
205 Assertion.Assert ("#2", req is HttpWebRequest);
\r
206 req = WebRequest.Create ("file://www.contoso.com");
\r
207 Assertion.Assert ("#3", req is FileWebRequest);
\r
209 req = WebRequest.Create ("ftp://www.contoso.com");
\r
210 Assertion.Assert ("#4", req is FtpWebRequest);
\r
212 WebRequest.RegisterPrefix ("http://www.contoso.com", new TestWebRequestCreator ());
\r
213 bool ret = WebRequest.RegisterPrefix ("http://WWW.contoso.com", new TestWebRequestCreator ());
\r
214 Assertion.AssertEquals ("#5a", false, ret);
\r
215 ret = WebRequest.RegisterPrefix ("http://www.contoso.com/foo/bar", new TestWebRequestCreator2 ());
\r
216 Assertion.AssertEquals ("#5b", true, ret);
\r
217 ret = WebRequest.RegisterPrefix ("http://www", new TestWebRequestCreator3 ());
\r
218 Assertion.AssertEquals ("#5c", true, ret);
\r
220 req = WebRequest.Create ("http://WWW.contoso.com");
\r
221 Assertion.Assert ("#6", req is TestWebRequest);
\r
223 req = WebRequest.Create ("http://WWW.contoso.com/foo/bar/index.html");
\r
224 Assertion.Assert ("#7", req is TestWebRequest2);
\r
226 req = WebRequest.Create ("http://WWW.x.com");
\r
227 Assertion.Assert ("#8", req is TestWebRequest3);
\r
229 req = WebRequest.Create ("http://WWW.c");
\r
230 Assertion.Assert ("#9", req is TestWebRequest3);
\r
232 req = WebRequest.CreateDefault (new Uri("http://WWW.contoso.com"));
\r
233 Assertion.Assert ("#10", req is HttpWebRequest);
\r
236 req = WebRequest.Create ("tcp://www.contoso.com");
\r
237 Assertion.Fail ("#11 should have failed with NotSupportedException");
\r
238 } catch (NotSupportedException) {
\r
243 public void Create_RequestUriString_Null ()
\r
246 WebRequest.Create ((string) null);
\r
247 Assert.Fail ("#1");
\r
248 } catch (ArgumentNullException ex) {
\r
249 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
250 Assert.IsNull (ex.InnerException, "#3");
\r
251 Assert.IsNotNull (ex.Message, "#4");
\r
252 Assert.IsNotNull (ex.ParamName, "#5");
\r
253 Assert.AreEqual ("requestUriString", ex.ParamName, "#6");
\r
258 public void CreateDefault_RequestUri_Null ()
\r
261 WebRequest.CreateDefault ((Uri) null);
\r
262 Assert.Fail ("#1");
\r
263 } catch (ArgumentNullException ex) {
\r
264 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
265 Assert.IsNull (ex.InnerException, "#3");
\r
266 Assert.IsNotNull (ex.Message, "#4");
\r
267 Assert.IsNotNull (ex.ParamName, "#5");
\r
268 Assert.AreEqual ("requestUri", ex.ParamName, "#6");
\r
274 public void DefaultWebProxy ()
\r
276 WebProxy proxy = new WebProxy ("proxy.intern.com", 83);
\r
278 WebRequest.DefaultWebProxy = proxy;
\r
279 Assert.IsNotNull (WebRequest.DefaultWebProxy, "#A1");
\r
280 Assert.AreSame (proxy, WebRequest.DefaultWebProxy, "#A2");
\r
282 HttpWebRequest req = (HttpWebRequest) WebRequest.CreateDefault (
\r
283 new Uri ("http://www.mono-project.com"));
\r
284 Assert.IsNotNull (req.Proxy, "#B1");
\r
285 Assert.AreSame (proxy, req.Proxy, "#B2");
\r
287 WebRequest.DefaultWebProxy = null;
\r
288 Assert.IsNull (WebRequest.DefaultWebProxy, "#C1");
\r
289 Assert.IsNotNull (req.Proxy, "#C2");
\r
290 Assert.AreSame (proxy, req.Proxy, "#C3");
\r
292 req = (HttpWebRequest) WebRequest.CreateDefault (
\r
293 new Uri ("http://www.mono-project.com"));
\r
294 Assert.IsNull (req.Proxy, "#D");
\r
299 public void RegisterPrefix_Creator_Null ()
\r
302 WebRequest.RegisterPrefix ("http://www.mono-project.com", (IWebRequestCreate) null);
\r
303 Assert.Fail ("#1");
\r
304 } catch (ArgumentNullException ex) {
\r
305 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
306 Assert.IsNull (ex.InnerException, "#3");
\r
307 Assert.IsNotNull (ex.Message, "#4");
\r
308 Assert.IsNotNull (ex.ParamName, "#5");
\r
309 Assert.AreEqual ("creator", ex.ParamName, "#6");
\r
314 public void RegisterPrefix_Prefix_Null ()
\r
317 WebRequest.RegisterPrefix ((string) null, new TestWebRequestCreator ());
\r
318 Assert.Fail ("#1");
\r
319 } catch (ArgumentNullException ex) {
\r
320 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
321 Assert.IsNull (ex.InnerException, "#3");
\r
322 Assert.IsNotNull (ex.Message, "#4");
\r
323 Assert.IsNotNull (ex.ParamName, "#5");
\r
324 Assert.AreEqual ("prefix", ex.ParamName, "#6");
\r
328 internal class TestWebRequestCreator : IWebRequestCreate
\r
330 internal TestWebRequestCreator () { }
\r
332 public WebRequest Create (Uri uri)
\r
334 return new TestWebRequest ();
\r
338 internal class TestWebRequest : WebRequest
\r
340 internal TestWebRequest () { }
\r
343 internal class TestWebRequestCreator2 : IWebRequestCreate
\r
345 internal TestWebRequestCreator2 () { }
\r
347 public WebRequest Create (Uri uri)
\r
349 return new TestWebRequest2 ();
\r
353 internal class TestWebRequest2 : WebRequest
\r
355 internal TestWebRequest2 () { }
\r
358 internal class TestWebRequestCreator3 : IWebRequestCreate
\r
360 internal TestWebRequestCreator3 () { }
\r
362 public WebRequest Create (Uri uri)
\r
364 return new TestWebRequest3 ();
\r
368 internal class TestWebRequest3 : WebRequest
\r
370 internal TestWebRequest3 () { }
\r