* System.Web_test.dll.sources: added FakeMembershipProvider.cs for NunitWeb framework
[mono.git] / mcs / class / System.Web / Test / System.Web.Configuration / WebConfigurationManagerTest.cs
1 //
2 // WebConfigurationManagerTest.cs 
3 //      - unit tests for System.Web.Configuration.WebConfigurationManager
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 _Configuration = System.Configuration.Configuration;
37 using System.IO;
38 using System.Web.Configuration;
39 using System.Web;
40 using System.Web.Security;
41
42 namespace MonoTests.System.Web.Configuration {
43
44         [TestFixture]
45         public class WebConfigurationManagerTest  {
46
47                 [Test]
48                 public void OpenMachineConfiguration_1 ()
49                 {
50                         _Configuration c1 = WebConfigurationManager.OpenMachineConfiguration ();
51                         _Configuration c2 = ConfigurationManager.OpenMachineConfiguration ();
52
53                         Assert.AreEqual (c1.FilePath, c2.FilePath, "A1");
54                 }
55
56                 [Test]
57                 public void OpenMachineConfiguration_2 ()
58                 {
59                         _Configuration c1 = WebConfigurationManager.OpenMachineConfiguration ("configTest");
60                         _Configuration c2 = ConfigurationManager.OpenMachineConfiguration ();
61
62                         Assert.AreEqual (c1.FilePath, c2.FilePath, "A1");
63                 }
64
65                 [Test]
66                 public void OpenMachineConfiguration_serverNull ()
67                 {
68                         _Configuration c1 = WebConfigurationManager.OpenMachineConfiguration ("configTest", null);
69                         _Configuration c2 = ConfigurationManager.OpenMachineConfiguration ();
70
71                         Assert.AreEqual (c1.FilePath, c2.FilePath, "A1");
72                 }
73
74                 [Test]
75                 public void OpenWebConfiguration_null ()
76                 {
77                         _Configuration web = WebConfigurationManager.OpenWebConfiguration (null);
78                         _Configuration machine = ConfigurationManager.OpenMachineConfiguration ();
79
80                         Assert.AreEqual ("web.config", Path.GetFileName (web.FilePath), "A1");
81                         Assert.AreEqual (Path.GetDirectoryName (web.FilePath), Path.GetDirectoryName (machine.FilePath), "A2");
82                 }
83
84                 [Test]
85                 public void OpenWebConfiguration_empty ()
86                 {
87                         _Configuration web1 = WebConfigurationManager.OpenWebConfiguration (null);
88                         _Configuration web2 = WebConfigurationManager.OpenWebConfiguration ("");
89                         _Configuration machine = ConfigurationManager.OpenMachineConfiguration ();
90
91                         Assert.AreEqual (web1.FilePath, web2.FilePath, "A1");
92                         Assert.AreEqual (Path.GetDirectoryName (web2.FilePath), Path.GetDirectoryName (machine.FilePath), "A2");
93                 }
94
95                 [Test]
96                 public void OpenWebConfiguration_siteNull ()
97                 {
98                         _Configuration web = WebConfigurationManager.OpenWebConfiguration ("", null);
99                         _Configuration machine = ConfigurationManager.OpenMachineConfiguration ();
100
101                         Assert.AreEqual ("web.config", Path.GetFileName (web.FilePath), "A1");
102                         Assert.AreEqual (Path.GetDirectoryName (web.FilePath), Path.GetDirectoryName (machine.FilePath), "A2");
103                 }
104
105                 [Test]
106                 [ExpectedException (typeof (ConfigurationErrorsException))]
107                 public void OpenWebConfiguration_siteNull2_absolutePath ()
108                 {
109                         WebConfigurationManager.OpenWebConfiguration ("", null, "/clientTest");
110                 }
111
112                 [Test]
113                 public void OpenWebConfiguration_siteNull2 ()
114                 {
115                         _Configuration web = WebConfigurationManager.OpenWebConfiguration ("", null, "clientTest");
116                         _Configuration machine = ConfigurationManager.OpenMachineConfiguration ();
117
118                         Assert.AreEqual ("web.config", Path.GetFileName (web.FilePath), "A1");
119                         Assert.AreEqual (Path.GetDirectoryName (web.FilePath), Path.GetDirectoryName (machine.FilePath), "A2");
120                 }
121
122                 [Test]
123                 public void GetWebApplicationSection_1 ()
124                 {
125                         Assert.IsNotNull (WebConfigurationManager.GetWebApplicationSection ("system.web/clientTarget"), "A1");
126                 }
127
128                 [Test]
129                 public void GetSection_1 ()
130                 {
131                         object sect1 = WebConfigurationManager.GetSection ("system.web/clientTarget");
132                         object sect2 = WebConfigurationManager.GetSection ("system.web/clientTarget");
133                         Assert.AreEqual (sect1, sect2, "A1");
134
135                         sect1 = WebConfigurationManager.GetSection ("foo");
136                         Assert.IsNull (sect1);
137
138                         sect1 = WebConfigurationManager.GetSection ("appSettings");
139                         Assert.IsNotNull (sect1, "A2");
140
141                         sect1 = WebConfigurationManager.GetSection ("connectionStrings");
142                         Assert.IsNotNull (sect1, "A3");
143                 }
144
145                 [Test]
146                 [ExpectedException (typeof (InvalidOperationException))]
147                 // InvalidOperationException (WebConfigurationManager.GetSection(sectionName,path) can only be called from within a web application.)
148                 // thrown from WebConfigurationManager.GetSection
149                 public void GetSection_2 ()
150                 {
151                         object sect1 = WebConfigurationManager.GetSection ("system.web/clientTarget", "/clientTest");
152                         Assert.IsNull (sect1, "A1");
153                 }
154
155                 [Test]
156                 public void OpenMappedMachineConfiguration ()
157                 {
158                         ConfigurationFileMap map = new ConfigurationFileMap ();
159
160                         _Configuration c1 = WebConfigurationManager.OpenMappedMachineConfiguration (map, "clientTest");
161                         _Configuration c2 = ConfigurationManager.OpenMappedMachineConfiguration (map);
162
163                         Assert.AreEqual (c1.FilePath, c2.FilePath, "A1");
164                 }
165
166                 [Test]
167                 [ExpectedException (typeof (ConfigurationErrorsException))]
168                 // same stack trace for OpenWebConfiguration_siteNull2_absolutePath.
169                 public void OpenMappedMachineConfiguration_absolute ()
170                 {
171                         ConfigurationFileMap map = new ConfigurationFileMap ();
172
173                         WebConfigurationManager.OpenMappedMachineConfiguration (map, "/clientTest");
174                 }
175
176                 [Test]
177                 public void StaticProps ()
178                 {
179                         Assert.IsNotNull (WebConfigurationManager.AppSettings, "A1");
180                         Assert.IsNotNull (WebConfigurationManager.ConnectionStrings, "A2");
181                 }
182         }
183 }
184
185 #endif