WebClientTest.cs 70 KB

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