PageTest.cs 33 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070
  1. //
  2. // Tests for System.Web.UI.Page
  3. //
  4. // Authors:
  5. // Peter Dennis Bartok ([email protected])
  6. // Sebastien Pouliot <[email protected]>
  7. // Yoni Klain <[email protected]>
  8. //
  9. // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
  10. //
  11. // Permission is hereby granted, free of charge, to any person obtaining
  12. // a copy of this software and associated documentation files (the
  13. // "Software"), to deal in the Software without restriction, including
  14. // without limitation the rights to use, copy, modify, merge, publish,
  15. // distribute, sublicense, and/or sell copies of the Software, and to
  16. // permit persons to whom the Software is furnished to do so, subject to
  17. // the following conditions:
  18. //
  19. // The above copyright notice and this permission notice shall be
  20. // included in all copies or substantial portions of the Software.
  21. //
  22. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  23. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  24. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  25. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  26. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  27. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  28. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  29. //
  30. using NUnit.Framework;
  31. using System;
  32. using System.IO;
  33. using System.Threading;
  34. using System.Security.Principal;
  35. using System.Web;
  36. using System.Web.UI;
  37. using MonoTests.SystemWeb.Framework;
  38. using MonoTests.stand_alone.WebHarness;
  39. using System.Web.UI.WebControls;
  40. using System.Web.UI.HtmlControls;
  41. using System.Collections;
  42. using System.Net;
  43. namespace MonoTests.System.Web.UI {
  44. class TestPage : Page {
  45. private HttpContext ctx;
  46. // don't call base class (so _context is never set to a non-null value)
  47. protected override HttpContext Context {
  48. get {
  49. if (ctx == null) {
  50. ctx = new HttpContext (null);
  51. ctx.User = new GenericPrincipal (new GenericIdentity ("me"), null);
  52. }
  53. return ctx;
  54. }
  55. }
  56. #if NET_2_0
  57. public new bool AsyncMode {
  58. get { return base.AsyncMode; }
  59. set { base.AsyncMode = value; }
  60. }
  61. public new object GetWrappedFileDependencies(string[] virtualFileDependencies)
  62. {
  63. return base.GetWrappedFileDependencies(virtualFileDependencies);
  64. }
  65. public new void InitOutputCache (OutputCacheParameters cacheSettings)
  66. {
  67. base.InitOutputCache (cacheSettings);
  68. }
  69. public new string UniqueFilePathSuffix {
  70. get { return base.UniqueFilePathSuffix; }
  71. }
  72. public new char IdSeparator {
  73. get {
  74. return base.IdSeparator;
  75. }
  76. }
  77. #endif
  78. }
  79. class TestPage2 : Page {
  80. private HttpContext ctx;
  81. // don't call base class (so _context is never set to a non-null value)
  82. protected override HttpContext Context {
  83. get {
  84. if (ctx == null) {
  85. ctx = new HttpContext (
  86. new HttpRequest (String.Empty, "http://www.mono-project.com", String.Empty),
  87. new HttpResponse (new StringWriter ())
  88. );
  89. }
  90. return ctx;
  91. }
  92. }
  93. public HttpContext HttpContext {
  94. get { return Context; }
  95. }
  96. }
  97. [TestFixture]
  98. public class PageTest {
  99. [TestFixtureSetUp]
  100. public void SetUpTest ()
  101. {
  102. #if DOT_NET
  103. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.PageCultureTest.aspx", "PageCultureTest.aspx");
  104. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.PageLifecycleTest.aspx", "PageLifecycleTest.aspx");
  105. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.PageValidationTest.aspx", "PageValidationTest.aspx");
  106. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.AsyncPage.aspx", "AsyncPage.aspx");
  107. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.AsyncPage.aspx", "AsyncPage.aspx");
  108. #else
  109. WebTest.CopyResource (GetType (), "PageCultureTest.aspx", "PageCultureTest.aspx");
  110. WebTest.CopyResource (GetType (), "PageLifecycleTest.aspx", "PageLifecycleTest.aspx");
  111. WebTest.CopyResource (GetType (), "PageValidationTest.aspx", "PageValidationTest.aspx");
  112. WebTest.CopyResource (GetType (), "AsyncPage.aspx", "AsyncPage.aspx");
  113. WebTest.CopyResource (GetType (), "AsyncPage.aspx", "AsyncPage.aspx");
  114. #endif
  115. }
  116. [Test]
  117. [ExpectedException (typeof(HttpException))]
  118. public void RequestExceptionTest ()
  119. {
  120. Page p;
  121. HttpRequest r;
  122. p = new Page ();
  123. r = p.Request;
  124. }
  125. [Test]
  126. #if NET_2_0
  127. [Category ("NotDotNet")] // page.User throw NRE in 2.0 RC
  128. #endif
  129. public void User_OverridenContext ()
  130. {
  131. TestPage page = new TestPage ();
  132. Assert.AreEqual ("me", page.User.Identity.Name, "User");
  133. }
  134. [Test]
  135. [ExpectedException (typeof (HttpException))]
  136. public void Request_OverridenContext ()
  137. {
  138. TestPage2 page = new TestPage2 ();
  139. Assert.IsNotNull (page.Request, "Request");
  140. // it doesn't seems to access the context via the virtual property
  141. }
  142. [Test]
  143. public void Request_OverridenContext_Indirect ()
  144. {
  145. TestPage2 page = new TestPage2 ();
  146. Assert.IsNotNull (page.HttpContext.Request, "Request");
  147. }
  148. #if NET_2_0
  149. [Test]
  150. [Category ("NunitWeb")]
  151. public void PageHeaderOnPreInit ()
  152. {
  153. Thread.Sleep (200);
  154. PageDelegate pd = new PageDelegate (Page_OnPreInit);
  155. WebTest t = new WebTest (PageInvoker.CreateOnPreInit (pd));
  156. string html = t.Run ();
  157. string newHtml = html.Substring (html.IndexOf ("<head"), (html.IndexOf ("<body") - html.IndexOf ("<head")));
  158. string origHtml = @" <head id=""Head1""><title>
  159. PreInit
  160. </title></head>";
  161. HtmlDiff.AssertAreEqual (origHtml, newHtml, "HeaderRenderInit");
  162. Thread.Sleep (200);
  163. WebTest.Unload ();
  164. }
  165. public static void Page_OnPreInit (Page p)
  166. {
  167. Assert.AreEqual (null, p.Header, "HeaderOnPreInit");
  168. p.Title = "PreInit";
  169. }
  170. [Test]
  171. [Category ("NunitWeb")]
  172. public void PageHeaderInit ()
  173. {
  174. Thread.Sleep (200);
  175. PageDelegate pd = new PageDelegate (CheckHeader);
  176. WebTest t = new WebTest (PageInvoker.CreateOnInit (pd));
  177. string html = t.Run ();
  178. string newHtml = html.Substring (html.IndexOf ("<head"), (html.IndexOf ("<body") - html.IndexOf ("<head")));
  179. string origHtml = @" <head id=""Head1""><title>
  180. Test
  181. </title></head>";
  182. HtmlDiff.AssertAreEqual (origHtml, newHtml, "HeaderRenderInit");
  183. Thread.Sleep (200);
  184. WebTest.Unload ();
  185. }
  186. [Test]
  187. [Category ("NunitWeb")]
  188. public void PageHeaderInitComplete ()
  189. {
  190. Thread.Sleep (200);
  191. WebTest t = new WebTest ();
  192. PageDelegates pd = new PageDelegates ();
  193. pd.InitComplete = CheckHeader;
  194. t.Invoker = new PageInvoker (pd);
  195. string html = t.Run ();
  196. string newHtml = html.Substring (html.IndexOf ("<head"), (html.IndexOf ("<body") - html.IndexOf ("<head")));
  197. string origHtml = @" <head id=""Head1""><title>
  198. Test
  199. </title></head>";
  200. HtmlDiff.AssertAreEqual (origHtml, newHtml, "HeaderRenderInitComplete");
  201. Thread.Sleep (200);
  202. WebTest.Unload ();
  203. }
  204. [Test]
  205. [Category ("NunitWeb")]
  206. public void PageHeaderPreLoad ()
  207. {
  208. Thread.Sleep (200);
  209. WebTest t = new WebTest ();
  210. PageDelegates pd = new PageDelegates ();
  211. pd.PreLoad = CheckHeader;
  212. t.Invoker = new PageInvoker (pd);
  213. string html = t.Run ();
  214. string newHtml = html.Substring (html.IndexOf ("<head"), (html.IndexOf ("<body") - html.IndexOf ("<head")));
  215. string origHtml = @" <head id=""Head1""><title>
  216. Test
  217. </title></head>";
  218. HtmlDiff.AssertAreEqual (origHtml, newHtml, "HeaderRenderPreLoad");
  219. Thread.Sleep (200);
  220. WebTest.Unload ();
  221. }
  222. [Test]
  223. [Category ("NunitWeb")]
  224. public void PageHeaderLoad ()
  225. {
  226. Thread.Sleep (200);
  227. PageDelegate pd = new PageDelegate (CheckHeader);
  228. WebTest t = new WebTest (PageInvoker.CreateOnLoad (pd));
  229. string html = t.Run ();
  230. string newHtml = html.Substring (html.IndexOf ("<head"), (html.IndexOf ("<body") - html.IndexOf ("<head")));
  231. string origHtml = @" <head id=""Head1""><title>
  232. Test
  233. </title></head>";
  234. HtmlDiff.AssertAreEqual (origHtml, newHtml, "HeaderRenderLoad");
  235. Thread.Sleep (200);
  236. WebTest.Unload ();
  237. }
  238. [Test]
  239. [Category ("NunitWeb")]
  240. public void PageHeaderLoadComplete ()
  241. {
  242. Thread.Sleep (200);
  243. WebTest t = new WebTest ();
  244. PageDelegates pd = new PageDelegates ();
  245. pd.LoadComplete = CheckHeader;
  246. t.Invoker = new PageInvoker (pd);
  247. string html = t.Run ();
  248. string newHtml = html.Substring (html.IndexOf ("<head"), (html.IndexOf ("<body") - html.IndexOf ("<head")));
  249. string origHtml = @" <head id=""Head1""><title>
  250. Test
  251. </title></head>";
  252. HtmlDiff.AssertAreEqual (origHtml, newHtml, "HeaderRenderLoadComplete");
  253. Thread.Sleep (200);
  254. WebTest.Unload ();
  255. }
  256. [Test]
  257. [Category ("NunitWeb")]
  258. public void PageHeaderPreRender ()
  259. {
  260. Thread.Sleep (200);
  261. WebTest t = new WebTest ();
  262. PageDelegates pd = new PageDelegates ();
  263. pd.PreRender = CheckHeader;
  264. t.Invoker = new PageInvoker (pd);
  265. string html = t.Run ();
  266. string newHtml = html.Substring (html.IndexOf ("<head"), (html.IndexOf ("<body") - html.IndexOf ("<head")));
  267. string origHtml = @" <head id=""Head1""><title>
  268. Test
  269. </title></head>";
  270. HtmlDiff.AssertAreEqual (origHtml, newHtml, "HeaderRenderPreRender");
  271. Thread.Sleep (200);
  272. WebTest.Unload ();
  273. }
  274. [Test]
  275. [Category ("NunitWeb")]
  276. public void PageHeaderPreRenderComplete ()
  277. {
  278. Thread.Sleep (200);
  279. WebTest t = new WebTest ();
  280. PageDelegates pd = new PageDelegates ();
  281. pd.PreRenderComplete = CheckHeader;
  282. t.Invoker = new PageInvoker (pd);
  283. string html = t.Run ();
  284. string newHtml = html.Substring (html.IndexOf ("<head"), (html.IndexOf ("<body") - html.IndexOf ("<head")));
  285. string origHtml = @" <head id=""Head1""><title>
  286. Test
  287. </title></head>";
  288. HtmlDiff.AssertAreEqual (origHtml, newHtml, "HeaderRenderPreRenderComplete");
  289. Thread.Sleep (200);
  290. WebTest.Unload ();
  291. }
  292. public static void CheckHeader (Page p)
  293. {
  294. Assert.AreEqual ("Untitled Page", p.Title, "CheckHeader#1");
  295. Assert.AreEqual ("Untitled Page", p.Header.Title, "CheckHeader#2");
  296. p.Title = "Test0";
  297. Assert.AreEqual ("Test0", p.Header.Title, "CheckHeader#3");
  298. p.Header.Title = "Test";
  299. Assert.AreEqual ("Test", p.Title, "CheckHeader#4");
  300. }
  301. #endif
  302. #if NET_2_0
  303. [Test]
  304. [Category ("NunitWeb")]
  305. public void Page_ValidationGroup () {
  306. new WebTest (PageInvoker.CreateOnLoad (Page_ValidationGroup_Load)).Run ();
  307. }
  308. public static void Page_ValidationGroup_Load (Page page) {
  309. TextBox textbox;
  310. BaseValidator val;
  311. textbox = new TextBox ();
  312. textbox.ID = "T1";
  313. textbox.ValidationGroup = "VG1";
  314. page.Form.Controls.Add (textbox);
  315. val = new RequiredFieldValidator ();
  316. val.ControlToValidate = "T1";
  317. val.ValidationGroup = "VG1";
  318. page.Form.Controls.Add (val);
  319. textbox = new TextBox ();
  320. textbox.ID = "T2";
  321. textbox.ValidationGroup = "VG2";
  322. page.Form.Controls.Add (textbox);
  323. val = new RequiredFieldValidator ();
  324. val.ControlToValidate = "T2";
  325. val.ValidationGroup = "VG2";
  326. page.Form.Controls.Add (val);
  327. textbox = new TextBox ();
  328. textbox.ID = "T3";
  329. page.Form.Controls.Add (textbox);
  330. val = new RequiredFieldValidator ();
  331. val.ControlToValidate = "T3";
  332. page.Form.Controls.Add (val);
  333. Assert.AreEqual (3, page.Validators.Count, "Page_ValidationGroup#1");
  334. Assert.AreEqual (1, page.GetValidators ("").Count, "Page_ValidationGroup#2");
  335. Assert.AreEqual (1, page.GetValidators (null).Count, "Page_ValidationGroup#3");
  336. Assert.AreEqual (0, page.GetValidators ("Fake").Count, "Page_ValidationGroup#4");
  337. Assert.AreEqual (1, page.GetValidators ("VG1").Count, "Page_ValidationGroup#5");
  338. Assert.AreEqual (1, page.GetValidators ("VG2").Count, "Page_ValidationGroup#6");
  339. }
  340. #endif
  341. #if NET_2_0
  342. // This test are testing validation fixture using RequiredFieldValidator for example
  343. [Test]
  344. [Category ("NunitWeb")]
  345. public void Page_ValidationCollection ()
  346. {
  347. WebTest t = new WebTest (PageInvoker.CreateOnLoad (ValidationCollectionload));
  348. t.Run ();
  349. }
  350. public static void ValidationCollectionload (Page p)
  351. {
  352. RequiredFieldValidator validator = new RequiredFieldValidator ();
  353. validator.ID = "v";
  354. RequiredFieldValidator validator1 = new RequiredFieldValidator ();
  355. validator.ID = "v1";
  356. p.Controls.Add (validator);
  357. p.Controls.Add (validator1);
  358. Assert.AreEqual (2, p.Validators.Count, "Validators collection count fail");
  359. Assert.AreEqual (true, p.Validators[0].IsValid, "Validators collection value#1 fail");
  360. Assert.AreEqual (true, p.Validators[1].IsValid, "Validators collection value#2 fail");
  361. }
  362. [Test]
  363. [Category ("NunitWeb")]
  364. public void Page_ValidatorTest1 ()
  365. {
  366. WebTest t = new WebTest ("PageValidationTest.aspx");
  367. string PageRenderHtml = t.Run ();
  368. FormRequest fr = new FormRequest (t.Response, "form1");
  369. fr.Controls.Add ("TextBox1");
  370. PageDelegates pd = new PageDelegates ();
  371. pd.PreRender = ValidatorTest1PreRender;
  372. t.Invoker = new PageInvoker (pd);
  373. fr.Controls["TextBox1"].Value = "";
  374. t.Request = fr;
  375. PageRenderHtml = t.Run ();
  376. Assert.IsNotNull(t.UserData, "Validate server side method not raised fail");
  377. ArrayList list = t.UserData as ArrayList;
  378. if (list == null)
  379. Assert.Fail ("User data not created fail#1");
  380. Assert.AreEqual (1, list.Count, "Just validate with no validation group must be called fail#1");
  381. Assert.AreEqual ("Validate", list[0].ToString (), "Validate with no validation group must be called fail#1");
  382. }
  383. public static void ValidatorTest1PreRender (Page p)
  384. {
  385. Assert.AreEqual (1, p.Validators.Count, "Validators count fail#1");
  386. Assert.AreEqual (false, p.Validators[0].IsValid, "Specific validator value filed#1");
  387. Assert.AreEqual (false, p.IsValid, "Page validation Failed#1");
  388. }
  389. [Test]
  390. [Category ("NunitWeb")]
  391. public void Page_ValidatorTest2 ()
  392. {
  393. WebTest t = new WebTest ("PageValidationTest.aspx");
  394. string PageRenderHtml = t.Run ();
  395. FormRequest fr = new FormRequest (t.Response, "form1");
  396. fr.Controls.Add ("TextBox1");
  397. PageDelegates pd = new PageDelegates ();
  398. pd.PreRender = ValidatorTest2PreRender;
  399. t.Invoker = new PageInvoker (pd);
  400. fr.Controls["TextBox1"].Value = "test";
  401. t.Request = fr;
  402. PageRenderHtml = t.Run ();
  403. Assert.IsNotNull ( t.UserData, "Validate server side method not raised fail#2");
  404. ArrayList list = t.UserData as ArrayList;
  405. if (list == null)
  406. Assert.Fail ("User data not created fail#2");
  407. Assert.AreEqual (1, list.Count, "Just validate with no validation group must be called fail#2");
  408. Assert.AreEqual ("Validate", list[0].ToString (), "Validate with no validation group must be called fail#2");
  409. }
  410. public static void ValidatorTest2PreRender (Page p)
  411. {
  412. Assert.AreEqual (1, p.Validators.Count, "Validators count fail#2");
  413. Assert.AreEqual (true, p.Validators[0].IsValid, "Specific validator value fail#2");
  414. Assert.AreEqual (true, p.IsValid, "Page validation Fail#2");
  415. }
  416. [Test]
  417. [Category ("NunitWeb")]
  418. public void Page_ValidatorTest3 ()
  419. {
  420. WebTest t = new WebTest (PageInvoker.CreateOnLoad (ValidatorTest3Load));
  421. t.Run ();
  422. }
  423. public static void ValidatorTest3Load (Page p)
  424. {
  425. TextBox tbx = new TextBox ();
  426. tbx.ID = "tbx";
  427. RequiredFieldValidator vld = new RequiredFieldValidator ();
  428. vld.ID = "vld";
  429. vld.ControlToValidate = "tbx";
  430. p.Controls.Add (tbx);
  431. p.Controls.Add (vld);
  432. vld.Validate ();
  433. Assert.AreEqual (false, p.Validators[0].IsValid, "RequiredField result fail #1");
  434. tbx.Text = "test";
  435. vld.Validate ();
  436. Assert.AreEqual (true, p.Validators[0].IsValid, "RequiredField result fail #2");
  437. }
  438. [Test]
  439. [Category ("NunitWeb")]
  440. public void Page_ValidatorTest4 ()
  441. {
  442. WebTest t = new WebTest ("PageValidationTest.aspx");
  443. string PageRenderHtml = t.Run ();
  444. FormRequest fr = new FormRequest (t.Response, "form1");
  445. fr.Controls.Add ("__EVENTTARGET");
  446. fr.Controls.Add ("__EVENTARGUMENT");
  447. fr.Controls.Add ("TextBox1");
  448. fr.Controls.Add ("Button1");
  449. PageDelegates pd = new PageDelegates ();
  450. pd.PreRender = ValidatorTest4PreRender;
  451. t.Invoker = new PageInvoker (pd);
  452. fr.Controls["__EVENTTARGET"].Value = "";
  453. fr.Controls["__EVENTARGUMENT"].Value = "";
  454. fr.Controls["TextBox1"].Value = "";
  455. fr.Controls["Button1"].Value = "Button";
  456. t.Request = fr;
  457. PageRenderHtml = t.Run ();
  458. Assert.IsNotNull (t.UserData, "Validate server side method not raised fail#3");
  459. ArrayList list = t.UserData as ArrayList;
  460. if (list == null)
  461. Assert.Fail ("User data not created fail#3");
  462. Assert.AreEqual (1, list.Count, "Just validate with validation group must be called fail#3");
  463. Assert.AreEqual ("Validate_WithGroup", list[0].ToString (), "Validate with validation group must be called fail#3");
  464. }
  465. public static void ValidatorTest4PreRender (Page p)
  466. {
  467. Assert.AreEqual (1, p.Validators.Count, "Validators count fail#3");
  468. Assert.AreEqual (false, p.Validators[0].IsValid, "Specific validator value filed#3");
  469. Assert.AreEqual (false, p.IsValid, "Page validation Failed#3");
  470. }
  471. [Test]
  472. [Category ("NunitWeb")]
  473. public void Page_ValidatorTest5 ()
  474. {
  475. WebTest t = new WebTest ("PageValidationTest.aspx");
  476. string PageRenderHtml = t.Run ();
  477. FormRequest fr = new FormRequest (t.Response, "form1");
  478. fr.Controls.Add ("__EVENTTARGET");
  479. fr.Controls.Add ("__EVENTARGUMENT");
  480. fr.Controls.Add ("TextBox1");
  481. fr.Controls.Add ("Button1");
  482. PageDelegates pd = new PageDelegates ();
  483. pd.PreRender = ValidatorTest5PreRender;
  484. t.Invoker = new PageInvoker (pd);
  485. fr.Controls["__EVENTTARGET"].Value = "";
  486. fr.Controls["__EVENTARGUMENT"].Value = "";
  487. fr.Controls["TextBox1"].Value = "Test";
  488. fr.Controls["Button1"].Value = "Button";
  489. t.Request = fr;
  490. PageRenderHtml = t.Run ();
  491. Assert.IsNotNull ( t.UserData, "Validate server side method not raised fail#3");
  492. ArrayList list = t.UserData as ArrayList;
  493. if (list == null)
  494. Assert.Fail ("User data not created fail#3");
  495. Assert.AreEqual (1, list.Count, "Just validate with validation group must be called fail#3");
  496. Assert.AreEqual ("Validate_WithGroup", list[0].ToString (), "Validate with validation group must be called fail#3");
  497. }
  498. public static void ValidatorTest5PreRender (Page p)
  499. {
  500. Assert.AreEqual (1, p.Validators.Count, "Validators count fail#3");
  501. Assert.AreEqual (true, p.Validators[0].IsValid, "Specific validator value filed#3");
  502. Assert.AreEqual (true, p.IsValid, "Page validation Failed#3");
  503. }
  504. [Test]
  505. [Category ("NunitWeb")]
  506. public void Page_ValidatorTest6 ()
  507. {
  508. WebTest t = new WebTest ("PageValidationTest.aspx");
  509. string PageRenderHtml = t.Run ();
  510. FormRequest fr = new FormRequest (t.Response, "form1");
  511. fr.Controls.Add ("__EVENTTARGET");
  512. fr.Controls.Add ("__EVENTARGUMENT");
  513. fr.Controls.Add ("TextBox1");
  514. fr.Controls.Add ("Button1");
  515. PageDelegates pd = new PageDelegates ();
  516. pd.PreRender = ValidatorTest6PreRender;
  517. pd.Load = ValidatorTest6Load;
  518. t.Invoker = new PageInvoker (pd);
  519. fr.Controls["__EVENTTARGET"].Value = "";
  520. fr.Controls["__EVENTARGUMENT"].Value = "";
  521. fr.Controls["TextBox1"].Value = "Test";
  522. fr.Controls["Button1"].Value = "Button";
  523. t.Request = fr;
  524. PageRenderHtml = t.Run ();
  525. Assert.IsNotNull (t.UserData, "Validate server side method not raised fail#3");
  526. ArrayList list = t.UserData as ArrayList;
  527. if (list == null)
  528. Assert.Fail ("User data not created fail#3");
  529. Assert.AreEqual (1, list.Count, "Just validate with validation group must be called fail#3");
  530. Assert.AreEqual ("Validate_WithGroup", list[0].ToString (), "Validate with validation group must be called fail#3");
  531. }
  532. public static void ValidatorTest6PreRender (Page p)
  533. {
  534. Assert.AreEqual (1, p.Validators.Count, "Validators count fail#3");
  535. Assert.AreEqual (false, p.Validators[0].IsValid, "Specific validator value filed#3");
  536. Assert.AreEqual (false, p.IsValid, "Page validation Failed#3");
  537. }
  538. public static void ValidatorTest6Load (Page p)
  539. {
  540. if (p.IsPostBack) {
  541. RequiredFieldValidator rfv = p.FindControl ("RequiredFieldValidator1") as RequiredFieldValidator;
  542. if (rfv == null)
  543. Assert.Fail ("RequiredFieldValidator does not created fail");
  544. rfv.InitialValue = "Test";
  545. }
  546. }
  547. [Test]
  548. [Category ("NunitWeb")]
  549. public void Page_ValidatorTest7 ()
  550. {
  551. WebTest t = new WebTest ("PageValidationTest.aspx");
  552. string PageRenderHtml = t.Run ();
  553. FormRequest fr = new FormRequest (t.Response, "form1");
  554. fr.Controls.Add ("__EVENTTARGET");
  555. fr.Controls.Add ("__EVENTARGUMENT");
  556. fr.Controls.Add ("TextBox1");
  557. fr.Controls.Add ("Button1");
  558. PageDelegates pd = new PageDelegates ();
  559. pd.PreRender = ValidatorTest7PreRender;
  560. pd.Load = ValidatorTest7Load;
  561. t.Invoker = new PageInvoker (pd);
  562. fr.Controls["__EVENTTARGET"].Value = "";
  563. fr.Controls["__EVENTARGUMENT"].Value = "";
  564. fr.Controls["TextBox1"].Value = "Test";
  565. fr.Controls["Button1"].Value = "Button";
  566. t.Request = fr;
  567. PageRenderHtml = t.Run ();
  568. Assert.IsNotNull (t.UserData, "Validate server side method not raised fail#4");
  569. ArrayList list = t.UserData as ArrayList;
  570. if (list == null)
  571. Assert.Fail ("User data not created fail#4");
  572. Assert.AreEqual (1, list.Count, "Just validate with validation group must be called fail#4");
  573. Assert.AreEqual ("Validate_WithGroup", list[0].ToString (), "Validate with validation group must be called fail#4");
  574. }
  575. public static void ValidatorTest7PreRender (Page p)
  576. {
  577. Assert.AreEqual (2, p.Validators.Count, "Validators count fail#4");
  578. Assert.AreEqual (true, p.Validators[0].IsValid, "Specific validator value filed_1#4");
  579. Assert.AreEqual (true, p.Validators[1].IsValid, "Specific validator value filed#4_2#4");
  580. Assert.AreEqual (true, p.IsValid, "Page validation Failed#4");
  581. }
  582. public static void ValidatorTest7Load (Page p)
  583. {
  584. RequiredFieldValidator validator = new RequiredFieldValidator ();
  585. validator.ID = "validator";
  586. validator.ControlToValidate = "TextBox1";
  587. validator.ValidationGroup = "fake";
  588. validator.InitialValue = "Test";
  589. p.Form.Controls.Add (validator);
  590. }
  591. [Test]
  592. [Category ("NunitWeb")]
  593. public void Page_Lifecycle ()
  594. {
  595. WebTest t = new WebTest ("PageLifecycleTest.aspx");
  596. string PageRenderHtml = t.Run ();
  597. ArrayList eventlist = t.UserData as ArrayList;
  598. if (eventlist == null)
  599. Assert.Fail ("User data does not been created fail");
  600. Assert.AreEqual ("OnPreInit", eventlist[0], "Live Cycle Flow #1");
  601. Assert.AreEqual ("OnInit", eventlist[1], "Live Cycle Flow #2");
  602. Assert.AreEqual ("OnInitComplete", eventlist[2], "Live Cycle Flow #3");
  603. Assert.AreEqual ("OnPreLoad", eventlist[3], "Live Cycle Flow #4");
  604. Assert.AreEqual ("OnLoad", eventlist[4], "Live Cycle Flow #5");
  605. Assert.AreEqual ("OnLoadComplete", eventlist[5], "Live Cycle Flow #6");
  606. Assert.AreEqual ("OnPreRender", eventlist[6], "Live Cycle Flow #7");
  607. Assert.AreEqual ("OnPreRenderComplete", eventlist[7], "Live Cycle Flow #8");
  608. Assert.AreEqual ("OnSaveStateComplete", eventlist[8], "Live Cycle Flow #9");
  609. Assert.AreEqual ("OnUnload", eventlist[9], "Live Cycle Flow #10");
  610. }
  611. [Test]
  612. [Category ("NunitWeb")]
  613. [Category ("NotWorking")]
  614. public void AddOnPreRenderCompleteAsync ()
  615. {
  616. WebTest t = new WebTest ("AsyncPage.aspx");
  617. t.Invoker = PageInvoker.CreateOnLoad (AddOnPreRenderCompleteAsync_Load);
  618. string str = t.Run ();
  619. ArrayList eventlist = t.UserData as ArrayList;
  620. if (eventlist == null)
  621. Assert.Fail ("User data does not been created fail");
  622. Assert.AreEqual ("BeginGetAsyncData", eventlist[0], "BeginGetAsyncData Failed");
  623. Assert.AreEqual ("EndGetAsyncData", eventlist[1], "EndGetAsyncData Failed");
  624. }
  625. [Test]
  626. [Category ("NotWorking")]
  627. [Category ("NunitWeb")]
  628. public void ExecuteRegisteredAsyncTasks ()
  629. {
  630. WebTest t = new WebTest ("AsyncPage.aspx");
  631. t.Invoker = PageInvoker.CreateOnLoad (ExecuteRegisteredAsyncTasks_Load);
  632. string str = t.Run ();
  633. ArrayList eventlist = t.UserData as ArrayList;
  634. if (eventlist == null)
  635. Assert.Fail ("User data does not been created fail");
  636. Assert.AreEqual ("BeginGetAsyncData", eventlist[0], "BeginGetAsyncData Failed");
  637. Assert.AreEqual ("EndGetAsyncData", eventlist[1], "EndGetAsyncData Failed");
  638. }
  639. public static void ExecuteRegisteredAsyncTasks_Load (Page p)
  640. {
  641. BeginEventHandler bh = new BeginEventHandler (BeginGetAsyncData);
  642. EndEventHandler eh = new EndEventHandler (EndGetAsyncData);
  643. p.AddOnPreRenderCompleteAsync (bh, eh);
  644. p.ExecuteRegisteredAsyncTasks ();
  645. }
  646. static WebRequest myRequest;
  647. public static void AddOnPreRenderCompleteAsync_Load (Page p)
  648. {
  649. BeginEventHandler bh = new BeginEventHandler(BeginGetAsyncData);
  650. EndEventHandler eh = new EndEventHandler(EndGetAsyncData);
  651. p.AddOnPreRenderCompleteAsync(bh, eh);
  652. // Initialize the WebRequest.
  653. string address = "http://MyPage.aspx";
  654. myRequest = WebRequest.Create(address);
  655. }
  656. static IAsyncResult BeginGetAsyncData(Object src, EventArgs args, AsyncCallback cb, Object state)
  657. {
  658. if (WebTest.CurrentTest.UserData == null) {
  659. ArrayList list = new ArrayList ();
  660. list.Add ("BeginGetAsyncData");
  661. WebTest.CurrentTest.UserData = list;
  662. }
  663. else {
  664. ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
  665. if (list == null)
  666. throw new NullReferenceException ();
  667. list.Add ("BeginGetAsyncData");
  668. WebTest.CurrentTest.UserData = list;
  669. }
  670. return new Customresult(); // myRequest.BeginGetResponse (cb, state);
  671. }
  672. static void EndGetAsyncData(IAsyncResult ar)
  673. {
  674. if (WebTest.CurrentTest.UserData == null) {
  675. ArrayList list = new ArrayList ();
  676. list.Add ("EndGetAsyncData");
  677. WebTest.CurrentTest.UserData = list;
  678. }
  679. else {
  680. ArrayList list = WebTest.CurrentTest.UserData as ArrayList;
  681. if (list == null)
  682. throw new NullReferenceException ();
  683. list.Add ("EndGetAsyncData");
  684. WebTest.CurrentTest.UserData = list;
  685. }
  686. }
  687. [Test]
  688. [Category ("NotWorking")]
  689. public void AsyncMode ()
  690. {
  691. TestPage p = new TestPage ();
  692. Assert.AreEqual (false, p.AsyncMode, "AsyncMode#1");
  693. p.AsyncMode = true;
  694. Assert.AreEqual (true, p.AsyncMode, "AsyncMode#2");
  695. }
  696. [Test]
  697. [Category ("NotWorking")]
  698. public void AsyncTimeout ()
  699. {
  700. Page p = new Page ();
  701. Assert.AreEqual (45, ((TimeSpan) p.AsyncTimeout).Seconds, "AsyncTimeout#1");
  702. p.AsyncTimeout = new TimeSpan (0, 0, 50);
  703. Assert.AreEqual (50, ((TimeSpan) p.AsyncTimeout).Seconds, "AsyncTimeout#2");
  704. }
  705. [Test]
  706. public void ClientQueryString ()
  707. {
  708. // httpContext URL cannot be set.
  709. }
  710. [Test]
  711. public void ClientScript ()
  712. {
  713. Page p = new Page ();
  714. Assert.AreEqual (typeof(ClientScriptManager), p.ClientScript.GetType(), "ClientScriptManager");
  715. }
  716. [Test]
  717. [Category ("NotWorking")]
  718. public void CreateHtmlTextWriterFromType ()
  719. {
  720. HtmlTextWriter writer = Page.CreateHtmlTextWriterFromType (null, typeof (HtmlTextWriter));
  721. Assert.IsNotNull (writer, "CreateHtmlTextWriterFromType Failed");
  722. }
  723. [Test]
  724. public void EnableEventValidation ()
  725. {
  726. Page p = new Page ();
  727. Assert.AreEqual (true, p.EnableEventValidation, "EnableEventValidation#1");
  728. p.EnableEventValidation = false;
  729. Assert.AreEqual (false, p.EnableEventValidation, "EnableEventValidation#2");
  730. }
  731. [Test]
  732. [Category ("NunitWeb")]
  733. public void Form ()
  734. {
  735. Page p = new Page ();
  736. Assert.AreEqual (null, p.Form, "Form#1");
  737. WebTest t = new WebTest (PageInvoker.CreateOnLoad (Form_Load));
  738. t.Run ();
  739. }
  740. public static void Form_Load (Page p)
  741. {
  742. Assert.IsNotNull (p.Form, "Form#2");
  743. Assert.AreEqual ("form1", p.Form.ID, "Form#3");
  744. Assert.AreEqual (typeof (HtmlForm), p.Form.GetType (), "Form#4");
  745. }
  746. [Test]
  747. [Category ("NotWorking")]
  748. public void GetWrappedFileDependencies ()
  749. {
  750. TestPage p = new TestPage ();
  751. string []s = { "test.aspx","fake.aspx" };
  752. object list = p.GetWrappedFileDependencies (s);
  753. Assert.AreEqual (typeof(String[]), list.GetType (), "GetWrappedFileDependencie#1");
  754. Assert.AreEqual (2, ((String[]) list).Length, "GetWrappedFileDependencie#2");
  755. Assert.AreEqual ("test.aspx", ((String[]) list)[0], "GetWrappedFileDependencie#3");
  756. Assert.AreEqual ("fake.aspx", ((String[]) list)[1], "GetWrappedFileDependencie#4");
  757. }
  758. [Test]
  759. public void IdSeparator ()
  760. {
  761. TestPage p = new TestPage ();
  762. Assert.AreEqual ('$', p.IdSeparator, "IdSeparator");
  763. }
  764. [Test]
  765. [Category ("NunitWeb")]
  766. public void InitializeCulture ()
  767. {
  768. WebTest t = new WebTest ("PageCultureTest.aspx");
  769. string PageRenderHtml = t.Run ();
  770. ArrayList eventlist = t.UserData as ArrayList;
  771. if (eventlist == null)
  772. Assert.Fail ("User data does not been created fail");
  773. Assert.AreEqual ("InitializeCulture", eventlist[0], "Live Cycle Flow #0");
  774. Assert.AreEqual ("OnPreInit", eventlist[1], "Live Cycle Flow #1");
  775. Assert.AreEqual ("OnInit", eventlist[2], "Live Cycle Flow #2");
  776. Assert.AreEqual ("OnInitComplete", eventlist[3], "Live Cycle Flow #3");
  777. Assert.AreEqual ("OnPreLoad", eventlist[4], "Live Cycle Flow #4");
  778. Assert.AreEqual ("OnLoad", eventlist[5], "Live Cycle Flow #5");
  779. Assert.AreEqual ("OnLoadComplete", eventlist[6], "Live Cycle Flow #6");
  780. Assert.AreEqual ("OnPreRender", eventlist[7], "Live Cycle Flow #7");
  781. Assert.AreEqual ("OnPreRenderComplete", eventlist[8], "Live Cycle Flow #8");
  782. Assert.AreEqual ("OnSaveStateComplete", eventlist[9], "Live Cycle Flow #9");
  783. Assert.AreEqual ("OnUnload", eventlist[10], "Live Cycle Flow #10");
  784. }
  785. [Test]
  786. [Category ("NotWorking")]
  787. public void IsAsync ()
  788. {
  789. Page p = new Page ();
  790. Assert.AreEqual (false, p.IsAsync, "IsAsync");
  791. }
  792. [Test]
  793. public void IsCallback ()
  794. {
  795. Page p = new Page ();
  796. Assert.AreEqual (false, p.IsCallback, "IsCallback");
  797. }
  798. [Test]
  799. public void IsCrossPagePostBack ()
  800. {
  801. Page p = new Page ();
  802. Assert.AreEqual (false, p.IsCrossPagePostBack, "IsCrossPagePostBack");
  803. }
  804. [Test]
  805. public void Items ()
  806. {
  807. Page p = new Page ();
  808. IDictionary d = p.Items;
  809. d.Add ("key", "test");
  810. Assert.AreEqual (1, p.Items.Count, "Items#1");
  811. Assert.AreEqual ("test", p.Items["key"].ToString(), "Items#2");
  812. }
  813. [Test]
  814. public void MaintainScrollPositionOnPostBack ()
  815. {
  816. Page p = new Page ();
  817. Assert.AreEqual (false, p.MaintainScrollPositionOnPostBack, "MaintainScrollPositionOnPostBack#1");
  818. p.MaintainScrollPositionOnPostBack = true;
  819. Assert.AreEqual (true, p.MaintainScrollPositionOnPostBack, "MaintainScrollPositionOnPostBack#2");
  820. }
  821. [Test]
  822. [Category("NunitWeb")]
  823. public void Master ()
  824. {
  825. Page p = new Page ();
  826. Assert.AreEqual (null, p.Master, "Master#1");
  827. WebTest t = new WebTest ("MyPageWithMaster.aspx");
  828. t.Invoker = PageInvoker.CreateOnLoad (Master_Load);
  829. t.Run ();
  830. Assert.AreEqual ("asp.my_master", t.UserData.ToString ().ToLower(), "Master#2");
  831. }
  832. public static void Master_Load (Page p)
  833. {
  834. WebTest.CurrentTest.UserData = p.Master.GetType().ToString();
  835. }
  836. [Test]
  837. public void MasterPageFile ()
  838. {
  839. Page p = new Page ();
  840. Assert.AreEqual (null, p.MasterPageFile, "MasterPageFile#1");
  841. p.MasterPageFile = "test";
  842. Assert.AreEqual ("test", p.MasterPageFile, "MasterPageFile#2");
  843. }
  844. [Test]
  845. [Category ("NotWorking")]
  846. public void MaxPageStateFieldLength ()
  847. {
  848. Page p = new Page ();
  849. Assert.AreEqual (-1, p.MaxPageStateFieldLength, "MaxPageStateFieldLength#1");
  850. p.MaxPageStateFieldLength = 10;
  851. Assert.AreEqual (10, p.MaxPageStateFieldLength, "MaxPageStateFieldLength#2");
  852. }
  853. [Test]
  854. public void PageAdapter ()
  855. {
  856. Page p = new Page ();
  857. Assert.AreEqual (null, p.PageAdapter, "PageAdapter");
  858. }
  859. [Test]
  860. public void PreviousPage ()
  861. {
  862. // NUnit.Framework limitation for server.transfer
  863. }
  864. [Test]
  865. [Category ("NotWorking")]
  866. public void RegisterRequiresViewStateEncryption ()
  867. {
  868. Page p = new Page ();
  869. p.ViewStateEncryptionMode = ViewStateEncryptionMode.Always;
  870. p.RegisterRequiresViewStateEncryption ();
  871. // No changes after the Encryption
  872. }
  873. [Test]
  874. public void Theme ()
  875. {
  876. Page p = new Page ();
  877. Assert.AreEqual (null, p.Theme, "Theme#1");
  878. p.Theme = "Theme.skin";
  879. Assert.AreEqual ("Theme.skin",p.Theme, "Theme#2");
  880. }
  881. [Test]
  882. [Category ("NotWorking")]
  883. public void UniqueFilePathSuffix ()
  884. {
  885. TestPage p = new TestPage ();
  886. if (!p.UniqueFilePathSuffix.StartsWith ("__ufps=")) {
  887. Assert.Fail ("UniqueFilePathSuffix");
  888. }
  889. }
  890. [Test]
  891. [Category ("NotWorking")]
  892. public void ViewStateEncryptionModeTest ()
  893. {
  894. Page p = new Page ();
  895. Assert.AreEqual (ViewStateEncryptionMode.Auto, p.ViewStateEncryptionMode, "ViewStateEncryptionMode#1");
  896. p.ViewStateEncryptionMode = ViewStateEncryptionMode.Never;
  897. Assert.AreEqual (ViewStateEncryptionMode.Never, p.ViewStateEncryptionMode, "ViewStateEncryptionMode#2");
  898. }
  899. [Test]
  900. [ExpectedException (typeof (InvalidOperationException))]
  901. public void GetDataItem_Exception ()
  902. {
  903. Page p = new Page ();
  904. p.GetDataItem ();
  905. }
  906. #region help_classes
  907. class Customresult : IAsyncResult
  908. {
  909. #region IAsyncResult Members
  910. public object AsyncState
  911. {
  912. get { throw new Exception ("The method or operation is not implemented."); }
  913. }
  914. public WaitHandle AsyncWaitHandle
  915. {
  916. get { throw new Exception ("The method or operation is not implemented."); }
  917. }
  918. public bool CompletedSynchronously
  919. {
  920. get { return true; }
  921. }
  922. public bool IsCompleted
  923. {
  924. get { throw new Exception ("The method or operation is not implemented."); }
  925. }
  926. #endregion
  927. }
  928. #endregion
  929. #endif
  930. [TestFixtureTearDown]
  931. public void TearDown ()
  932. {
  933. WebTest.Unload ();
  934. }
  935. }
  936. }