**** Merged from MCS ****
[mono-project.git] / mcs / class / corlib / Test / System.Security.Permissions / RegistryPermissionAttributeTest.cs
blob3860ac003a6198ca34121a3b7dfc9937a312a113
1 //
2 // RegistryPermissionAttributeTest.cs -
3 // NUnit Test Cases for RegistryPermissionAttribute
4 //
5 // Author:
6 // Sebastien Pouliot <sebastien@ximian.com>
7 //
8 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
9 // Copyright (C) 2004 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:
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.
31 using NUnit.Framework;
32 using System;
33 using System.Security;
34 using System.Security.Permissions;
36 namespace MonoTests.System.Security.Permissions {
38 [TestFixture]
39 public class RegistryPermissionAttributeTest {
41 [Test]
42 public void Default ()
44 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
45 Assert.IsNull (a.Create, "Create");
46 Assert.IsNull (a.Read, "Read");
47 Assert.IsNull (a.Write, "Write");
48 #if NET_2_0
49 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
50 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
51 #endif
52 Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
53 Assert.IsFalse (a.Unrestricted, "Unrestricted");
55 RegistryPermission perm = (RegistryPermission) a.CreatePermission ();
56 #if NET_2_0
57 Assert.AreEqual (String.Empty, perm.GetPathList (RegistryPermissionAccess.Create), "Create");
58 Assert.AreEqual (String.Empty, perm.GetPathList (RegistryPermissionAccess.Read), "Read");
59 Assert.AreEqual (String.Empty, perm.GetPathList (RegistryPermissionAccess.Write), "Write");
60 #else
61 Assert.IsNull (perm.GetPathList (RegistryPermissionAccess.Create), "Create");
62 Assert.IsNull (perm.GetPathList (RegistryPermissionAccess.Read), "Read");
63 Assert.IsNull (perm.GetPathList (RegistryPermissionAccess.Write), "Write");
64 #endif
67 [Test]
68 public void Action ()
70 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
71 Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
72 a.Action = SecurityAction.Demand;
73 Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
74 a.Action = SecurityAction.Deny;
75 Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
76 a.Action = SecurityAction.InheritanceDemand;
77 Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
78 a.Action = SecurityAction.LinkDemand;
79 Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
80 a.Action = SecurityAction.PermitOnly;
81 Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
82 a.Action = SecurityAction.RequestMinimum;
83 Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
84 a.Action = SecurityAction.RequestOptional;
85 Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
86 a.Action = SecurityAction.RequestRefuse;
87 Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
88 #if NET_2_0
89 a.Action = SecurityAction.DemandChoice;
90 Assert.AreEqual (SecurityAction.DemandChoice, a.Action, "Action=DemandChoice");
91 a.Action = SecurityAction.InheritanceDemandChoice;
92 Assert.AreEqual (SecurityAction.InheritanceDemandChoice, a.Action, "Action=InheritanceDemandChoice");
93 a.Action = SecurityAction.LinkDemandChoice;
94 Assert.AreEqual (SecurityAction.LinkDemandChoice, a.Action, "Action=LinkDemandChoice");
95 #endif
98 [Test]
99 public void Action_Invalid ()
101 RegistryPermissionAttribute a = new RegistryPermissionAttribute ((SecurityAction)Int32.MinValue);
102 // no validation in attribute
105 [Test]
106 public void All_Set ()
108 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
109 a.All = "mono";
110 Assert.AreEqual ("mono", a.Create, "Create");
111 Assert.AreEqual ("mono", a.Read, "Read");
112 Assert.AreEqual ("mono", a.Write, "Write");
113 #if NET_2_0
114 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
115 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
116 #endif
118 a.All = null;
119 Assert.IsNull (a.Create, "Create");
120 Assert.IsNull (a.Read, "Read");
121 Assert.IsNull (a.Write, "Write");
122 #if NET_2_0
123 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
124 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
125 #endif
128 [Test]
129 [ExpectedException (typeof (NotSupportedException))]
130 public void All_Get ()
132 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
133 a.All = "mono";
134 Assert.AreEqual ("All", "mono", a.All);
137 [Test]
138 public void Create ()
140 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
141 a.Create = "mono";
142 Assert.AreEqual ("mono", a.Create, "Create");
143 Assert.IsNull (a.Read, "Read");
144 Assert.IsNull (a.Write, "Write");
145 #if NET_2_0
146 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
147 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
148 #endif
150 a.Create = null;
151 Assert.IsNull (a.Create, "Create");
152 Assert.IsNull (a.Read, "Read");
153 Assert.IsNull (a.Write, "Write");
154 #if NET_2_0
155 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
156 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
157 #endif
160 [Test]
161 public void Read ()
163 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
164 a.Read = "mono";
165 Assert.IsNull (a.Create, "Create");
166 Assert.AreEqual ("mono", a.Read, "Read");
167 Assert.IsNull (a.Write, "Write");
168 #if NET_2_0
169 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
170 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
171 #endif
173 a.Read = null;
174 Assert.IsNull (a.Create, "Create");
175 Assert.IsNull (a.Read, "Read");
176 Assert.IsNull (a.Write, "Write");
177 #if NET_2_0
178 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
179 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
180 #endif
183 #if NET_2_0
184 [Test]
185 public void ChangeAccessControl ()
187 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
188 a.ChangeAccessControl = "mono";
189 Assert.IsNull (a.Create, "Create");
190 Assert.IsNull (a.Read, "Read");
191 Assert.IsNull (a.Write, "Write");
192 Assert.AreEqual ("mono", a.ChangeAccessControl, "ChangeAccessControl");
193 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
195 a.ChangeAccessControl = null;
196 Assert.IsNull (a.Create, "Create");
197 Assert.IsNull (a.Read, "Read");
198 Assert.IsNull (a.Write, "Write");
199 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
200 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
203 [Test]
204 public void ViewAccessControl ()
206 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
207 a.ViewAccessControl = "mono";
208 Assert.IsNull (a.Create, "Create");
209 Assert.IsNull (a.Read, "Read");
210 Assert.IsNull (a.Write, "Write");
211 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
212 Assert.AreEqual ("mono", a.ViewAccessControl, "ViewAccessControl");
214 a.ViewAccessControl = null;
215 Assert.IsNull (a.Create, "Create");
216 Assert.IsNull (a.Read, "Read");
217 Assert.IsNull (a.Write, "Write");
218 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
219 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
222 [Test]
223 public void ViewAndModify_Set ()
225 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
226 a.ViewAndModify = "mono";
227 Assert.AreEqual ("mono", a.Create, "Create");
228 Assert.AreEqual ("mono", a.Read, "Read");
229 Assert.AreEqual ("mono", a.Write, "Write");
230 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
231 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
233 a.ViewAndModify = null;
234 Assert.IsNull (a.Create, "Create");
235 Assert.IsNull (a.Read, "Read");
236 Assert.IsNull (a.Write, "Write");
237 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
238 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
241 [Test]
242 [ExpectedException (typeof (NotSupportedException))]
243 public void ViewAndModify_Get ()
245 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
246 a.ViewAndModify = "mono";
247 Assert.AreEqual ("ViewAndModify", "mono", a.ViewAndModify);
249 #endif
251 [Test]
252 public void Write ()
254 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
255 a.Write = "mono";
256 Assert.IsNull (a.Create, "Create");
257 Assert.IsNull (a.Read, "Read");
258 Assert.AreEqual ("mono", a.Write, "Write");
259 #if NET_2_0
260 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
261 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
262 #endif
264 a.Write = null;
265 Assert.IsNull (a.Create, "Create");
266 Assert.IsNull (a.Read, "Read");
267 Assert.IsNull (a.Write, "Write");
268 #if NET_2_0
269 Assert.IsNull (a.ChangeAccessControl, "ChangeAccessControl");
270 Assert.IsNull (a.ViewAccessControl, "ViewAccessControl");
271 #endif
274 [Test]
275 public void Unrestricted ()
277 RegistryPermissionAttribute a = new RegistryPermissionAttribute (SecurityAction.Assert);
278 a.Unrestricted = true;
280 RegistryPermission perm = (RegistryPermission) a.CreatePermission ();
281 Assert.IsTrue (perm.IsUnrestricted (), "CreatePermission.IsUnrestricted");
284 [Test]
285 public void Attributes ()
287 Type t = typeof (RegistryPermissionAttribute);
288 Assert.IsTrue (t.IsSerializable, "IsSerializable");
290 object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
291 Assert.AreEqual (1, attrs.Length, "AttributeUsage");
292 AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
293 Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
294 Assert.IsFalse (aua.Inherited, "Inherited");
295 AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method);
296 Assert.AreEqual (at, aua.ValidOn, "ValidOn");