2 // SecurityPermissionAttributeTest.cs -
3 // NUnit Test Cases for SecurityPermissionAttribute
6 // Sebastien Pouliot <sebastien@ximian.com>
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:
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.
31 using NUnit.Framework;
33 using System.Security;
34 using System.Security.Permissions;
36 namespace MonoTests.System.Security.Permissions {
39 public class SecurityPermissionAttributeTest {
42 public void Default ()
44 SecurityPermissionAttribute a = new SecurityPermissionAttribute (SecurityAction.Assert);
45 Assert.IsFalse (a.Assertion, "Assertion");
47 Assert.IsFalse (a.BindingRedirects, "BindingRedirects");
49 Assert.IsFalse (a.ControlAppDomain, "ControlAppDomain");
50 Assert.IsFalse (a.ControlDomainPolicy, "ControlDomainPolicy");
51 Assert.IsFalse (a.ControlEvidence, "ControlEvidence");
52 Assert.IsFalse (a.ControlPolicy, "ControlPolicy");
53 Assert.IsFalse (a.ControlPrincipal, "ControlPrincipal");
54 Assert.IsFalse (a.ControlThread, "ControlThread");
55 Assert.IsFalse (a.Execution, "Execution");
56 Assert.IsFalse (a.Infrastructure, "Infrastructure");
57 Assert.IsFalse (a.RemotingConfiguration, "RemotingConfiguration");
58 Assert.IsFalse (a.SerializationFormatter, "SerializationFormatter");
59 Assert.IsFalse (a.SkipVerification, "SkipVerification");
60 Assert.IsFalse (a.UnmanagedCode, "UnmanagedCode");
62 Assert.AreEqual (SecurityPermissionFlag.NoFlags, a.Flags, "Flags");
63 Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
64 Assert.IsFalse (a.Unrestricted, "Unrestricted");
66 SecurityPermission perm = (SecurityPermission) a.CreatePermission ();
67 Assert.AreEqual (SecurityPermissionFlag.NoFlags, perm.Flags, "CreatePermission.Flags");
73 SecurityPermissionAttribute a = new SecurityPermissionAttribute (SecurityAction.Assert);
74 Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
75 a.Action = SecurityAction.Demand;
76 Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
77 a.Action = SecurityAction.Deny;
78 Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
79 a.Action = SecurityAction.InheritanceDemand;
80 Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
81 a.Action = SecurityAction.LinkDemand;
82 Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
83 a.Action = SecurityAction.PermitOnly;
84 Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
85 a.Action = SecurityAction.RequestMinimum;
86 Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
87 a.Action = SecurityAction.RequestOptional;
88 Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
89 a.Action = SecurityAction.RequestRefuse;
90 Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
92 a.Action = SecurityAction.DemandChoice;
93 Assert.AreEqual (SecurityAction.DemandChoice, a.Action, "Action=DemandChoice");
94 a.Action = SecurityAction.InheritanceDemandChoice;
95 Assert.AreEqual (SecurityAction.InheritanceDemandChoice, a.Action, "Action=InheritanceDemandChoice");
96 a.Action = SecurityAction.LinkDemandChoice;
97 Assert.AreEqual (SecurityAction.LinkDemandChoice, a.Action, "Action=LinkDemandChoice");
102 public void Action_Invalid ()
104 SecurityPermissionAttribute a = new SecurityPermissionAttribute ((SecurityAction)Int32.MinValue);
105 // no validation in attribute
108 private SecurityPermissionAttribute Empty ()
110 SecurityPermissionAttribute a = new SecurityPermissionAttribute (SecurityAction.Assert);
113 a.BindingRedirects = false;
115 a.ControlAppDomain = false;
116 a.ControlDomainPolicy = false;
117 a.ControlEvidence = false;
118 a.ControlPolicy = false;
119 a.ControlPrincipal = false;
120 a.ControlThread = false;
122 a.Infrastructure = false;
123 a.RemotingConfiguration = false;
124 a.SerializationFormatter = false;
125 a.SkipVerification = false;
126 a.UnmanagedCode = false;
127 Assert.AreEqual (SecurityPermissionFlag.NoFlags, a.Flags, "Flags");
132 public void Assertion ()
134 SecurityPermissionAttribute a = Empty ();
136 Assert.AreEqual (SecurityPermissionFlag.Assertion, a.Flags, "Flags=Assertion");
140 public void BindingRedirects ()
142 SecurityPermissionAttribute a = Empty ();
143 a.BindingRedirects = true;
144 Assert.AreEqual (SecurityPermissionFlag.BindingRedirects, a.Flags, "Flags=BindingRedirects");
148 public void ControlAppDomain ()
150 SecurityPermissionAttribute a = Empty ();
151 a.ControlAppDomain = true;
152 Assert.AreEqual (SecurityPermissionFlag.ControlAppDomain, a.Flags, "Flags=ControlAppDomain");
156 public void ControlDomainPolicy ()
158 SecurityPermissionAttribute a = Empty ();
159 a.ControlDomainPolicy = true;
160 Assert.AreEqual (SecurityPermissionFlag.ControlDomainPolicy, a.Flags, "Flags=ControlDomainPolicy");
164 public void ControlEvidence ()
166 SecurityPermissionAttribute a = Empty ();
167 a.ControlEvidence = true;
168 Assert.AreEqual (SecurityPermissionFlag.ControlEvidence, a.Flags, "Flags=ControlEvidence");
172 public void ControlPolicy ()
174 SecurityPermissionAttribute a = Empty ();
175 a.ControlPolicy = true;
176 Assert.AreEqual (SecurityPermissionFlag.ControlPolicy, a.Flags, "Flags=ControlPolicy");
180 public void ControlPrincipal ()
182 SecurityPermissionAttribute a = Empty ();
183 a.ControlPrincipal = true;
184 Assert.AreEqual (SecurityPermissionFlag.ControlPrincipal, a.Flags, "Flags=ControlPrincipal");
188 public void ControlThread ()
190 SecurityPermissionAttribute a = Empty ();
191 a.ControlThread = true;
192 Assert.AreEqual (SecurityPermissionFlag.ControlThread, a.Flags, "Flags=ControlThread");
196 public void Execution ()
198 SecurityPermissionAttribute a = Empty ();
200 Assert.AreEqual (SecurityPermissionFlag.Execution, a.Flags, "Flags=Execution");
204 public void Infrastructure ()
206 SecurityPermissionAttribute a = Empty ();
207 a.Infrastructure = true;
208 Assert.AreEqual (SecurityPermissionFlag.Infrastructure, a.Flags, "Flags=Infrastructure");
212 public void RemotingConfiguration ()
214 SecurityPermissionAttribute a = Empty ();
215 a.RemotingConfiguration = true;
216 Assert.AreEqual (SecurityPermissionFlag.RemotingConfiguration, a.Flags, "Flags=RemotingConfiguration");
220 public void SerializationFormatter ()
222 SecurityPermissionAttribute a = Empty ();
223 a.SerializationFormatter = true;
224 Assert.AreEqual (SecurityPermissionFlag.SerializationFormatter, a.Flags, "Flags=SerializationFormatter");
228 public void SkipVerification ()
230 SecurityPermissionAttribute a = Empty ();
231 a.SkipVerification = true;
232 Assert.AreEqual (SecurityPermissionFlag.SkipVerification, a.Flags, "Flags=SkipVerification");
236 public void UnmanagedCode ()
238 SecurityPermissionAttribute a = Empty ();
239 a.UnmanagedCode = true;
240 Assert.AreEqual (SecurityPermissionFlag.UnmanagedCode, a.Flags, "Flags=UnmanagedCode");
244 public void Unrestricted ()
246 SecurityPermissionAttribute a = new SecurityPermissionAttribute (SecurityAction.Assert);
247 a.Unrestricted = true;
248 Assert.AreEqual (SecurityPermissionFlag.NoFlags, a.Flags, "Unrestricted");
250 SecurityPermission perm = (SecurityPermission) a.CreatePermission ();
251 Assert.AreEqual (SecurityPermissionFlag.AllFlags, perm.Flags, "CreatePermission.Flags");
257 SecurityPermissionAttribute a = new SecurityPermissionAttribute (SecurityAction.Assert);
258 a.Flags = SecurityPermissionFlag.Assertion;
259 Assert.IsTrue (a.Assertion, "Assertion");
261 a.Flags |= SecurityPermissionFlag.BindingRedirects;
262 Assert.IsTrue (a.BindingRedirects, "BindingRedirects");
264 a.Flags |= SecurityPermissionFlag.ControlAppDomain;
265 Assert.IsTrue (a.ControlAppDomain, "ControlAppDomain");
266 a.Flags |= SecurityPermissionFlag.ControlDomainPolicy;
267 Assert.IsTrue (a.ControlDomainPolicy, "ControlDomainPolicy");
268 a.Flags |= SecurityPermissionFlag.ControlEvidence;
269 Assert.IsTrue (a.ControlEvidence, "ControlEvidence");
270 a.Flags |= SecurityPermissionFlag.ControlPolicy;
271 Assert.IsTrue (a.ControlPolicy, "ControlPolicy");
272 a.Flags |= SecurityPermissionFlag.ControlPrincipal;
273 Assert.IsTrue (a.ControlPrincipal, "ControlPrincipal");
274 a.Flags |= SecurityPermissionFlag.ControlThread;
275 Assert.IsTrue (a.ControlThread, "ControlThread");
276 a.Flags |= SecurityPermissionFlag.Execution;
277 Assert.IsTrue (a.Execution, "Execution");
278 a.Flags |= SecurityPermissionFlag.Infrastructure;
279 Assert.IsTrue (a.Infrastructure, "Infrastructure");
280 a.Flags |= SecurityPermissionFlag.RemotingConfiguration;
281 Assert.IsTrue (a.RemotingConfiguration, "RemotingConfiguration");
282 a.Flags |= SecurityPermissionFlag.SerializationFormatter;
283 Assert.IsTrue (a.SerializationFormatter, "SerializationFormatter");
284 a.Flags |= SecurityPermissionFlag.SkipVerification;
285 Assert.IsTrue (a.SkipVerification, "SkipVerification");
286 a.Flags |= SecurityPermissionFlag.UnmanagedCode;
287 Assert.IsTrue (a.UnmanagedCode, "UnmanagedCode");
288 Assert.IsFalse (a.Unrestricted, "Unrestricted");
292 public void Attributes ()
294 Type t = typeof (SecurityPermissionAttribute);
295 Assert.IsTrue (t.IsSerializable, "IsSerializable");
297 object[] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
298 Assert.AreEqual (1, attrs.Length, "AttributeUsage");
299 AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
300 Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
301 Assert.IsFalse (aua.Inherited, "Inherited");
302 AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method);
303 Assert.AreEqual (at, aua.ValidOn, "ValidOn");