2 // SecurityExceptionCas.cs - CAS unit tests for
3 // System.Security.SecurityException
6 // Sebastien Pouliot <sebastien@ximian.com>
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
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:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
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.
30 using NUnit.Framework;
33 using System.Reflection;
34 using System.Runtime.Serialization;
35 using System.Security;
36 using System.Security.Permissions;
38 namespace MonoCasTests.System.Security {
42 public class SecurityExceptionCas {
44 private SecurityException se;
49 if (!SecurityManager.SecurityEnabled)
50 Assert.Ignore ("SecurityManager.SecurityEnabled is OFF");
52 se = new SecurityException ();
58 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
59 public void GetAction ()
61 SecurityAction sa = se.Action;
65 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
66 public void SetAction ()
68 se.Action = SecurityAction.RequestRefuse;
72 [SecurityPermission (SecurityAction.PermitOnly, ControlEvidence = true, ControlPolicy = true)]
73 public void GetDemanded_Pass ()
75 object o = se.Demanded;
79 [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
80 [ExpectedException (typeof (SecurityException))]
81 public void GetDemanded_Fail_ControlEvidence ()
83 object o = se.Demanded;
87 [SecurityPermission (SecurityAction.Deny, ControlPolicy = true)]
88 [ExpectedException (typeof (SecurityException))]
89 public void GetDemanded_Fail_ControlPolicy ()
91 object o = se.Demanded;
95 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
96 public void SetDemanded ()
98 se.Demanded = new PermissionSet (PermissionState.None);
102 [SecurityPermission (SecurityAction.PermitOnly, ControlEvidence = true, ControlPolicy = true)]
103 public void GetDenySetInstance_Pass ()
105 object o = se.DenySetInstance;
109 [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
110 [ExpectedException (typeof (SecurityException))]
111 public void GetDenySetInstance_Fail_ControlEvidence ()
113 object o = se.DenySetInstance;
117 [SecurityPermission (SecurityAction.Deny, ControlPolicy = true)]
118 [ExpectedException (typeof (SecurityException))]
119 public void GetDenySetInstance_Fail_ControlPolicy ()
121 object o = se.DenySetInstance;
125 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
126 public void SetDenySetInstance ()
128 se.DenySetInstance = new PermissionSet (PermissionState.None);
132 [SecurityPermission (SecurityAction.PermitOnly, ControlEvidence = true, ControlPolicy = true)]
133 public void GetFailedAssemblyInfo_Pass ()
135 AssemblyName an = se.FailedAssemblyInfo;
139 [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
140 [ExpectedException (typeof (SecurityException))]
141 public void GetFailedAssemblyInfo_Fail_ControlEvidence ()
143 AssemblyName an = se.FailedAssemblyInfo;
147 [SecurityPermission (SecurityAction.Deny, ControlPolicy = true)]
148 [ExpectedException (typeof (SecurityException))]
149 public void GetFailedAssemblyInfo_Fail_ControlPolicy ()
151 AssemblyName an = se.FailedAssemblyInfo;
155 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
156 public void SetFailedAssemblyInfo ()
158 se.FailedAssemblyInfo = null;
162 [SecurityPermission (SecurityAction.PermitOnly, ControlEvidence = true, ControlPolicy = true)]
163 public void GetFirstPermissionThatFailed_Pass ()
165 IPermission p = se.FirstPermissionThatFailed;
169 [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
170 [ExpectedException (typeof (SecurityException))]
171 public void GetFirstPermissionThatFailed_Fail_ControlEvidence ()
173 IPermission p = se.FirstPermissionThatFailed;
177 [SecurityPermission (SecurityAction.Deny, ControlPolicy = true)]
178 [ExpectedException (typeof (SecurityException))]
179 public void GetFirstPermissionThatFailed_Fail_ControlPolicy ()
181 IPermission p = se.FirstPermissionThatFailed;
185 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
186 public void SetFirstPermissionThatFailed ()
188 se.FirstPermissionThatFailed = null;
192 [SecurityPermission (SecurityAction.PermitOnly, ControlEvidence = true, ControlPolicy = true)]
193 public void GetGrantedSet_Pass ()
195 string s = se.GrantedSet;
199 [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
200 [ExpectedException (typeof (SecurityException))]
201 public void GetGrantedSet_Fail_ControlEvidence ()
203 string s = se.GrantedSet;
207 [SecurityPermission (SecurityAction.Deny, ControlPolicy = true)]
208 [ExpectedException (typeof (SecurityException))]
209 public void GetGrantedSet_Fail_ControlPolicy ()
211 string s = se.GrantedSet;
215 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
216 public void SetGrantedSet ()
218 se.GrantedSet = String.Empty;
222 [SecurityPermission (SecurityAction.PermitOnly, ControlEvidence = true, ControlPolicy = true)]
223 public void GetMethod_Pass ()
225 MethodInfo mi = se.Method;
229 [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
230 [ExpectedException (typeof (SecurityException))]
231 public void GetMethod_Fail_ControlEvidence ()
233 MethodInfo mi = se.Method;
237 [SecurityPermission (SecurityAction.Deny, ControlPolicy = true)]
238 [ExpectedException (typeof (SecurityException))]
239 public void GetMethod_Fail_ControlPolicy ()
241 MethodInfo mi = se.Method;
245 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
246 public void SetMethod ()
252 [SecurityPermission (SecurityAction.PermitOnly, ControlEvidence = true, ControlPolicy = true)]
253 public void GetPermissionState_Pass ()
255 string s = se.PermissionState;
259 [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
260 [ExpectedException (typeof (SecurityException))]
261 public void GetPermissionState_Fail_ControlEvidence ()
263 string s = se.PermissionState;
267 [SecurityPermission (SecurityAction.Deny, ControlPolicy = true)]
268 [ExpectedException (typeof (SecurityException))]
269 public void GetPermissionState_Fail_ControlPolicy ()
271 string s = se.PermissionState;
275 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
276 public void SetPermissionState ()
278 se.PermissionState = String.Empty;
282 [SecurityPermission (SecurityAction.PermitOnly, ControlEvidence = true, ControlPolicy = true)]
283 public void GetPermitOnlySetInstance_Pass ()
285 object s = se.PermitOnlySetInstance;
289 [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
290 [ExpectedException (typeof (SecurityException))]
291 public void GetPermitOnlySetInstance_Fail_ControlEvidence ()
293 object s = se.PermitOnlySetInstance;
297 [SecurityPermission (SecurityAction.Deny, ControlPolicy = true)]
298 [ExpectedException (typeof (SecurityException))]
299 public void GetPermitOnlySetInstance_Fail_ControlPolicy ()
301 object s = se.PermitOnlySetInstance;
305 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
306 public void SetPermitOnlySetInstance ()
308 se.PermitOnlySetInstance = null;
312 [SecurityPermission (SecurityAction.PermitOnly, ControlEvidence = true, ControlPolicy = true)]
313 public void GetRefusedSet_Pass ()
315 string s = se.RefusedSet;
319 [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
320 [ExpectedException (typeof (SecurityException))]
321 public void GetRefusedSet_Fail_ControlEvidence ()
323 string s = se.RefusedSet;
327 [SecurityPermission (SecurityAction.Deny, ControlPolicy = true)]
328 [ExpectedException (typeof (SecurityException))]
329 public void GetRefusedSet_Fail_ControlPolicy ()
331 string s = se.RefusedSet;
335 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
336 public void SetRefusedSet ()
338 se.RefusedSet = String.Empty;
342 [SecurityPermission (SecurityAction.PermitOnly, ControlEvidence = true, ControlPolicy = true)]
343 public void GetUrl_Pass ()
349 [SecurityPermission (SecurityAction.Deny, ControlEvidence = true)]
350 [ExpectedException (typeof (SecurityException))]
351 public void GetUrl_Fail_ControlEvidence ()
357 [SecurityPermission (SecurityAction.Deny, ControlPolicy = true)]
358 [ExpectedException (typeof (SecurityException))]
359 public void GetUrl_Fail_ControlPolicy ()
365 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
366 public void SetUrl ()
368 se.Url = "http://www.mono-project.com/";
372 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
373 public void GetZone ()
375 SecurityZone sz = se.Zone;
379 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
380 public void SetZone ()
382 se.Zone = SecurityZone.Untrusted;
386 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
387 public void ToString_Empty ()
389 string s = se.ToString ();
393 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
394 public void ToString_WithSuppliedSensitiveInformation1 ()
396 // here we supply something *sensitive* as the state
397 string sensitive = "*SENSITIVE*";
398 SecurityException se = new SecurityException ("message", typeof (Object), sensitive);
399 // and we don't expect it to be shown in the output
400 Assert.IsTrue (se.ToString ().IndexOf (sensitive) == -1, sensitive);
404 [SecurityPermission (SecurityAction.PermitOnly, ControlEvidence = true, ControlPolicy = true)]
405 public void ToString_WithSuppliedSensitiveInformation2 ()
407 // here we supply something *sensitive* as the state
408 string sensitive = "*SENSITIVE*";
409 SecurityException se = new SecurityException ("message", typeof (Object), sensitive);
410 // and we EXPECT it to be shown in the output
411 // as we pass the security checks for PermissionState property
412 Assert.IsFalse (se.ToString ().IndexOf (sensitive) == -1, sensitive);
416 public void GetObjectData ()
418 SecurityException se = new SecurityException ("message", typeof (string), "state");
419 SerializationInfo info = new SerializationInfo (typeof (SecurityException), new FormatterConverter ());
420 se.GetObjectData (info, new StreamingContext (StreamingContextStates.All));
421 Assert.AreEqual ("state", info.GetValue ("PermissionState", typeof (string)), "PermissionState");
425 [PermissionSet (SecurityAction.Deny, Unrestricted = true)]
426 [ExpectedException (typeof (SerializationException))]
427 public void GetObjectData_Deny_Unrestricted ()
429 SecurityException se = new SecurityException ("message", typeof (string), "state");
430 SerializationInfo info = new SerializationInfo (typeof (SecurityException), new FormatterConverter ());
431 se.GetObjectData (info, new StreamingContext (StreamingContextStates.All));
432 // "PermissionState" hasn't been serialized because it's access was restricted
433 info.GetValue ("PermissionState", typeof (string));