2 // System.Configuration.ConfigurationManagerTest.cs - Unit tests
3 // for System.Configuration.ConfigurationManager.
6 // Chris Toshok <toshok@ximian.com>
7 // Atsushi Enomoto <atsushi@ximian.com>
9 // Copyright (C) 2005-2006 Novell, Inc (http://www.novell.com)
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:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
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.
34 using System.Collections.Specialized;
35 using System.Configuration;
36 using System.Net.Configuration;
38 using NUnit.Framework;
39 using SysConfig = System.Configuration.Configuration;
40 using System.Runtime.InteropServices;
42 namespace MonoTests.System.Configuration {
44 public class ConfigurationManagerTest
47 public void UserLevelNone ()
49 SysConfig config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
51 Console.WriteLine("application config path: {0}", config.FilePath);
52 FileInfo fi = new FileInfo (config.FilePath);
54 Assert.AreEqual("System.Configuration.Test20.jar.config", fi.Name);
56 Assert.AreEqual ("System.Configuration_test_net_2_0.dll.config", fi.Name);
61 [Category("NotWorking")]
62 public void UserLevelPerRoaming ()
64 SysConfig config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming);
65 Console.WriteLine("roaming user config path: {0}", config.FilePath);
67 FileInfo fi = new FileInfo (config.FilePath);
68 Assert.AreEqual ("user.config", fi.Name);
72 [Category ("NotWorking")]
73 public void UserLevelPerRoamingAndLocal ()
75 SysConfig config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
76 Console.WriteLine("local user config path: {0}", config.FilePath);
78 FileInfo fi = new FileInfo (config.FilePath);
79 Assert.AreEqual ("user.config", fi.Name);
83 public void exePath_UserLevelNone_absolute ()
86 string path = String.Format ("{0}hi{1}there.exe", Path.DirectorySeparatorChar, Path.DirectorySeparatorChar);
87 SysConfig config = ConfigurationManager.OpenExeConfiguration(path);
88 Assert.AreEqual ("", config.FilePath);
93 public void exePath_UserLevelNone ()
96 SysConfig config = ConfigurationManager.OpenExeConfiguration("System.Configuration_test_net_2_0.dll.mdb");
97 Assert.AreEqual ("", config.FilePath);
102 public void exePath_UserLevelPerRoaming ()
105 SysConfig config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming, "System.Configuration_test_net_2_0.dll.mdb");
106 Assert.AreEqual ("", config.FilePath);
111 public void exePath_UserLevelPerRoamingAndLocal ()
114 SysConfig config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal, "System.Configuration_test_net_2_0.dll.mdb");
115 Assert.AreEqual ("", config.FilePath);
120 public void mapped_UserLevelNone ()
122 ExeConfigurationFileMap map = new ExeConfigurationFileMap ();
123 map.ExeConfigFilename = "execonfig";
125 SysConfig config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
126 Console.WriteLine("mapped application config path: {0}", config.FilePath);
128 FileInfo fi = new FileInfo (config.FilePath);
129 Assert.AreEqual ("execonfig", fi.Name);
134 [Category ("NotWorking")]
135 public void mapped_UserLevelPerRoaming ()
137 ExeConfigurationFileMap map = new ExeConfigurationFileMap ();
138 map.ExeConfigFilename = "execonfig";
139 map.RoamingUserConfigFilename = "roaminguser";
141 SysConfig config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.PerUserRoaming);
142 Console.WriteLine("mapped roaming user config path: {0}", config.FilePath);
144 FileInfo fi = new FileInfo (config.FilePath);
145 Assert.AreEqual ("roaminguser", fi.Name);
149 [ExpectedException (typeof (ArgumentException))]
150 public void mapped_UserLevelPerRoaming_no_execonfig ()
152 ExeConfigurationFileMap map = new ExeConfigurationFileMap ();
153 map.RoamingUserConfigFilename = "roaminguser";
155 SysConfig config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.PerUserRoaming);
156 Console.WriteLine("mapped roaming user config path: {0}", config.FilePath);
158 FileInfo fi = new FileInfo (config.FilePath);
159 Assert.AreEqual ("roaminguser", fi.Name);
163 [Category ("NotWorking")]
164 public void mapped_UserLevelPerRoamingAndLocal ()
166 ExeConfigurationFileMap map = new ExeConfigurationFileMap ();
167 map.ExeConfigFilename = "execonfig";
168 map.RoamingUserConfigFilename = "roaminguser";
169 map.LocalUserConfigFilename = "localuser";
171 SysConfig config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.PerUserRoamingAndLocal);
172 Console.WriteLine("mapped local user config path: {0}", config.FilePath);
174 FileInfo fi = new FileInfo (config.FilePath);
175 Assert.AreEqual ("localuser", fi.Name);
179 [ExpectedException (typeof (ArgumentException))]
180 public void mapped_UserLevelPerRoamingAndLocal_no_execonfig ()
182 ExeConfigurationFileMap map = new ExeConfigurationFileMap ();
183 map.RoamingUserConfigFilename = "roaminguser";
184 map.LocalUserConfigFilename = "localuser";
186 SysConfig config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.PerUserRoamingAndLocal);
187 Console.WriteLine("mapped local user config path: {0}", config.FilePath);
189 FileInfo fi = new FileInfo (config.FilePath);
190 Assert.AreEqual ("localuser", fi.Name);
194 [ExpectedException (typeof (ArgumentException))]
\r
195 [Category ("NotWorking")]
196 public void mapped_UserLevelPerRoamingAndLocal_no_roaminguser ()
198 ExeConfigurationFileMap map = new ExeConfigurationFileMap ();
199 map.ExeConfigFilename = "execonfig";
200 map.LocalUserConfigFilename = "localuser";
202 SysConfig config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.PerUserRoamingAndLocal);
203 Console.WriteLine("mapped local user config path: {0}", config.FilePath);
205 FileInfo fi = new FileInfo (config.FilePath);
206 Assert.AreEqual ("localuser", fi.Name);
210 public void MachineConfig ()
212 SysConfig config = ConfigurationManager.OpenMachineConfiguration ();
213 Console.WriteLine("machine config path: {0}", config.FilePath);
215 FileInfo fi = new FileInfo (config.FilePath);
216 Assert.AreEqual ("machine.config", fi.Name);
220 public void mapped_MachineConfig ()
222 ConfigurationFileMap map = new ConfigurationFileMap ();
223 map.MachineConfigFilename = "machineconfig";
225 SysConfig config = ConfigurationManager.OpenMappedMachineConfiguration (map);
226 Console.WriteLine("mapped machine config path: {0}", config.FilePath);
228 FileInfo fi = new FileInfo (config.FilePath);
229 Assert.AreEqual ("machineconfig", fi.Name);
233 public void exePath_UserLevelNone_null ()
235 SysConfig config = ConfigurationManager.OpenExeConfiguration (null);
237 Console.WriteLine("null exe application config path: {0}", config.FilePath);
239 FileInfo fi = new FileInfo (config.FilePath);
240 Assert.AreEqual ("System.Configuration_test_net_2_0.dll.config", fi.Name);
245 [Category ("NotWorking")]
246 public void mapped_ExeConfiguration_null ()
248 SysConfig config = ConfigurationManager.OpenMappedExeConfiguration(null, ConfigurationUserLevel.None);
249 Console.WriteLine("null mapped application config path: {0}", config.FilePath);
251 FileInfo fi = new FileInfo (config.FilePath);
253 Assert.AreEqual("System.Configuration.Test20.jar.config", fi.Name);
255 Assert.AreEqual ("System.Configuration_test_net_2_0.dll.config", fi.Name);
260 [Category ("NotWorking")]
261 public void mapped_MachineConfig_null ()
263 SysConfig config = ConfigurationManager.OpenMappedMachineConfiguration (null);
264 Console.WriteLine("null mapped machine config path: {0}", config.FilePath);
266 FileInfo fi = new FileInfo (config.FilePath);
267 Assert.AreEqual ("machine.config", fi.Name);
271 public void GetSectionReturnsNativeObject ()
273 Assert.IsTrue (ConfigurationManager.GetSection ("appSettings") is NameValueCollection);
276 [Test] // test for bug #78372.
\r
277 [Category ("NotWorking")]
278 public void OpenMachineConfiguration ()
280 SysConfig cfg = ConfigurationManager.OpenMachineConfiguration ();
281 Assert.IsTrue (cfg.Sections.Count > 0, "#1");
283 ConfigurationSection s = cfg.Sections ["system.net/connectionManagement"];
284 Assert.IsNotNull (s, "#2");
285 Assert.IsTrue (s is ConnectionManagementSection, "#3");