WebClientTest.cs 61 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899
  1. //
  2. // WebClientTest.cs - NUnit Test Cases for System.Net.WebClient
  3. //
  4. // Copyright (C) 2007 Novell, Inc (http://www.novell.com)
  5. //
  6. using System;
  7. using System.Collections;
  8. using System.Collections.Specialized;
  9. using System.Globalization;
  10. using System.IO;
  11. using System.Net;
  12. using System.Net.Sockets;
  13. using System.Runtime.Serialization;
  14. using System.Text;
  15. using System.Threading;
  16. using NUnit.Framework;
  17. using MonoTests.Helpers;
  18. namespace MonoTests.System.Net
  19. {
  20. [TestFixture]
  21. public class WebClientTest
  22. {
  23. private string _tempFolder;
  24. [SetUp]
  25. public void SetUp ()
  26. {
  27. _tempFolder = Path.Combine (Path.GetTempPath (),
  28. GetType ().FullName);
  29. if (Directory.Exists (_tempFolder))
  30. Directory.Delete (_tempFolder, true);
  31. Directory.CreateDirectory (_tempFolder);
  32. }
  33. [TearDown]
  34. public void TearDown ()
  35. {
  36. if (Directory.Exists (_tempFolder))
  37. Directory.Delete (_tempFolder, true);
  38. }
  39. [Test]
  40. [Category ("InetAccess")]
  41. public void DownloadTwice ()
  42. {
  43. WebClient wc = new WebClient();
  44. string filename = Path.GetTempFileName();
  45. // A new, but empty file has been created. This is a test case
  46. // for bug 81005
  47. wc.DownloadFile("http://google.com/", filename);
  48. // Now, remove the file and attempt to download again.
  49. File.Delete(filename);
  50. wc.DownloadFile("http://google.com/", filename);
  51. }
  52. [Test]
  53. public void DownloadData1_Address_Null ()
  54. {
  55. WebClient wc = new WebClient ();
  56. try {
  57. wc.DownloadData ((string) null);
  58. Assert.Fail ("#1");
  59. } catch (ArgumentNullException ex) {
  60. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  61. Assert.IsNull (ex.InnerException, "#3");
  62. Assert.IsNotNull (ex.Message, "#4");
  63. Assert.IsNotNull (ex.ParamName, "#5");
  64. Assert.AreEqual ("address", ex.ParamName, "#6");
  65. }
  66. }
  67. [Test] // DownloadData (string)
  68. public void DownloadData1_Address_SchemeNotSupported ()
  69. {
  70. WebClient wc = new WebClient ();
  71. try {
  72. wc.DownloadData ("tp://scheme.notsupported");
  73. Assert.Fail ("#1");
  74. } catch (WebException ex) {
  75. // An error occurred performing a WebClient request
  76. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  77. Assert.IsNotNull (ex.InnerException, "#3");
  78. Assert.IsNotNull (ex.Message, "#4");
  79. Assert.IsNull (ex.Response, "#5");
  80. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  81. // The URI prefix is not recognized
  82. Exception inner = ex.InnerException;
  83. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  84. Assert.IsNull (inner.InnerException, "#8");
  85. Assert.IsNotNull (inner.Message, "#9");
  86. }
  87. }
  88. [Test] // DownloadData (Uri)
  89. public void DownloadData2_Address_Null ()
  90. {
  91. WebClient wc = new WebClient ();
  92. try {
  93. wc.DownloadData ((Uri) null);
  94. Assert.Fail ("#1");
  95. } catch (ArgumentNullException ex) {
  96. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  97. Assert.IsNull (ex.InnerException, "#3");
  98. Assert.IsNotNull (ex.Message, "#4");
  99. Assert.IsNotNull (ex.ParamName, "#5");
  100. Assert.AreEqual ("address", ex.ParamName, "#6");
  101. }
  102. }
  103. [Test] // DownloadData (Uri)
  104. public void DownloadData2_Address_SchemeNotSupported ()
  105. {
  106. WebClient wc = new WebClient ();
  107. try {
  108. wc.DownloadData (new Uri ("tp://scheme.notsupported"));
  109. Assert.Fail ("#1");
  110. } catch (WebException ex) {
  111. // An error occurred performing a WebClient request
  112. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  113. Assert.IsNotNull (ex.InnerException, "#3");
  114. Assert.IsNotNull (ex.Message, "#4");
  115. Assert.IsNull (ex.Response, "#5");
  116. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  117. // The URI prefix is not recognized
  118. Exception inner = ex.InnerException;
  119. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  120. Assert.IsNull (inner.InnerException, "#8");
  121. Assert.IsNotNull (inner.Message, "#9");
  122. }
  123. }
  124. [Test]
  125. public void DownloadFile1_Address_Null ()
  126. {
  127. WebClient wc = new WebClient ();
  128. try {
  129. wc.DownloadFile ((string) null, "tmp.out");
  130. Assert.Fail ("#1");
  131. } catch (ArgumentNullException ex) {
  132. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  133. Assert.IsNull (ex.InnerException, "#3");
  134. Assert.IsNotNull (ex.Message, "#4");
  135. Assert.IsNotNull (ex.ParamName, "#5");
  136. Assert.AreEqual ("address", ex.ParamName, "#6");
  137. }
  138. }
  139. [Test] // DownloadFile (string, string)
  140. public void DownloadFile1_Address_SchemeNotSupported ()
  141. {
  142. string file = Path.Combine (Path.GetTempPath (), "tmp.out");
  143. WebClient wc = new WebClient ();
  144. try {
  145. wc.DownloadFile ("tp://scheme.notsupported", file);
  146. Assert.Fail ("#1");
  147. } catch (WebException ex) {
  148. // An error occurred performing a WebClient request
  149. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  150. Assert.IsNotNull (ex.InnerException, "#3");
  151. Assert.IsNotNull (ex.Message, "#4");
  152. Assert.IsNull (ex.Response, "#5");
  153. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  154. // The URI prefix is not recognized
  155. Exception inner = ex.InnerException;
  156. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  157. Assert.IsNull (inner.InnerException, "#8");
  158. Assert.IsNotNull (inner.Message, "#9");
  159. }
  160. finally {
  161. if (File.Exists (file))
  162. File.Delete (file);
  163. }
  164. }
  165. [Test] // DownloadFile (string, string)
  166. public void DownloadFile1_FileName_Null ()
  167. {
  168. WebClient wc = new WebClient ();
  169. try {
  170. wc.DownloadFile ("tp://scheme.notsupported",
  171. (string) null);
  172. Assert.Fail ("#1");
  173. } catch (ArgumentNullException ex) {
  174. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  175. Assert.IsNull (ex.InnerException, "#3");
  176. Assert.IsNotNull (ex.Message, "#4");
  177. Assert.IsNotNull (ex.ParamName, "#5");
  178. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  179. }
  180. }
  181. [Test] // DownloadFile (Uri, string)
  182. public void DownloadFile2_Address_Null ()
  183. {
  184. WebClient wc = new WebClient ();
  185. try {
  186. wc.DownloadFile ((Uri) null, "tmp.out");
  187. Assert.Fail ("#1");
  188. } catch (ArgumentNullException ex) {
  189. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  190. Assert.IsNull (ex.InnerException, "#3");
  191. Assert.IsNotNull (ex.Message, "#4");
  192. Assert.IsNotNull (ex.ParamName, "#5");
  193. Assert.AreEqual ("address", ex.ParamName, "#6");
  194. }
  195. }
  196. [Test] // DownloadFile (Uri, string)
  197. public void DownloadFile2_Address_SchemeNotSupported ()
  198. {
  199. string file = Path.Combine (Path.GetTempPath (), "tmp.out");
  200. WebClient wc = new WebClient ();
  201. try {
  202. wc.DownloadFile (new Uri ("tp://scheme.notsupported"), file);
  203. Assert.Fail ("#1");
  204. } catch (WebException ex) {
  205. // An error occurred performing a WebClient request
  206. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  207. Assert.IsNotNull (ex.InnerException, "#3");
  208. Assert.IsNotNull (ex.Message, "#4");
  209. Assert.IsNull (ex.Response, "#5");
  210. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  211. // The URI prefix is not recognized
  212. Exception inner = ex.InnerException;
  213. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  214. Assert.IsNull (inner.InnerException, "#8");
  215. Assert.IsNotNull (inner.Message, "#9");
  216. }
  217. finally {
  218. if (File.Exists (file))
  219. File.Delete (file);
  220. }
  221. }
  222. [Test] // DownloadFile (Uri, string)
  223. public void DownloadFile2_FileName_Null ()
  224. {
  225. WebClient wc = new WebClient ();
  226. try {
  227. wc.DownloadFile (new Uri ("tp://scheme.notsupported"),
  228. (string) null);
  229. Assert.Fail ("#1");
  230. } catch (ArgumentNullException ex) {
  231. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  232. Assert.IsNull (ex.InnerException, "#3");
  233. Assert.IsNotNull (ex.Message, "#4");
  234. Assert.IsNotNull (ex.ParamName, "#5");
  235. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  236. }
  237. }
  238. [Test] // DownloadString (string)
  239. public void DownloadString1_Address_Null ()
  240. {
  241. WebClient wc = new WebClient ();
  242. try {
  243. wc.DownloadString ((string) null);
  244. Assert.Fail ("#1");
  245. } catch (ArgumentNullException ex) {
  246. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  247. Assert.IsNull (ex.InnerException, "#3");
  248. Assert.IsNotNull (ex.Message, "#4");
  249. Assert.IsNotNull (ex.ParamName, "#5");
  250. Assert.AreEqual ("address", ex.ParamName, "#6");
  251. }
  252. }
  253. [Test] // DownloadString (string)
  254. public void DownloadString1_Address_SchemeNotSupported ()
  255. {
  256. WebClient wc = new WebClient ();
  257. try {
  258. wc.DownloadString ("tp://scheme.notsupported");
  259. Assert.Fail ("#1");
  260. } catch (WebException ex) {
  261. // An error occurred performing a WebClient request
  262. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  263. Assert.IsNotNull (ex.InnerException, "#3");
  264. Assert.IsNotNull (ex.Message, "#4");
  265. Assert.IsNull (ex.Response, "#5");
  266. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  267. // The URI prefix is not recognized
  268. Exception inner = ex.InnerException;
  269. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  270. Assert.IsNull (inner.InnerException, "#8");
  271. Assert.IsNotNull (inner.Message, "#9");
  272. }
  273. }
  274. [Test] // DownloadString (Uri)
  275. public void DownloadString2_Address_Null ()
  276. {
  277. WebClient wc = new WebClient ();
  278. try {
  279. wc.DownloadString ((Uri) null);
  280. Assert.Fail ("#1");
  281. } catch (ArgumentNullException ex) {
  282. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  283. Assert.IsNull (ex.InnerException, "#3");
  284. Assert.IsNotNull (ex.Message, "#4");
  285. Assert.IsNotNull (ex.ParamName, "#5");
  286. Assert.AreEqual ("address", ex.ParamName, "#6");
  287. }
  288. }
  289. [Test] // DownloadString (Uri)
  290. public void DownloadString2_Address_SchemeNotSupported ()
  291. {
  292. WebClient wc = new WebClient ();
  293. try {
  294. wc.DownloadString (new Uri ("tp://scheme.notsupported"));
  295. Assert.Fail ("#1");
  296. } catch (WebException ex) {
  297. // An error occurred performing a WebClient request
  298. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  299. Assert.IsNotNull (ex.InnerException, "#3");
  300. Assert.IsNotNull (ex.Message, "#4");
  301. Assert.IsNull (ex.Response, "#5");
  302. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  303. // The URI prefix is not recognized
  304. Exception inner = ex.InnerException;
  305. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  306. Assert.IsNull (inner.InnerException, "#8");
  307. Assert.IsNotNull (inner.Message, "#9");
  308. }
  309. }
  310. [Test]
  311. public void EncodingTest ()
  312. {
  313. WebClient wc = new WebClient ();
  314. Assert.AreSame (Encoding.Default, wc.Encoding, "#1");
  315. wc.Encoding = Encoding.ASCII;
  316. Assert.AreSame (Encoding.ASCII, wc.Encoding, "#2");
  317. }
  318. [Test]
  319. public void Encoding_Value_Null ()
  320. {
  321. WebClient wc = new WebClient ();
  322. try {
  323. wc.Encoding = null;
  324. Assert.Fail ("#1");
  325. } catch (ArgumentNullException ex) {
  326. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  327. Assert.IsNull (ex.InnerException, "#3");
  328. Assert.IsNotNull (ex.Message, "#4");
  329. Assert.AreEqual ("Encoding", ex.ParamName, "#6");
  330. }
  331. }
  332. [Test] // OpenRead (string)
  333. public void OpenRead1_Address_Null ()
  334. {
  335. WebClient wc = new WebClient ();
  336. try {
  337. wc.OpenRead ((string) null);
  338. Assert.Fail ("#1");
  339. } catch (ArgumentNullException ex) {
  340. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  341. Assert.IsNull (ex.InnerException, "#3");
  342. Assert.IsNotNull (ex.Message, "#4");
  343. Assert.IsNotNull (ex.ParamName, "#5");
  344. Assert.AreEqual ("address", ex.ParamName, "#6");
  345. }
  346. }
  347. [Test] // OpenRead (string)
  348. public void OpenRead1_Address_SchemeNotSupported ()
  349. {
  350. WebClient wc = new WebClient ();
  351. try {
  352. wc.OpenRead ("tp://scheme.notsupported");
  353. Assert.Fail ("#1");
  354. } catch (WebException ex) {
  355. // An error occurred performing a WebClient request
  356. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  357. Assert.IsNotNull (ex.InnerException, "#3");
  358. Assert.IsNotNull (ex.Message, "#4");
  359. Assert.IsNull (ex.Response, "#5");
  360. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  361. // The URI prefix is not recognized
  362. Exception inner = ex.InnerException;
  363. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  364. Assert.IsNull (inner.InnerException, "#8");
  365. Assert.IsNotNull (inner.Message, "#9");
  366. }
  367. }
  368. [Test] // OpenRead (Uri)
  369. public void OpenRead2_Address_Null ()
  370. {
  371. WebClient wc = new WebClient ();
  372. try {
  373. wc.OpenRead ((Uri) null);
  374. Assert.Fail ("#1");
  375. } catch (ArgumentNullException ex) {
  376. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  377. Assert.IsNull (ex.InnerException, "#3");
  378. Assert.IsNotNull (ex.Message, "#4");
  379. Assert.IsNotNull (ex.ParamName, "#5");
  380. Assert.AreEqual ("address", ex.ParamName, "#6");
  381. }
  382. }
  383. [Test] // OpenRead (Uri)
  384. public void OpenRead2_Address_SchemeNotSupported ()
  385. {
  386. WebClient wc = new WebClient ();
  387. try {
  388. wc.OpenRead (new Uri ("tp://scheme.notsupported"));
  389. Assert.Fail ("#1");
  390. } catch (WebException ex) {
  391. // An error occurred performing a WebClient request
  392. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  393. Assert.IsNotNull (ex.InnerException, "#3");
  394. Assert.IsNotNull (ex.Message, "#4");
  395. Assert.IsNull (ex.Response, "#5");
  396. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  397. // The URI prefix is not recognized
  398. Exception inner = ex.InnerException;
  399. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  400. Assert.IsNull (inner.InnerException, "#8");
  401. Assert.IsNotNull (inner.Message, "#9");
  402. }
  403. }
  404. [Test] // OpenWrite (string)
  405. public void OpenWrite1_Address_Null ()
  406. {
  407. WebClient wc = new WebClient ();
  408. try {
  409. wc.OpenWrite ((string) null);
  410. Assert.Fail ("#1");
  411. } catch (ArgumentNullException ex) {
  412. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  413. Assert.IsNull (ex.InnerException, "#3");
  414. Assert.IsNotNull (ex.Message, "#4");
  415. Assert.IsNotNull (ex.ParamName, "#5");
  416. Assert.AreEqual ("address", ex.ParamName, "#6");
  417. }
  418. }
  419. [Test] // OpenWrite (string)
  420. public void OpenWrite1_Address_SchemeNotSupported ()
  421. {
  422. WebClient wc = new WebClient ();
  423. try {
  424. wc.OpenWrite ("tp://scheme.notsupported");
  425. Assert.Fail ("#1");
  426. } catch (WebException ex) {
  427. // An error occurred performing a WebClient request
  428. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  429. Assert.IsNotNull (ex.InnerException, "#3");
  430. Assert.IsNotNull (ex.Message, "#4");
  431. Assert.IsNull (ex.Response, "#5");
  432. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  433. // The URI prefix is not recognized
  434. Exception inner = ex.InnerException;
  435. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  436. Assert.IsNull (inner.InnerException, "#8");
  437. Assert.IsNotNull (inner.Message, "#9");
  438. }
  439. }
  440. [Test] // OpenWrite (string, string)
  441. public void OpenWrite2_Address_Null ()
  442. {
  443. WebClient wc = new WebClient ();
  444. try {
  445. wc.OpenWrite ((string) null, "PUT");
  446. Assert.Fail ("#1");
  447. } catch (ArgumentNullException ex) {
  448. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  449. Assert.IsNull (ex.InnerException, "#3");
  450. Assert.IsNotNull (ex.Message, "#4");
  451. Assert.IsNotNull (ex.ParamName, "#5");
  452. Assert.AreEqual ("address", ex.ParamName, "#6");
  453. }
  454. }
  455. [Test] // OpenWrite (string, string)
  456. public void OpenWrite2_Address_SchemeNotSupported ()
  457. {
  458. WebClient wc = new WebClient ();
  459. try {
  460. wc.OpenWrite ("tp://scheme.notsupported", "PUT");
  461. Assert.Fail ("#1");
  462. } catch (WebException ex) {
  463. // An error occurred performing a WebClient request
  464. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  465. Assert.IsNotNull (ex.InnerException, "#3");
  466. Assert.IsNotNull (ex.Message, "#4");
  467. Assert.IsNull (ex.Response, "#5");
  468. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  469. // The URI prefix is not recognized
  470. Exception inner = ex.InnerException;
  471. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  472. Assert.IsNull (inner.InnerException, "#8");
  473. Assert.IsNotNull (inner.Message, "#9");
  474. }
  475. }
  476. [Test] // OpenWrite (Uri)
  477. public void OpenWrite3_Address_Null ()
  478. {
  479. WebClient wc = new WebClient ();
  480. try {
  481. wc.OpenWrite ((Uri) null);
  482. Assert.Fail ("#1");
  483. } catch (ArgumentNullException ex) {
  484. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  485. Assert.IsNull (ex.InnerException, "#3");
  486. Assert.IsNotNull (ex.Message, "#4");
  487. Assert.IsNotNull (ex.ParamName, "#5");
  488. Assert.AreEqual ("address", ex.ParamName, "#6");
  489. }
  490. }
  491. [Test] // OpenWrite (Uri)
  492. public void OpenWrite3_Address_SchemeNotSupported ()
  493. {
  494. WebClient wc = new WebClient ();
  495. try {
  496. wc.OpenWrite (new Uri ("tp://scheme.notsupported"));
  497. Assert.Fail ("#1");
  498. } catch (WebException ex) {
  499. // An error occurred performing a WebClient request
  500. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  501. Assert.IsNotNull (ex.InnerException, "#3");
  502. Assert.IsNotNull (ex.Message, "#4");
  503. Assert.IsNull (ex.Response, "#5");
  504. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  505. // The URI prefix is not recognized
  506. Exception inner = ex.InnerException;
  507. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  508. Assert.IsNull (inner.InnerException, "#8");
  509. Assert.IsNotNull (inner.Message, "#9");
  510. }
  511. }
  512. [Test] // OpenWrite (Uri, string)
  513. public void OpenWrite4_Address_Null ()
  514. {
  515. WebClient wc = new WebClient ();
  516. try {
  517. wc.OpenWrite ((Uri) null, "POST");
  518. Assert.Fail ("#1");
  519. } catch (ArgumentNullException ex) {
  520. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  521. Assert.IsNull (ex.InnerException, "#3");
  522. Assert.IsNotNull (ex.Message, "#4");
  523. Assert.IsNotNull (ex.ParamName, "#5");
  524. Assert.AreEqual ("address", ex.ParamName, "#6");
  525. }
  526. }
  527. [Test] // OpenWrite (Uri, string)
  528. public void OpenWrite4_Address_SchemeNotSupported ()
  529. {
  530. WebClient wc = new WebClient ();
  531. try {
  532. wc.OpenWrite (new Uri ("tp://scheme.notsupported"),
  533. "POST");
  534. Assert.Fail ("#1");
  535. } catch (WebException ex) {
  536. // An error occurred performing a WebClient request
  537. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  538. Assert.IsNotNull (ex.InnerException, "#3");
  539. Assert.IsNotNull (ex.Message, "#4");
  540. Assert.IsNull (ex.Response, "#5");
  541. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  542. // The URI prefix is not recognized
  543. Exception inner = ex.InnerException;
  544. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  545. Assert.IsNull (inner.InnerException, "#8");
  546. Assert.IsNotNull (inner.Message, "#9");
  547. }
  548. }
  549. [Test] // UploadData (string, byte [])
  550. public void UploadData1_Address_Null ()
  551. {
  552. WebClient wc = new WebClient ();
  553. try {
  554. wc.UploadData ((string) null, new byte [] { 0x1a });
  555. Assert.Fail ("#1");
  556. } catch (ArgumentNullException ex) {
  557. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  558. Assert.IsNull (ex.InnerException, "#3");
  559. Assert.IsNotNull (ex.Message, "#4");
  560. Assert.IsNotNull (ex.ParamName, "#5");
  561. Assert.AreEqual ("address", ex.ParamName, "#6");
  562. }
  563. }
  564. [Test] // UploadData (string, byte [])
  565. public void UploadData1_Address_SchemeNotSupported ()
  566. {
  567. WebClient wc = new WebClient ();
  568. try {
  569. wc.UploadData ("tp://scheme.notsupported", new byte [] { 0x1a });
  570. Assert.Fail ("#1");
  571. } catch (WebException ex) {
  572. // An error occurred performing a WebClient request
  573. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  574. Assert.IsNotNull (ex.InnerException, "#3");
  575. Assert.IsNotNull (ex.Message, "#4");
  576. Assert.IsNull (ex.Response, "#5");
  577. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  578. // The URI prefix is not recognized
  579. Exception inner = ex.InnerException;
  580. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  581. Assert.IsNull (inner.InnerException, "#8");
  582. Assert.IsNotNull (inner.Message, "#9");
  583. }
  584. }
  585. [Test] // UploadData (string, byte [])
  586. public void UploadData1_Data_Null ()
  587. {
  588. WebClient wc = new WebClient ();
  589. try {
  590. wc.UploadData ("http://www.mono-project.com",
  591. (byte []) null);
  592. Assert.Fail ("#1");
  593. } catch (ArgumentNullException ex) {
  594. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  595. Assert.IsNull (ex.InnerException, "#3");
  596. Assert.IsNotNull (ex.Message, "#4");
  597. Assert.IsNotNull (ex.ParamName, "#5");
  598. Assert.AreEqual ("data", ex.ParamName, "#6");
  599. }
  600. }
  601. [Test] // UploadData (Uri, byte [])
  602. public void UploadData2_Address_Null ()
  603. {
  604. WebClient wc = new WebClient ();
  605. try {
  606. wc.UploadData ((Uri) null, new byte [] { 0x1a });
  607. Assert.Fail ("#1");
  608. } catch (ArgumentNullException ex) {
  609. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  610. Assert.IsNull (ex.InnerException, "#3");
  611. Assert.IsNotNull (ex.Message, "#4");
  612. Assert.IsNotNull (ex.ParamName, "#5");
  613. Assert.AreEqual ("address", ex.ParamName, "#6");
  614. }
  615. }
  616. [Test] // UploadData (Uri, byte [])
  617. public void UploadData2_Address_SchemeNotSupported ()
  618. {
  619. WebClient wc = new WebClient ();
  620. try {
  621. wc.UploadData (new Uri ("tp://scheme.notsupported"),
  622. new byte [] { 0x1a });
  623. Assert.Fail ("#1");
  624. } catch (WebException ex) {
  625. // An error occurred performing a WebClient request
  626. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  627. Assert.IsNotNull (ex.InnerException, "#3");
  628. Assert.IsNotNull (ex.Message, "#4");
  629. Assert.IsNull (ex.Response, "#5");
  630. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  631. // The URI prefix is not recognized
  632. Exception inner = ex.InnerException;
  633. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  634. Assert.IsNull (inner.InnerException, "#8");
  635. Assert.IsNotNull (inner.Message, "#9");
  636. }
  637. }
  638. [Test] // UploadData (Uri, byte [])
  639. public void UploadData2_Data_Null ()
  640. {
  641. WebClient wc = new WebClient ();
  642. try {
  643. wc.UploadData (new Uri ("http://www.mono-project.com"),
  644. (byte []) null);
  645. Assert.Fail ("#1");
  646. } catch (ArgumentNullException ex) {
  647. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  648. Assert.IsNull (ex.InnerException, "#3");
  649. Assert.IsNotNull (ex.Message, "#4");
  650. Assert.IsNotNull (ex.ParamName, "#5");
  651. Assert.AreEqual ("data", ex.ParamName, "#6");
  652. }
  653. }
  654. [Test] // UploadData (string, string, byte [])
  655. public void UploadData3_Address_Null ()
  656. {
  657. WebClient wc = new WebClient ();
  658. try {
  659. wc.UploadData ((string) null, "POST",
  660. new byte [] { 0x1a });
  661. Assert.Fail ("#1");
  662. } catch (ArgumentNullException ex) {
  663. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  664. Assert.IsNull (ex.InnerException, "#3");
  665. Assert.IsNotNull (ex.Message, "#4");
  666. Assert.IsNotNull (ex.ParamName, "#5");
  667. Assert.AreEqual ("address", ex.ParamName, "#6");
  668. }
  669. }
  670. [Test] // UploadData (string, string, byte [])
  671. public void UploadData3_Address_SchemeNotSupported ()
  672. {
  673. WebClient wc = new WebClient ();
  674. try {
  675. wc.UploadData ("tp://scheme.notsupported",
  676. "POST", new byte [] { 0x1a });
  677. Assert.Fail ("#1");
  678. } catch (WebException ex) {
  679. // An error occurred performing a WebClient request
  680. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  681. Assert.IsNotNull (ex.InnerException, "#3");
  682. Assert.IsNotNull (ex.Message, "#4");
  683. Assert.IsNull (ex.Response, "#5");
  684. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  685. // The URI prefix is not recognized
  686. Exception inner = ex.InnerException;
  687. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  688. Assert.IsNull (inner.InnerException, "#8");
  689. Assert.IsNotNull (inner.Message, "#9");
  690. }
  691. }
  692. [Test] // UploadData (string, string, byte [])
  693. public void UploadData3_Data_Null ()
  694. {
  695. WebClient wc = new WebClient ();
  696. try {
  697. wc.UploadData ("http://www.mono-project.com",
  698. "POST", (byte []) null);
  699. Assert.Fail ("#1");
  700. } catch (ArgumentNullException ex) {
  701. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  702. Assert.IsNull (ex.InnerException, "#3");
  703. Assert.IsNotNull (ex.Message, "#4");
  704. Assert.IsNotNull (ex.ParamName, "#5");
  705. Assert.AreEqual ("data", ex.ParamName, "#6");
  706. }
  707. }
  708. [Test] // UploadData (Uri, string, byte [])
  709. public void UploadData4_Address_Null ()
  710. {
  711. WebClient wc = new WebClient ();
  712. try {
  713. wc.UploadData ((Uri) null, "POST", new byte [] { 0x1a });
  714. Assert.Fail ("#1");
  715. } catch (ArgumentNullException ex) {
  716. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  717. Assert.IsNull (ex.InnerException, "#3");
  718. Assert.IsNotNull (ex.Message, "#4");
  719. Assert.IsNotNull (ex.ParamName, "#5");
  720. Assert.AreEqual ("address", ex.ParamName, "#6");
  721. }
  722. }
  723. [Test] // UploadData (Uri, string, byte [])
  724. public void UploadData4_Address_SchemeNotSupported ()
  725. {
  726. WebClient wc = new WebClient ();
  727. try {
  728. wc.UploadData (new Uri ("tp://scheme.notsupported"),
  729. "POST", new byte [] { 0x1a });
  730. Assert.Fail ("#1");
  731. } catch (WebException ex) {
  732. // An error occurred performing a WebClient request
  733. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  734. Assert.IsNotNull (ex.InnerException, "#3");
  735. Assert.IsNotNull (ex.Message, "#4");
  736. Assert.IsNull (ex.Response, "#5");
  737. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  738. // The URI prefix is not recognized
  739. Exception inner = ex.InnerException;
  740. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  741. Assert.IsNull (inner.InnerException, "#8");
  742. Assert.IsNotNull (inner.Message, "#9");
  743. }
  744. }
  745. [Test] // UploadData (Uri, string, byte [])
  746. public void UploadData4_Data_Null ()
  747. {
  748. WebClient wc = new WebClient ();
  749. try {
  750. wc.UploadData (new Uri ("http://www.mono-project.com"),
  751. "POST", (byte []) null);
  752. Assert.Fail ("#1");
  753. } catch (ArgumentNullException ex) {
  754. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  755. Assert.IsNull (ex.InnerException, "#3");
  756. Assert.IsNotNull (ex.Message, "#4");
  757. Assert.IsNotNull (ex.ParamName, "#5");
  758. Assert.AreEqual ("data", ex.ParamName, "#6");
  759. }
  760. }
  761. [Test] // UploadFile (string, string)
  762. public void UploadFile1_Address_Null ()
  763. {
  764. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  765. File.Create (tempFile).Close ();
  766. WebClient wc = new WebClient ();
  767. try {
  768. wc.UploadFile ((string) null, tempFile);
  769. Assert.Fail ("#1");
  770. } catch (ArgumentNullException ex) {
  771. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  772. Assert.IsNull (ex.InnerException, "#3");
  773. Assert.IsNotNull (ex.Message, "#4");
  774. Assert.IsNotNull (ex.ParamName, "#5");
  775. Assert.AreEqual ("address", ex.ParamName, "#6");
  776. }
  777. }
  778. [Test] // UploadFile (string, string)
  779. public void UploadFile1_Address_SchemeNotSupported ()
  780. {
  781. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  782. File.Create (tempFile).Close ();
  783. WebClient wc = new WebClient ();
  784. try {
  785. wc.UploadFile ("tp://scheme.notsupported",
  786. tempFile);
  787. Assert.Fail ("#1");
  788. } catch (WebException ex) {
  789. // An error occurred performing a WebClient request
  790. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  791. Assert.IsNotNull (ex.InnerException, "#3");
  792. Assert.IsNotNull (ex.Message, "#4");
  793. Assert.IsNull (ex.Response, "#5");
  794. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  795. // The URI prefix is not recognized
  796. Exception inner = ex.InnerException;
  797. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  798. Assert.IsNull (inner.InnerException, "#8");
  799. Assert.IsNotNull (inner.Message, "#9");
  800. }
  801. }
  802. [Test] // UploadFile (string, string)
  803. public void UploadFile1_FileName_NotFound ()
  804. {
  805. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  806. WebClient wc = new WebClient ();
  807. try {
  808. wc.UploadFile ("tp://scheme.notsupported",
  809. tempFile);
  810. Assert.Fail ("#1");
  811. } catch (WebException ex) {
  812. // An error occurred performing a WebClient request
  813. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  814. Assert.IsNotNull (ex.Message, "#3");
  815. Assert.IsNull (ex.Response, "#4");
  816. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  817. // Could not find file "..."
  818. FileNotFoundException inner = ex.InnerException
  819. as FileNotFoundException;
  820. Assert.IsNotNull (inner, "#6");
  821. Assert.AreEqual (typeof (FileNotFoundException), inner.GetType (), "#7");
  822. Assert.IsNotNull (inner.FileName, "#8");
  823. Assert.AreEqual (tempFile, inner.FileName, "#9");
  824. Assert.IsNull (inner.InnerException, "#10");
  825. Assert.IsNotNull (inner.Message, "#11");
  826. }
  827. }
  828. [Test] // UploadFile (string, string)
  829. public void UploadFile1_FileName_Null ()
  830. {
  831. WebClient wc = new WebClient ();
  832. try {
  833. wc.UploadFile ("tp://scheme.notsupported",
  834. (string) null);
  835. Assert.Fail ("#1");
  836. } catch (ArgumentNullException ex) {
  837. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  838. Assert.IsNull (ex.InnerException, "#3");
  839. Assert.IsNotNull (ex.Message, "#4");
  840. Assert.IsNotNull (ex.ParamName, "#5");
  841. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  842. }
  843. }
  844. [Test] // UploadFile (Uri, string)
  845. public void UploadFile2_Address_Null ()
  846. {
  847. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  848. WebClient wc = new WebClient ();
  849. try {
  850. wc.UploadFile ((Uri) null, tempFile);
  851. Assert.Fail ("#1");
  852. } catch (ArgumentNullException ex) {
  853. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  854. Assert.IsNull (ex.InnerException, "#3");
  855. Assert.IsNotNull (ex.Message, "#4");
  856. Assert.IsNotNull (ex.ParamName, "#5");
  857. Assert.AreEqual ("address", ex.ParamName, "#6");
  858. }
  859. }
  860. [Test] // UploadFile (Uri, string)
  861. public void UploadFile2_Address_SchemeNotSupported ()
  862. {
  863. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  864. File.Create (tempFile).Close ();
  865. WebClient wc = new WebClient ();
  866. try {
  867. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  868. tempFile);
  869. Assert.Fail ("#1");
  870. } catch (WebException ex) {
  871. // An error occurred performing a WebClient request
  872. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  873. Assert.IsNotNull (ex.InnerException, "#3");
  874. Assert.IsNotNull (ex.Message, "#4");
  875. Assert.IsNull (ex.Response, "#5");
  876. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  877. // The URI prefix is not recognized
  878. Exception inner = ex.InnerException;
  879. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  880. Assert.IsNull (inner.InnerException, "#8");
  881. Assert.IsNotNull (inner.Message, "#9");
  882. }
  883. }
  884. [Test] // UploadFile (Uri, string)
  885. public void UploadFile2_FileName_NotFound ()
  886. {
  887. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  888. WebClient wc = new WebClient ();
  889. try {
  890. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  891. tempFile);
  892. Assert.Fail ("#1");
  893. } catch (WebException ex) {
  894. // An error occurred performing a WebClient request
  895. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  896. Assert.IsNotNull (ex.Message, "#3");
  897. Assert.IsNull (ex.Response, "#4");
  898. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  899. // Could not find file "..."
  900. FileNotFoundException inner = ex.InnerException
  901. as FileNotFoundException;
  902. Assert.IsNotNull (inner, "#6");
  903. Assert.AreEqual (typeof (FileNotFoundException), inner.GetType (), "#7");
  904. Assert.IsNotNull (inner.FileName, "#8");
  905. Assert.AreEqual (tempFile, inner.FileName, "#9");
  906. Assert.IsNull (inner.InnerException, "#10");
  907. Assert.IsNotNull (inner.Message, "#11");
  908. }
  909. }
  910. [Test] // UploadFile (Uri, string)
  911. public void UploadFile2_FileName_Null ()
  912. {
  913. WebClient wc = new WebClient ();
  914. try {
  915. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  916. null);
  917. Assert.Fail ("#1");
  918. } catch (ArgumentNullException ex) {
  919. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  920. Assert.IsNull (ex.InnerException, "#3");
  921. Assert.IsNotNull (ex.Message, "#4");
  922. Assert.IsNotNull (ex.ParamName, "#5");
  923. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  924. }
  925. }
  926. [Test] // UploadFile (string, string, string)
  927. public void UploadFile3_Address_Null ()
  928. {
  929. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  930. File.Create (tempFile).Close ();
  931. WebClient wc = new WebClient ();
  932. try {
  933. wc.UploadFile ((string) null, "POST", tempFile);
  934. Assert.Fail ("#1");
  935. } catch (ArgumentNullException ex) {
  936. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  937. Assert.IsNull (ex.InnerException, "#3");
  938. Assert.IsNotNull (ex.Message, "#4");
  939. Assert.IsNotNull (ex.ParamName, "#5");
  940. Assert.AreEqual ("path", ex.ParamName, "#6");
  941. }
  942. }
  943. [Test] // UploadFile (string, string, string)
  944. public void UploadFile3_Address_SchemeNotSupported ()
  945. {
  946. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  947. File.Create (tempFile).Close ();
  948. WebClient wc = new WebClient ();
  949. try {
  950. wc.UploadFile ("tp://scheme.notsupported",
  951. "POST", tempFile);
  952. Assert.Fail ("#1");
  953. } catch (WebException ex) {
  954. // An error occurred performing a WebClient request
  955. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  956. Assert.IsNotNull (ex.InnerException, "#3");
  957. Assert.IsNotNull (ex.Message, "#4");
  958. Assert.IsNull (ex.Response, "#5");
  959. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  960. // The URI prefix is not recognized
  961. Exception inner = ex.InnerException;
  962. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  963. Assert.IsNull (inner.InnerException, "#8");
  964. Assert.IsNotNull (inner.Message, "#9");
  965. }
  966. }
  967. [Test] // UploadFile (string, string, string)
  968. public void UploadFile3_FileName_NotFound ()
  969. {
  970. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  971. WebClient wc = new WebClient ();
  972. try {
  973. wc.UploadFile ("tp://scheme.notsupported",
  974. "POST", tempFile);
  975. Assert.Fail ("#1");
  976. } catch (WebException ex) {
  977. // An error occurred performing a WebClient request
  978. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  979. Assert.IsNotNull (ex.Message, "#3");
  980. Assert.IsNull (ex.Response, "#4");
  981. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  982. // Could not find file "..."
  983. FileNotFoundException inner = ex.InnerException
  984. as FileNotFoundException;
  985. Assert.IsNotNull (inner, "#6");
  986. Assert.AreEqual (typeof (FileNotFoundException), inner.GetType (), "#7");
  987. Assert.IsNotNull (inner.FileName, "#8");
  988. Assert.AreEqual (tempFile, inner.FileName, "#9");
  989. Assert.IsNull (inner.InnerException, "#10");
  990. Assert.IsNotNull (inner.Message, "#11");
  991. }
  992. }
  993. [Test] // UploadFile (string, string, string)
  994. public void UploadFile3_FileName_Null ()
  995. {
  996. WebClient wc = new WebClient ();
  997. try {
  998. wc.UploadFile ("tp://scheme.notsupported",
  999. "POST", (string) null);
  1000. Assert.Fail ("#1");
  1001. } catch (ArgumentNullException ex) {
  1002. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1003. Assert.IsNull (ex.InnerException, "#3");
  1004. Assert.IsNotNull (ex.Message, "#4");
  1005. Assert.IsNotNull (ex.ParamName, "#5");
  1006. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  1007. }
  1008. }
  1009. [Test] // UploadFile (Uri, string, string)
  1010. public void UploadFile4_Address_Null ()
  1011. {
  1012. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1013. WebClient wc = new WebClient ();
  1014. try {
  1015. wc.UploadFile ((Uri) null, "POST", tempFile);
  1016. Assert.Fail ("#1");
  1017. } catch (ArgumentNullException ex) {
  1018. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1019. Assert.IsNull (ex.InnerException, "#3");
  1020. Assert.IsNotNull (ex.Message, "#4");
  1021. Assert.IsNotNull (ex.ParamName, "#5");
  1022. Assert.AreEqual ("address", ex.ParamName, "#6");
  1023. }
  1024. }
  1025. [Test] // UploadFile (Uri, string, string)
  1026. public void UploadFile4_Address_SchemeNotSupported ()
  1027. {
  1028. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1029. File.Create (tempFile).Close ();
  1030. WebClient wc = new WebClient ();
  1031. try {
  1032. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  1033. "POST", tempFile);
  1034. Assert.Fail ("#1");
  1035. } catch (WebException ex) {
  1036. // An error occurred performing a WebClient request
  1037. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1038. Assert.IsNotNull (ex.InnerException, "#3");
  1039. Assert.IsNotNull (ex.Message, "#4");
  1040. Assert.IsNull (ex.Response, "#5");
  1041. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1042. // The URI prefix is not recognized
  1043. Exception inner = ex.InnerException;
  1044. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1045. Assert.IsNull (inner.InnerException, "#8");
  1046. Assert.IsNotNull (inner.Message, "#9");
  1047. }
  1048. }
  1049. [Test] // UploadFile (Uri, string, string)
  1050. public void UploadFile4_FileName_NotFound ()
  1051. {
  1052. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1053. WebClient wc = new WebClient ();
  1054. try {
  1055. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  1056. "POST", tempFile);
  1057. Assert.Fail ("#1");
  1058. } catch (WebException ex) {
  1059. // An error occurred performing a WebClient request
  1060. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1061. Assert.IsNotNull (ex.Message, "#3");
  1062. Assert.IsNull (ex.Response, "#4");
  1063. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#5");
  1064. // Could not find file "..."
  1065. FileNotFoundException inner = ex.InnerException
  1066. as FileNotFoundException;
  1067. Assert.IsNotNull (inner, "#6");
  1068. Assert.AreEqual (typeof (FileNotFoundException), inner.GetType (), "#7");
  1069. Assert.IsNotNull (inner.FileName, "#8");
  1070. Assert.AreEqual (tempFile, inner.FileName, "#9");
  1071. Assert.IsNull (inner.InnerException, "#10");
  1072. Assert.IsNotNull (inner.Message, "#11");
  1073. }
  1074. }
  1075. [Test] // UploadFile (Uri, string, string)
  1076. public void UploadFile4_FileName_Null ()
  1077. {
  1078. WebClient wc = new WebClient ();
  1079. try {
  1080. wc.UploadFile (new Uri ("tp://scheme.notsupported"),
  1081. "POST", (string) null);
  1082. Assert.Fail ("#1");
  1083. } catch (ArgumentNullException ex) {
  1084. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1085. Assert.IsNull (ex.InnerException, "#3");
  1086. Assert.IsNotNull (ex.Message, "#4");
  1087. Assert.IsNotNull (ex.ParamName, "#5");
  1088. Assert.AreEqual ("fileName", ex.ParamName, "#6");
  1089. }
  1090. }
  1091. [Test] // UploadString (string, string)
  1092. public void UploadString1_Address_Null ()
  1093. {
  1094. WebClient wc = new WebClient ();
  1095. try {
  1096. wc.UploadString ((string) null, (string) null);
  1097. Assert.Fail ("#1");
  1098. } catch (ArgumentNullException ex) {
  1099. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1100. Assert.IsNull (ex.InnerException, "#3");
  1101. Assert.IsNotNull (ex.Message, "#4");
  1102. Assert.IsNotNull (ex.ParamName, "#5");
  1103. Assert.AreEqual ("address", ex.ParamName, "#6");
  1104. }
  1105. }
  1106. [Test] // UploadString (string, string)
  1107. public void UploadString1_Address_SchemeNotSupported ()
  1108. {
  1109. WebClient wc = new WebClient ();
  1110. try {
  1111. wc.UploadString ("tp://scheme.notsupported", "abc");
  1112. Assert.Fail ("#1");
  1113. } catch (WebException ex) {
  1114. // An error occurred performing a WebClient request
  1115. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1116. Assert.IsNotNull (ex.InnerException, "#3");
  1117. Assert.IsNotNull (ex.Message, "#4");
  1118. Assert.IsNull (ex.Response, "#5");
  1119. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1120. // The URI prefix is not recognized
  1121. Exception inner = ex.InnerException;
  1122. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1123. Assert.IsNull (inner.InnerException, "#8");
  1124. Assert.IsNotNull (inner.Message, "#9");
  1125. }
  1126. }
  1127. [Test] // UploadString (string, string)
  1128. public void UploadString1_Data_Null ()
  1129. {
  1130. WebClient wc = new WebClient ();
  1131. try {
  1132. wc.UploadString ("tp://scheme.notsupported", (string) null);
  1133. Assert.Fail ("#1");
  1134. } catch (ArgumentNullException ex) {
  1135. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1136. Assert.IsNull (ex.InnerException, "#3");
  1137. Assert.IsNotNull (ex.Message, "#4");
  1138. Assert.IsNotNull (ex.ParamName, "#5");
  1139. Assert.AreEqual ("data", ex.ParamName, "#6");
  1140. }
  1141. }
  1142. [Test] // UploadString (Uri, string)
  1143. public void UploadString2_Address_Null ()
  1144. {
  1145. WebClient wc = new WebClient ();
  1146. try {
  1147. wc.UploadString ((Uri) null, (string) null);
  1148. Assert.Fail ("#1");
  1149. } catch (ArgumentNullException ex) {
  1150. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1151. Assert.IsNull (ex.InnerException, "#3");
  1152. Assert.IsNotNull (ex.Message, "#4");
  1153. Assert.IsNotNull (ex.ParamName, "#5");
  1154. Assert.AreEqual ("address", ex.ParamName, "#6");
  1155. }
  1156. }
  1157. [Test] // UploadString (Uri, string)
  1158. public void UploadString2_Address_SchemeNotSupported ()
  1159. {
  1160. WebClient wc = new WebClient ();
  1161. try {
  1162. wc.UploadString (new Uri ("tp://scheme.notsupported"), "abc");
  1163. Assert.Fail ("#1");
  1164. } catch (WebException ex) {
  1165. // An error occurred performing a WebClient request
  1166. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1167. Assert.IsNotNull (ex.InnerException, "#3");
  1168. Assert.IsNotNull (ex.Message, "#4");
  1169. Assert.IsNull (ex.Response, "#5");
  1170. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1171. // The URI prefix is not recognized
  1172. Exception inner = ex.InnerException;
  1173. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1174. Assert.IsNull (inner.InnerException, "#8");
  1175. Assert.IsNotNull (inner.Message, "#9");
  1176. }
  1177. }
  1178. [Test] // UploadString (Uri, string)
  1179. public void UploadString2_Data_Null ()
  1180. {
  1181. WebClient wc = new WebClient ();
  1182. try {
  1183. wc.UploadString (new Uri ("tp://scheme.notsupported"),
  1184. (string) null);
  1185. Assert.Fail ("#1");
  1186. } catch (ArgumentNullException ex) {
  1187. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1188. Assert.IsNull (ex.InnerException, "#3");
  1189. Assert.IsNotNull (ex.Message, "#4");
  1190. Assert.IsNotNull (ex.ParamName, "#5");
  1191. Assert.AreEqual ("data", ex.ParamName, "#6");
  1192. }
  1193. }
  1194. [Test] // UploadString (string, string, string)
  1195. public void UploadString3_Address_Null ()
  1196. {
  1197. WebClient wc = new WebClient ();
  1198. try {
  1199. wc.UploadString ((string) null, (string) null,
  1200. (string) null);
  1201. Assert.Fail ("#1");
  1202. } catch (ArgumentNullException ex) {
  1203. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1204. Assert.IsNull (ex.InnerException, "#3");
  1205. Assert.IsNotNull (ex.Message, "#4");
  1206. Assert.IsNotNull (ex.ParamName, "#5");
  1207. Assert.AreEqual ("address", ex.ParamName, "#6");
  1208. }
  1209. }
  1210. [Test] // UploadString (string, string, string)
  1211. public void UploadString3_Address_SchemeNotSupported ()
  1212. {
  1213. WebClient wc = new WebClient ();
  1214. try {
  1215. wc.UploadString ("tp://scheme.notsupported",
  1216. "POST", "abc");
  1217. Assert.Fail ("#1");
  1218. } catch (WebException ex) {
  1219. // An error occurred performing a WebClient request
  1220. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1221. Assert.IsNotNull (ex.InnerException, "#3");
  1222. Assert.IsNotNull (ex.Message, "#4");
  1223. Assert.IsNull (ex.Response, "#5");
  1224. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1225. // The URI prefix is not recognized
  1226. Exception inner = ex.InnerException;
  1227. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1228. Assert.IsNull (inner.InnerException, "#8");
  1229. Assert.IsNotNull (inner.Message, "#9");
  1230. }
  1231. }
  1232. [Test] // UploadString (string, string, string)
  1233. public void UploadString3_Data_Null ()
  1234. {
  1235. WebClient wc = new WebClient ();
  1236. try {
  1237. wc.UploadString ("tp://scheme.notsupported",
  1238. "POST", (string) null);
  1239. Assert.Fail ("#1");
  1240. } catch (ArgumentNullException ex) {
  1241. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1242. Assert.IsNull (ex.InnerException, "#3");
  1243. Assert.IsNotNull (ex.Message, "#4");
  1244. Assert.IsNotNull (ex.ParamName, "#5");
  1245. Assert.AreEqual ("data", ex.ParamName, "#6");
  1246. }
  1247. }
  1248. [Test] // UploadString (Uri, string, string)
  1249. public void UploadString4_Address_Null ()
  1250. {
  1251. WebClient wc = new WebClient ();
  1252. try {
  1253. wc.UploadString ((Uri) null, (string) null,
  1254. (string) null);
  1255. Assert.Fail ("#1");
  1256. } catch (ArgumentNullException ex) {
  1257. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1258. Assert.IsNull (ex.InnerException, "#3");
  1259. Assert.IsNotNull (ex.Message, "#4");
  1260. Assert.IsNotNull (ex.ParamName, "#5");
  1261. Assert.AreEqual ("address", ex.ParamName, "#6");
  1262. }
  1263. }
  1264. [Test] // UploadString (Uri, string, string)
  1265. public void UploadString4_Address_SchemeNotSupported ()
  1266. {
  1267. WebClient wc = new WebClient ();
  1268. try {
  1269. wc.UploadString (new Uri ("tp://scheme.notsupported"),
  1270. "POST", "abc");
  1271. Assert.Fail ("#1");
  1272. } catch (WebException ex) {
  1273. // An error occurred performing a WebClient request
  1274. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1275. Assert.IsNotNull (ex.InnerException, "#3");
  1276. Assert.IsNotNull (ex.Message, "#4");
  1277. Assert.IsNull (ex.Response, "#5");
  1278. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1279. // The URI prefix is not recognized
  1280. Exception inner = ex.InnerException;
  1281. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1282. Assert.IsNull (inner.InnerException, "#8");
  1283. Assert.IsNotNull (inner.Message, "#9");
  1284. }
  1285. }
  1286. [Test] // UploadString (Uri, string, string)
  1287. public void UploadString4_Data_Null ()
  1288. {
  1289. WebClient wc = new WebClient ();
  1290. try {
  1291. wc.UploadString (new Uri ("tp://scheme.notsupported"),
  1292. "POST", (string) null);
  1293. Assert.Fail ("#1");
  1294. } catch (ArgumentNullException ex) {
  1295. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1296. Assert.IsNull (ex.InnerException, "#3");
  1297. Assert.IsNotNull (ex.Message, "#4");
  1298. Assert.IsNotNull (ex.ParamName, "#5");
  1299. Assert.AreEqual ("data", ex.ParamName, "#6");
  1300. }
  1301. }
  1302. [Test]
  1303. [Category ("AndroidNotWorking")] // Fails when ran as part of the entire BCL test suite. Works when only this fixture is ran
  1304. public void UploadValues1 ()
  1305. {
  1306. IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint ();
  1307. string url = "http://" + ep.ToString () + "/test/";
  1308. using (SocketResponder responder = new SocketResponder (ep, s => EchoRequestHandler (s))) {
  1309. WebClient wc = new WebClient ();
  1310. wc.Encoding = Encoding.ASCII;
  1311. NameValueCollection nvc = new NameValueCollection ();
  1312. nvc.Add ("Name", "\u0041\u2262\u0391\u002E");
  1313. nvc.Add ("Address", "\u002E\u2262\u0041\u0391");
  1314. byte [] buffer = wc.UploadValues (url, nvc);
  1315. string response = Encoding.UTF8.GetString (buffer);
  1316. Assert.AreEqual ("Name=A%e2%89%a2%ce%91.&Address=.%e2%89%a2A%ce%91\r\n", response);
  1317. }
  1318. }
  1319. [Test] // UploadValues (string, NameValueCollection)
  1320. public void UploadValues1_Address_Null ()
  1321. {
  1322. WebClient wc = new WebClient ();
  1323. try {
  1324. wc.UploadValues ((string) null, new NameValueCollection ());
  1325. Assert.Fail ("#1");
  1326. } catch (ArgumentNullException ex) {
  1327. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1328. Assert.IsNull (ex.InnerException, "#3");
  1329. Assert.IsNotNull (ex.Message, "#4");
  1330. Assert.IsNotNull (ex.ParamName, "#5");
  1331. Assert.AreEqual ("address", ex.ParamName, "#6");
  1332. }
  1333. }
  1334. [Test] // UploadValues (string, NameValueCollection)
  1335. public void UploadValues1_Address_SchemeNotSupported ()
  1336. {
  1337. WebClient wc = new WebClient ();
  1338. try {
  1339. wc.UploadValues ("tp://scheme.notsupported",
  1340. new NameValueCollection ());
  1341. Assert.Fail ("#1");
  1342. } catch (WebException ex) {
  1343. // An error occurred performing a WebClient request
  1344. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1345. Assert.IsNotNull (ex.InnerException, "#3");
  1346. Assert.IsNotNull (ex.Message, "#4");
  1347. Assert.IsNull (ex.Response, "#5");
  1348. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1349. // The URI prefix is not recognized
  1350. Exception inner = ex.InnerException;
  1351. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1352. Assert.IsNull (inner.InnerException, "#8");
  1353. Assert.IsNotNull (inner.Message, "#9");
  1354. }
  1355. }
  1356. [Test] // UploadValues (string, NameValueCollection)
  1357. public void UploadValues1_Data_Null ()
  1358. {
  1359. WebClient wc = new WebClient ();
  1360. try {
  1361. wc.UploadValues ("http://www.mono-project.com",
  1362. (NameValueCollection) null);
  1363. Assert.Fail ("#1");
  1364. } catch (ArgumentNullException ex) {
  1365. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1366. Assert.IsNull (ex.InnerException, "#3");
  1367. Assert.IsNotNull (ex.Message, "#4");
  1368. Assert.IsNotNull (ex.ParamName, "#5");
  1369. Assert.AreEqual ("data", ex.ParamName, "#6");
  1370. }
  1371. }
  1372. [Test] // UploadValues (Uri, NameValueCollection)
  1373. public void UploadValues2_Address_Null ()
  1374. {
  1375. WebClient wc = new WebClient ();
  1376. try {
  1377. wc.UploadValues ((Uri) null, new NameValueCollection ());
  1378. Assert.Fail ("#1");
  1379. } catch (ArgumentNullException ex) {
  1380. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1381. Assert.IsNull (ex.InnerException, "#3");
  1382. Assert.IsNotNull (ex.Message, "#4");
  1383. Assert.IsNotNull (ex.ParamName, "#5");
  1384. Assert.AreEqual ("address", ex.ParamName, "#6");
  1385. }
  1386. }
  1387. [Test] // UploadValues (Uri, NameValueCollection)
  1388. public void UploadValues2_Address_SchemeNotSupported ()
  1389. {
  1390. WebClient wc = new WebClient ();
  1391. try {
  1392. wc.UploadValues (new Uri ("tp://scheme.notsupported"),
  1393. new NameValueCollection ());
  1394. Assert.Fail ("#1");
  1395. } catch (WebException ex) {
  1396. // An error occurred performing a WebClient request
  1397. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1398. Assert.IsNotNull (ex.InnerException, "#3");
  1399. Assert.IsNotNull (ex.Message, "#4");
  1400. Assert.IsNull (ex.Response, "#5");
  1401. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1402. // The URI prefix is not recognized
  1403. Exception inner = ex.InnerException;
  1404. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1405. Assert.IsNull (inner.InnerException, "#8");
  1406. Assert.IsNotNull (inner.Message, "#9");
  1407. }
  1408. }
  1409. [Test] // UploadValues (Uri, NameValueCollection)
  1410. public void UploadValues2_Data_Null ()
  1411. {
  1412. WebClient wc = new WebClient ();
  1413. try {
  1414. wc.UploadValues (new Uri ("http://www.mono-project.com"),
  1415. (NameValueCollection) null);
  1416. Assert.Fail ("#1");
  1417. } catch (ArgumentNullException ex) {
  1418. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1419. Assert.IsNull (ex.InnerException, "#3");
  1420. Assert.IsNotNull (ex.Message, "#4");
  1421. Assert.IsNotNull (ex.ParamName, "#5");
  1422. Assert.AreEqual ("data", ex.ParamName, "#6");
  1423. }
  1424. }
  1425. [Test] // UploadValues (string, string, NameValueCollection)
  1426. public void UploadValues3_Address_Null ()
  1427. {
  1428. WebClient wc = new WebClient ();
  1429. try {
  1430. wc.UploadValues ((string) null, "POST",
  1431. new NameValueCollection ());
  1432. Assert.Fail ("#1");
  1433. } catch (ArgumentNullException ex) {
  1434. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1435. Assert.IsNull (ex.InnerException, "#3");
  1436. Assert.IsNotNull (ex.Message, "#4");
  1437. Assert.IsNotNull (ex.ParamName, "#5");
  1438. Assert.AreEqual ("address", ex.ParamName, "#6");
  1439. }
  1440. }
  1441. [Test] // UploadValues (string, string, NameValueCollection)
  1442. public void UploadValues3_Address_SchemeNotSupported ()
  1443. {
  1444. WebClient wc = new WebClient ();
  1445. try {
  1446. wc.UploadValues ("tp://scheme.notsupported",
  1447. "POST", new NameValueCollection ());
  1448. Assert.Fail ("#1");
  1449. } catch (WebException ex) {
  1450. // An error occurred performing a WebClient request
  1451. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1452. Assert.IsNotNull (ex.InnerException, "#3");
  1453. Assert.IsNotNull (ex.Message, "#4");
  1454. Assert.IsNull (ex.Response, "#5");
  1455. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1456. // The URI prefix is not recognized
  1457. Exception inner = ex.InnerException;
  1458. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1459. Assert.IsNull (inner.InnerException, "#8");
  1460. Assert.IsNotNull (inner.Message, "#9");
  1461. }
  1462. }
  1463. [Test] // UploadValues (string, string, NameValueCollection)
  1464. public void UploadValues3_Data_Null ()
  1465. {
  1466. WebClient wc = new WebClient ();
  1467. try {
  1468. wc.UploadValues ("http://www.mono-project.com",
  1469. "POST", (NameValueCollection) null);
  1470. Assert.Fail ("#1");
  1471. } catch (ArgumentNullException ex) {
  1472. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1473. Assert.IsNull (ex.InnerException, "#3");
  1474. Assert.IsNotNull (ex.Message, "#4");
  1475. Assert.IsNotNull (ex.ParamName, "#5");
  1476. Assert.AreEqual ("data", ex.ParamName, "#6");
  1477. }
  1478. }
  1479. [Test] // UploadValues (Uri, string, NameValueCollection)
  1480. public void UploadValues4_Address_Null ()
  1481. {
  1482. WebClient wc = new WebClient ();
  1483. try {
  1484. wc.UploadValues ((Uri) null, "POST",
  1485. new NameValueCollection ());
  1486. Assert.Fail ("#1");
  1487. } catch (ArgumentNullException ex) {
  1488. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1489. Assert.IsNull (ex.InnerException, "#3");
  1490. Assert.IsNotNull (ex.Message, "#4");
  1491. Assert.IsNotNull (ex.ParamName, "#5");
  1492. Assert.AreEqual ("address", ex.ParamName, "#6");
  1493. }
  1494. }
  1495. [Test] // UploadValues (Uri, string, NameValueCollection)
  1496. public void UploadValues4_Address_SchemeNotSupported ()
  1497. {
  1498. WebClient wc = new WebClient ();
  1499. try {
  1500. wc.UploadValues (new Uri ("tp://scheme.notsupported"),
  1501. "POST", new NameValueCollection ());
  1502. Assert.Fail ("#1");
  1503. } catch (WebException ex) {
  1504. // An error occurred performing a WebClient request
  1505. Assert.AreEqual (typeof (WebException), ex.GetType (), "#2");
  1506. Assert.IsNotNull (ex.InnerException, "#3");
  1507. Assert.IsNotNull (ex.Message, "#4");
  1508. Assert.IsNull (ex.Response, "#5");
  1509. Assert.AreEqual (WebExceptionStatus.UnknownError, ex.Status, "#6");
  1510. // The URI prefix is not recognized
  1511. Exception inner = ex.InnerException;
  1512. Assert.AreEqual (typeof (NotSupportedException), inner.GetType (), "#7");
  1513. Assert.IsNull (inner.InnerException, "#8");
  1514. Assert.IsNotNull (inner.Message, "#9");
  1515. }
  1516. }
  1517. [Test] // UploadValues (Uri, string, NameValueCollection)
  1518. public void UploadValues4_Data_Null ()
  1519. {
  1520. WebClient wc = new WebClient ();
  1521. try {
  1522. wc.UploadValues (new Uri ("http://www.mono-project.com"),
  1523. "POST", (NameValueCollection) null);
  1524. Assert.Fail ("#1");
  1525. } catch (ArgumentNullException ex) {
  1526. Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
  1527. Assert.IsNull (ex.InnerException, "#3");
  1528. Assert.IsNotNull (ex.Message, "#4");
  1529. Assert.IsNotNull (ex.ParamName, "#5");
  1530. Assert.AreEqual ("data", ex.ParamName, "#6");
  1531. }
  1532. }
  1533. [Test]
  1534. public void GetWebRequestOverriding ()
  1535. {
  1536. GetWebRequestOverridingTestClass testObject = new GetWebRequestOverridingTestClass ();
  1537. testObject.DownloadData ("http://www.mono-project.com");
  1538. Assert.IsTrue (testObject.overridedCodeRan, "Overrided code wasn't called");
  1539. }
  1540. class GetWebRequestOverridingTestClass : WebClient
  1541. {
  1542. internal bool overridedCodeRan = false;
  1543. protected override WebRequest GetWebRequest(Uri address)
  1544. {
  1545. overridedCodeRan = true;
  1546. return base.GetWebRequest (address);
  1547. }
  1548. }
  1549. static byte [] EchoRequestHandler (Socket socket)
  1550. {
  1551. MemoryStream ms = new MemoryStream ();
  1552. byte [] buffer = new byte [4096];
  1553. int bytesReceived = socket.Receive (buffer);
  1554. while (bytesReceived > 0) {
  1555. ms.Write (buffer, 0, bytesReceived);
  1556. // We don't check for Content-Length or anything else here, so we give the client a little time to write
  1557. // after sending the headers
  1558. Thread.Sleep (200);
  1559. if (socket.Available > 0) {
  1560. bytesReceived = socket.Receive (buffer);
  1561. } else {
  1562. bytesReceived = 0;
  1563. }
  1564. }
  1565. ms.Flush ();
  1566. ms.Position = 0;
  1567. StringBuilder sb = new StringBuilder ();
  1568. string expect = null;
  1569. StreamReader sr = new StreamReader (ms, Encoding.UTF8);
  1570. string line = null;
  1571. byte state = 0;
  1572. while ((line = sr.ReadLine ()) != null) {
  1573. if (state > 0) {
  1574. state = 2;
  1575. sb.Append (line);
  1576. sb.Append ("\r\n");
  1577. } if (line.Length == 0) {
  1578. state = 1;
  1579. } else if (line.StartsWith ("Expect:")) {
  1580. expect = line.Substring (8);
  1581. }
  1582. }
  1583. StringWriter sw = new StringWriter ();
  1584. if (expect == "100-continue" && state != 2) {
  1585. sw.WriteLine ("HTTP/1.1 100 Continue");
  1586. sw.WriteLine ();
  1587. sw.Flush ();
  1588. socket.Send (Encoding.UTF8.GetBytes (sw.ToString ()));
  1589. // receive body
  1590. ms = new MemoryStream ();
  1591. buffer = new byte [4096];
  1592. bytesReceived = socket.Receive (buffer);
  1593. while (bytesReceived > 0) {
  1594. ms.Write (buffer, 0, bytesReceived);
  1595. Thread.Sleep (200);
  1596. if (socket.Available > 0) {
  1597. bytesReceived = socket.Receive (buffer);
  1598. } else {
  1599. bytesReceived = 0;
  1600. }
  1601. }
  1602. ms.Flush ();
  1603. ms.Position = 0;
  1604. sb = new StringBuilder ();
  1605. sr = new StreamReader (ms, Encoding.UTF8);
  1606. line = sr.ReadLine ();
  1607. while (line != null) {
  1608. sb.Append (line);
  1609. sb.Append ("\r\n");
  1610. line = sr.ReadLine ();
  1611. }
  1612. }
  1613. sw = new StringWriter ();
  1614. sw.WriteLine ("HTTP/1.1 200 OK");
  1615. sw.WriteLine ("Content-Type: text/xml");
  1616. sw.WriteLine ("Content-Length: " + sb.Length.ToString (CultureInfo.InvariantCulture));
  1617. sw.WriteLine ();
  1618. sw.Write (sb.ToString ());
  1619. sw.Flush ();
  1620. return Encoding.UTF8.GetBytes (sw.ToString ());
  1621. }
  1622. [Test]
  1623. public void DefaultProxy ()
  1624. {
  1625. WebClient wc = new WebClient ();
  1626. // this is never null on .net
  1627. Assert.IsNotNull (wc.Proxy);
  1628. // and return the same instance as WebRequest.DefaultWebProxy
  1629. Assert.AreSame (wc.Proxy, WebRequest.DefaultWebProxy);
  1630. }
  1631. #if NET_4_5
  1632. [Test]
  1633. [Category ("AndroidNotWorking")] // Fails when ran as part of the entire BCL test suite. Works when only this fixture is ran
  1634. public void UploadStringAsyncCancelEvent ()
  1635. {
  1636. UploadAsyncCancelEventTest (9301, (webClient, uri, cancelEvent) =>
  1637. {
  1638. webClient.UploadStringCompleted += (sender, args) =>
  1639. {
  1640. if (args.Cancelled)
  1641. cancelEvent.Set ();
  1642. };
  1643. webClient.UploadStringAsync (uri, "PUT", "text");
  1644. });
  1645. }
  1646. [Test]
  1647. [Category ("AndroidNotWorking")] // Fails when ran as part of the entire BCL test suite. Works when only this fixture is ran
  1648. public void UploadDataAsyncCancelEvent ()
  1649. {
  1650. UploadAsyncCancelEventTest (9302, (webClient, uri, cancelEvent) =>
  1651. {
  1652. webClient.UploadDataCompleted += (sender, args) =>
  1653. {
  1654. if (args.Cancelled)
  1655. cancelEvent.Set ();
  1656. };
  1657. webClient.UploadDataAsync (uri, "PUT", new byte[] { });
  1658. });
  1659. }
  1660. [Test]
  1661. [Category ("AndroidNotWorking")] // Fails when ran as part of the entire BCL test suite. Works when only this fixture is ran
  1662. public void UploadValuesAsyncCancelEvent ()
  1663. {
  1664. UploadAsyncCancelEventTest (9303, (webClient, uri, cancelEvent) =>
  1665. {
  1666. webClient.UploadValuesCompleted += (sender, args) =>
  1667. {
  1668. if (args.Cancelled)
  1669. cancelEvent.Set ();
  1670. };
  1671. webClient.UploadValuesAsync (uri, "PUT", new NameValueCollection ());
  1672. });
  1673. }
  1674. [Test]
  1675. [Category ("AndroidNotWorking")] // Fails when ran as part of the entire BCL test suite. Works when only this fixture is ran
  1676. public void UploadFileAsyncCancelEvent ()
  1677. {
  1678. UploadAsyncCancelEventTest (9304,(webClient, uri, cancelEvent) =>
  1679. {
  1680. string tempFile = Path.Combine (_tempFolder, "upload.tmp");
  1681. File.Create (tempFile).Close ();
  1682. webClient.UploadFileCompleted += (sender, args) =>
  1683. {
  1684. if (args.Cancelled)
  1685. cancelEvent.Set ();
  1686. };
  1687. webClient.UploadFileAsync (uri, "PUT", tempFile);
  1688. });
  1689. }
  1690. [Test]
  1691. [Category ("AndroidNotWorking")] // Test suite hangs if the tests runs as part of the entire BCL suite. Works when only this fixture is ran
  1692. public void UploadFileAsyncContentType ()
  1693. {
  1694. var port = NetworkHelpers.FindFreePort ();
  1695. var serverUri = "http://localhost:" + port + "/";
  1696. var filename = Path.GetTempFileName ();
  1697. HttpListener listener = new HttpListener ();
  1698. listener.Prefixes.Add (serverUri);
  1699. listener.Start ();
  1700. using (var client = new WebClient ())
  1701. {
  1702. client.UploadFileTaskAsync (new Uri (serverUri), filename);
  1703. var request = listener.GetContext ().Request;
  1704. var expected = "multipart/form-data; boundary=---------------------";
  1705. Assert.AreEqual (expected.Length + 15, request.ContentType.Length);
  1706. Assert.AreEqual (expected, request.ContentType.Substring (0, expected.Length));
  1707. }
  1708. listener.Close ();
  1709. }
  1710. #endif
  1711. public void UploadAsyncCancelEventTest (int port, Action<WebClient, Uri, EventWaitHandle> uploadAction)
  1712. {
  1713. var ep = NetworkHelpers.LocalEphemeralEndPoint ();
  1714. string url = "http://" + ep.ToString() + "/test/";
  1715. using (var responder = new SocketResponder (ep, s => EchoRequestHandler (s)))
  1716. {
  1717. var webClient = new WebClient ();
  1718. var cancellationTokenSource = new CancellationTokenSource ();
  1719. cancellationTokenSource.Token.Register (webClient.CancelAsync);
  1720. var cancelEvent = new ManualResetEvent (false);
  1721. uploadAction.Invoke (webClient, new Uri (url), cancelEvent);
  1722. cancellationTokenSource.Cancel ();
  1723. Assert.IsTrue (cancelEvent.WaitOne (1000));
  1724. }
  1725. }
  1726. }
  1727. }