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