1 // ObjectSecurity_TTest.cs - NUnit Test Cases for ObjectSecurity<T> 2 // 3 // Authors: 4 // James Bellinger (jfb@zer7.com) 5 6 7 using System; 8 using System.Security.AccessControl; 9 using System.Security.Principal; 10 using NUnit.Framework; 11 12 namespace MonoTests.System.Security.AccessControl 13 { 14 [TestFixture] 15 public class ObjectSecurity_TTest 16 { 17 enum WillWorkRights 18 { 19 Value = 1 20 } 21 22 class WillWorkSecurity : ObjectSecurity<WillWorkRights> 23 { WillWorkSecurity()24 public WillWorkSecurity () 25 : base (false, ResourceType.Unknown) 26 { 27 28 } 29 } 30 31 struct WillFailRights 32 { 33 34 } 35 36 class WillFailSecurity : ObjectSecurity<WillFailRights> 37 { WillFailSecurity()38 public WillFailSecurity () 39 : base (false, ResourceType.Unknown) 40 { 41 42 } 43 } 44 45 [Test] TypesAreCorrect()46 public void TypesAreCorrect () 47 { 48 WillWorkSecurity security = new WillWorkSecurity (); 49 Assert.AreEqual (security.AccessRightType, typeof (WillWorkRights)); 50 Assert.AreEqual (security.AccessRuleType, typeof (AccessRule<WillWorkRights>)); 51 Assert.AreEqual (security.AuditRuleType, typeof (AuditRule<WillWorkRights>)); 52 } 53 54 [Test] WillWorkOKUsingAccessFactory()55 public void WillWorkOKUsingAccessFactory () 56 { 57 WillWorkSecurity security = new WillWorkSecurity (); 58 SecurityIdentifier id = new SecurityIdentifier (WellKnownSidType.WorldSid, null); 59 AccessRule<WillWorkRights> rule = (AccessRule<WillWorkRights>) 60 security.AccessRuleFactory (id, 1, false, 61 InheritanceFlags.None, PropagationFlags.None, 62 AccessControlType.Allow); 63 Assert.AreEqual (rule.AccessControlType, AccessControlType.Allow); 64 Assert.AreEqual (rule.IdentityReference, id); 65 Assert.AreEqual (rule.InheritanceFlags, InheritanceFlags.None); 66 Assert.AreEqual (rule.PropagationFlags, PropagationFlags.None); 67 Assert.AreEqual (rule.Rights, WillWorkRights.Value); 68 } 69 70 [Test] WillWorkOKUsingConstructor()71 public void WillWorkOKUsingConstructor() 72 { 73 SecurityIdentifier id = new SecurityIdentifier (WellKnownSidType.WorldSid, null); 74 AccessRule<WillWorkRights> rule = new AccessRule<WillWorkRights> (id, WillWorkRights.Value, 75 AccessControlType.Allow); 76 Assert.AreEqual (rule.AccessControlType, AccessControlType.Allow); 77 Assert.AreEqual (rule.IdentityReference, id); 78 Assert.AreEqual (rule.Rights, WillWorkRights.Value); 79 } 80 81 [Test, ExpectedException (typeof (InvalidCastException))] WillFailFailsUsingFactoryOnGetter()82 public void WillFailFailsUsingFactoryOnGetter() 83 { 84 WillFailSecurity security = new WillFailSecurity (); 85 SecurityIdentifier id = new SecurityIdentifier (WellKnownSidType.WorldSid, null); 86 AccessRule<WillFailRights> rule = (AccessRule<WillFailRights>) 87 security.AccessRuleFactory (id, 1, false, 88 InheritanceFlags.None, PropagationFlags.None, 89 AccessControlType.Allow); 90 WillFailRights rights = rule.Rights; 91 } 92 93 [Test, ExpectedException (typeof (InvalidCastException))] WillFailFailsUsingConstructor()94 public void WillFailFailsUsingConstructor() 95 { 96 SecurityIdentifier id = new SecurityIdentifier (WellKnownSidType.WorldSid, null); 97 AccessRule<WillFailRights> rule = new AccessRule<WillFailRights> (id, new WillFailRights(), 98 AccessControlType.Allow); 99 } 100 } 101 } 102 103 104