Пример #1
0
        public void CreateAccessControlEntry()
        {
            SecurableClassDefinition classDefinition  = _testHelper.CreateClassDefinition("SecurableClass");
            AccessTypeDefinition     readAccessType   = _testHelper.AttachAccessType(classDefinition, Guid.NewGuid(), "Read", 0);
            AccessTypeDefinition     deleteAccessType = _testHelper.AttachAccessType(classDefinition, Guid.NewGuid(), "Delete", 1);
            AccessControlList        acl = _testHelper.CreateStatefulAcl(classDefinition);

            using (_testHelper.Transaction.CreateSubTransaction().EnterDiscardingScope())
            {
                acl.EnsureDataAvailable();
                Assert.That(acl.State, Is.EqualTo(StateType.Unchanged));

                AccessControlEntry entry = acl.CreateAccessControlEntry();

                Assert.That(entry.AccessControlList, Is.SameAs(acl));
                Assert.That(entry.GetPermissions().Count, Is.EqualTo(2));
                Assert.That((entry.GetPermissions()[0]).AccessType, Is.SameAs(readAccessType));
                Assert.That((entry.GetPermissions()[0]).AccessControlEntry, Is.SameAs(entry));
                Assert.That((entry.GetPermissions()[1]).AccessType, Is.SameAs(deleteAccessType));
                Assert.That((entry.GetPermissions()[1]).AccessControlEntry, Is.SameAs(entry));
                Assert.That(acl.State, Is.EqualTo(StateType.Changed));
            }
        }