* System.Web_test.dll.sources: added FakeMembershipProvider.cs for NunitWeb framework
[mono.git] / mcs / class / System.Web / Test / System.Web.Configuration / CustomErrorCollectionTest.cs
1 //
2 // CustomErrorCollectionTest.cs 
3 //      - unit tests for System.Web.Configuration.CustomErrorCollection
4 //
5 // Author:
6 //      Chris Toshok  <toshok@ximian.com>
7 //
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
17 // 
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 // 
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //
29
30 #if NET_2_0
31
32 using NUnit.Framework;
33
34 using System;
35 using System.Configuration;
36 using System.Web.Configuration;
37 using System.Web;
38 using System.Web.Security;
39
40 namespace MonoTests.System.Web.Configuration {
41
42         [TestFixture]
43         public class CustomErrorCollectionTest
44         {
45                 [Test]
46                 public void GetKey ()
47                 {
48                         CustomErrorCollection col = new CustomErrorCollection ();
49
50                         col.Add (new CustomError (404, "http://404-error.com/"));
51
52                         Assert.AreEqual ("404", col.GetKey (0), "A1");
53                 }
54
55                 [Test]
56                 [ExpectedException (typeof (ConfigurationErrorsException))]
57                 public void GetKey_OutOfRange ()
58                 {
59                         CustomErrorCollection col = new CustomErrorCollection ();
60                         Assert.IsNull (col.GetKey(0), "A1");
61                 }
62
63                 [Test]
64                 public void Set ()
65                 {
66                         CustomErrorCollection col = new CustomErrorCollection ();
67
68                         col.Add (new CustomError (404, "http://404-error.com/"));
69                         col.Add (new CustomError (403, "http://403-error.com/"));
70                         col.Add (new CustomError (999, "http://403-error.com/"));
71
72                         col.Set (new CustomError (403, "http://403-error2.com/"));
73
74                         Assert.AreEqual (3, col.Count, "A1");
75                         Assert.AreEqual (3, col.AllKeys.Length, "A2");
76
77                         Assert.AreEqual ("http://403-error2.com/", col[1].Redirect, "A3");
78                 }
79
80                 [Test]
81                 public void SetToDuplicate ()
82                 {
83                         CustomErrorCollection col = new CustomErrorCollection ();
84
85                         col.Add (new CustomError (404, "http://404-error.com/"));
86                         col.Add (new CustomError (403, "http://403-error.com/"));
87                         col.Add (new CustomError (999, "http://403-error.com/"));
88
89                         /* override the 999 entry with a duplicate 403 */
90                         col[2] = new CustomError (403, "http://403-error2.com/");
91
92                         Assert.AreEqual (3, col.Count, "A1");
93                         Assert.AreEqual (3, col.AllKeys.Length, "A2");
94
95                         Assert.AreEqual (403, col[1].StatusCode, "A3");
96                         Assert.AreEqual ("http://403-error.com/", col[1].Redirect, "A4");
97                         Assert.AreEqual (403, col[2].StatusCode, "A5");
98                         Assert.AreEqual ("http://403-error2.com/", col[2].Redirect, "A6");
99                 }
100
101                 [Test]
102                 public void DuplicateKeyInAdd ()
103                 {
104                         CustomErrorCollection col = new CustomErrorCollection ();
105
106                         col.Add (new CustomError (404, "http://404-error.com/"));
107                         col.Add (new CustomError (404, "http://403-error.com/"));
108
109                         Assert.AreEqual (1, col.Count, "A1");
110                         Assert.AreEqual (1, col.AllKeys.Length, "A2");
111
112                         Assert.AreEqual ("http://403-error.com/", col[0].Redirect, "A3");
113                 }
114
115                 [Test]
116                 public void AllKeys ()
117                 {
118                         CustomErrorCollection col = new CustomErrorCollection ();
119
120                         col.Add (new CustomError (404, "http://404-error.com/"));
121                         col.Add (new CustomError (403, "http://403-error.com/"));
122                         col.Add (new CustomError (999, "http://403-error.com/"));
123
124                         Assert.AreEqual (3, col.AllKeys.Length, "A1");
125                         Assert.AreEqual ("404", col.AllKeys[0], "A2");
126                         Assert.AreEqual ("403", col.AllKeys[1], "A3");
127                         Assert.AreEqual ("999", col.AllKeys[2], "A4");
128                 }
129         }
130 }
131
132 #endif