Exemple #1
0
        public void MoveToLaterPosition()
        {
            var accessType0 = AccessTypeDefinition.NewObject();
            var accessType1 = AccessTypeDefinition.NewObject();
            var accessType2 = AccessTypeDefinition.NewObject();
            var accessType3 = AccessTypeDefinition.NewObject();
            var accessType4 = AccessTypeDefinition.NewObject();
            var securableClassDefinition = SecurableClassDefinition.NewObject();

            securableClassDefinition.AddAccessType(accessType0);
            securableClassDefinition.AddAccessType(accessType1);
            securableClassDefinition.AddAccessType(accessType2);
            securableClassDefinition.AddAccessType(accessType3);
            securableClassDefinition.AddAccessType(accessType4);

            securableClassDefinition.MoveAccessType(3, accessType1);

            Assert.That(securableClassDefinition.AccessTypes, Is.EqualTo(new[] { accessType0, accessType2, accessType3, accessType1, accessType4 }));
            var references = new SecurableClassDefinitionWrapper(securableClassDefinition).AccessTypeReferences;

            for (int i = 0; i < references.Count; i++)
            {
                Assert.That(((AccessTypeReference)references[i]).Index, Is.EqualTo(i));
            }
        }
Exemple #2
0
        public void RemovesPermissionsForRemovedAccessType()
        {
            var accessType0 = AccessTypeDefinition.NewObject();
            var accessType1 = AccessTypeDefinition.NewObject();
            var accessType2 = AccessTypeDefinition.NewObject();

            var securableClassDefinition = SecurableClassDefinition.NewObject();

            securableClassDefinition.AddAccessType(accessType0);
            securableClassDefinition.AddAccessType(accessType1);
            securableClassDefinition.AddAccessType(accessType2);

            var testHelper = new AccessControlTestHelper(ClientTransaction.Current);
            var acls       = new List <AccessControlList>();

            acls.Add(testHelper.CreateStatefulAcl(securableClassDefinition));
            acls.Add(testHelper.CreateStatelessAcl(securableClassDefinition));

            foreach (var acl in acls)
            {
                acl.CreateAccessControlEntry();
            }

            securableClassDefinition.RemoveAccessType(accessType1);
            foreach (var acl in acls)
            {
                var permissions = acl.AccessControlEntries[0].GetPermissions();
                Assert.That(permissions.Count, Is.EqualTo(2));
                Assert.That(permissions[0].AccessType, Is.SameAs(accessType0));
                Assert.That(permissions[1].AccessType, Is.SameAs(accessType2));
            }
        }
Exemple #3
0
        public void LeavesPermissionsUntouched()
        {
            var accessType0 = AccessTypeDefinition.NewObject();
            var accessType1 = AccessTypeDefinition.NewObject();
            var securableClassDefinition = SecurableClassDefinition.NewObject();

            securableClassDefinition.AddAccessType(accessType0);
            securableClassDefinition.AddAccessType(accessType1);

            var testHelper = new AccessControlTestHelper(ClientTransaction.Current);
            var acls       = new List <AccessControlList>();

            acls.Add(testHelper.CreateStatefulAcl(securableClassDefinition));
            acls.Add(testHelper.CreateStatelessAcl(securableClassDefinition));

            foreach (var acl in acls)
            {
                var ace = acl.CreateAccessControlEntry();
                ace.DenyAccess(accessType0);
                ace.AllowAccess(accessType1);
            }

            securableClassDefinition.MoveAccessType(0, accessType1);
            foreach (var acl in acls)
            {
                var permissions = acl.AccessControlEntries[0].GetPermissions();
                Assert.That(permissions.Count, Is.EqualTo(2));
                Assert.That(permissions[0].AccessType, Is.SameAs(accessType1));
                Assert.That(permissions[0].Allowed, Is.True);
                Assert.That(permissions[1].AccessType, Is.SameAs(accessType0));
                Assert.That(permissions[1].Allowed, Is.False);
            }
        }
Exemple #4
0
 public AccessTypeDefinition CreateJournalizeAccessType()
 {
     using (_transaction.EnterNonDiscardingScope())
     {
         return(AccessTypeDefinition.NewObject(Guid.NewGuid(), "Journalize", 42));
     }
 }
Exemple #5
0
        public void RemovesAccessType()
        {
            var accessType0 = AccessTypeDefinition.NewObject();
            var accessType1 = AccessTypeDefinition.NewObject();
            var accessType2 = AccessTypeDefinition.NewObject();
            var accessType3 = AccessTypeDefinition.NewObject();
            var accessType4 = AccessTypeDefinition.NewObject();

            var securableClassDefinition = SecurableClassDefinition.NewObject();

            securableClassDefinition.AddAccessType(accessType0);
            securableClassDefinition.AddAccessType(accessType1);
            securableClassDefinition.AddAccessType(accessType2);
            securableClassDefinition.AddAccessType(accessType3);
            securableClassDefinition.AddAccessType(accessType4);

            securableClassDefinition.RemoveAccessType(accessType2);

            Assert.That(securableClassDefinition.AccessTypes, Is.EqualTo(new[] { accessType0, accessType1, accessType3, accessType4 }));
            var references = new SecurableClassDefinitionWrapper(securableClassDefinition).AccessTypeReferences;

            Assert.That(((AccessTypeReference)references[0]).Index, Is.EqualTo(0));
            Assert.That(((AccessTypeReference)references[1]).Index, Is.EqualTo(1));
            Assert.That(((AccessTypeReference)references[2]).Index, Is.EqualTo(2));
            Assert.That(((AccessTypeReference)references[3]).Index, Is.EqualTo(3));
        }
Exemple #6
0
 public AccessTypeDefinition CreateAccessType(Guid metadataItemID, string name, int value)
 {
     using (_transaction.EnterNonDiscardingScope())
     {
         AccessTypeDefinition accessType = AccessTypeDefinition.NewObject(metadataItemID, name, value);
         return(accessType);
     }
 }
Exemple #7
0
        private AccessTypeDefinition CreateAccessType(Guid metadataItemID, string name)
        {
            AccessTypeDefinition accessType = AccessTypeDefinition.NewObject();

            accessType.MetadataItemID = metadataItemID;
            accessType.Name           = name;

            return(accessType);
        }
Exemple #8
0
        public AccessTypeDefinition CreateAccessTypeForAce(AccessControlEntry ace, bool?allowAccess, Guid metadataItemID, string name, int value)
        {
            using (_transaction.EnterNonDiscardingScope())
            {
                AccessTypeDefinition accessType = AccessTypeDefinition.NewObject(metadataItemID, name, value);
                AttachAccessType(ace, accessType, allowAccess);

                return(accessType);
            }
        }
Exemple #9
0
        public AccessTypeDefinition AttachAccessType(SecurableClassDefinition classDefinition, Guid metadataItemID, string name, int value)
        {
            using (_transaction.EnterNonDiscardingScope())
            {
                AccessTypeDefinition accessType = AccessTypeDefinition.NewObject(metadataItemID, name, value);
                classDefinition.AddAccessType(accessType);

                return(accessType);
            }
        }
Exemple #10
0
        public void FailsForNonExistentAccessType()
        {
            var securableClassDefinition = SecurableClassDefinition.NewObject();

            securableClassDefinition.Name = "Class";
            securableClassDefinition.AddAccessType(AccessTypeDefinition.NewObject());
            securableClassDefinition.AddAccessType(AccessTypeDefinition.NewObject());
            Assert.That(
                () => securableClassDefinition.RemoveAccessType(AccessTypeDefinition.NewObject(Guid.NewGuid(), "Test", 42)),
                Throws.ArgumentException
                .And.Message.StartsWith("The access type 'Test' is not associated with the securable class definition."));
        }
Exemple #11
0
        public void FailsForIndexGreaterThanNumberOfItems()
        {
            var securableClassDefinition = SecurableClassDefinition.NewObject();

            securableClassDefinition.Name = "Class";
            securableClassDefinition.AddAccessType(AccessTypeDefinition.NewObject());
            Assert.That(
                () => securableClassDefinition.InsertAccessType(2, AccessTypeDefinition.NewObject()),
                Throws.TypeOf <ArgumentOutOfRangeException>()
                .And.Message.StartsWith(
                    "The index must not be less than 0 or greater than the total number of access types for the securable class definition."));
        }
Exemple #12
0
        public void FailsForExistingAccessType()
        {
            var accessType = AccessTypeDefinition.NewObject(Guid.NewGuid(), "Test", 42);

            var securableClassDefinition = SecurableClassDefinition.NewObject();

            securableClassDefinition.Name = "Class";
            securableClassDefinition.AddAccessType(accessType);
            Assert.That(
                () => securableClassDefinition.AddAccessType(accessType),
                Throws.ArgumentException
                .And.Message.StartsWith("The access type 'Test' has already been added to the securable class definition."));
        }
Exemple #13
0
        public AccessTypeDefinition CreateAccessTypeCreate(int index)
        {
            using (_transaction.EnterNonDiscardingScope())
            {
                AccessTypeDefinition type = AccessTypeDefinition.NewObject(
                    new Guid("1d6d25bc-4e85-43ab-a42d-fb5a829c30d5"),
                    "Create|Remotion.Security.GeneralAccessTypes, Remotion.Security",
                    0);
                type.Index = index;

                return(type);
            }
        }
Exemple #14
0
        public AccessTypeDefinition CreateAccessTypeEdit(int index)
        {
            using (_transaction.EnterNonDiscardingScope())
            {
                AccessTypeDefinition type = AccessTypeDefinition.NewObject(
                    new Guid("11186122-6de0-4194-b434-9979230c41fd"),
                    "Edit|Remotion.Security.GeneralAccessTypes, Remotion.Security",
                    2);
                type.Index = index;

                return(type);
            }
        }
Exemple #15
0
        public AccessTypeDefinition CreateAccessTypeRead(int index)
        {
            using (_transaction.EnterNonDiscardingScope())
            {
                AccessTypeDefinition type = AccessTypeDefinition.NewObject(
                    new Guid("62dfcd92-a480-4d57-95f1-28c0f5996b3a"),
                    "Read|Remotion.Security.GeneralAccessTypes, Remotion.Security",
                    1);
                type.Index = index;

                return(type);
            }
        }
Exemple #16
0
        public void TouchesSecurableClassDefinition()
        {
            var securableClassDefinition = SecurableClassDefinition.NewObject();

            using (ClientTransaction.Current.CreateSubTransaction().EnterDiscardingScope())
            {
                securableClassDefinition.EnsureDataAvailable();
                Assert.That(securableClassDefinition.State, Is.EqualTo(StateType.Unchanged));

                securableClassDefinition.AddAccessType(AccessTypeDefinition.NewObject());

                Assert.That(securableClassDefinition.State, Is.EqualTo(StateType.Changed));
            }
        }
Exemple #17
0
        public void FailsForIndexLessThanZero()
        {
            var accessType = AccessTypeDefinition.NewObject();
            var securableClassDefinition = SecurableClassDefinition.NewObject();

            securableClassDefinition.Name = "Class";
            securableClassDefinition.AddAccessType(AccessTypeDefinition.NewObject());
            securableClassDefinition.AddAccessType(accessType);
            Assert.That(
                () => securableClassDefinition.MoveAccessType(-1, accessType),
                Throws.TypeOf <ArgumentOutOfRangeException>()
                .And.Message.StartsWith(
                    "The index must not be less than 0 or greater than the top index of the access types for the securable class definition."));
        }
Exemple #18
0
        public void AddsAccessTypes()
        {
            var accessType0 = AccessTypeDefinition.NewObject();
            var accessType1 = AccessTypeDefinition.NewObject();
            var securableClassDefinition = SecurableClassDefinition.NewObject();

            securableClassDefinition.AddAccessType(accessType0);
            securableClassDefinition.AddAccessType(accessType1);

            Assert.That(securableClassDefinition.AccessTypes, Is.EqualTo(new[] { accessType0, accessType1 }));
            var references = new SecurableClassDefinitionWrapper(securableClassDefinition).AccessTypeReferences;

            Assert.That(((AccessTypeReference)references[0]).Index, Is.EqualTo(0));
            Assert.That(((AccessTypeReference)references[1]).Index, Is.EqualTo(1));
        }
Exemple #19
0
 public void DomainObjectsAreSerializable()
 {
     CheckDomainObjectSerializability(delegate { return(AccessControlEntry.NewObject()); });
     CheckDomainObjectSerializability(delegate { return(StatefulAccessControlList.NewObject()); });
     CheckDomainObjectSerializability(delegate { return(Permission.NewObject()); });
     CheckDomainObjectSerializability(delegate { return(StateCombination.NewObject()); });
     CheckDomainObjectSerializability(delegate { return(StateUsage.NewObject()); });
     CheckDomainObjectSerializability(delegate { return(AbstractRoleDefinition.NewObject()); });
     CheckDomainObjectSerializability(delegate { return(AccessTypeDefinition.NewObject()); });
     CheckDomainObjectSerializability(delegate { return(AccessTypeReference.NewObject()); });
     CheckDomainObjectSerializability(delegate { return(Culture.NewObject("DE-DE")); });
     CheckDomainObjectSerializability(delegate { return(LocalizedName.NewObject("foo", Culture.NewObject("DE-DE"), SecurableClassDefinition.NewObject())); });
     CheckDomainObjectSerializability(delegate { return(SecurableClassDefinition.NewObject()); });
     CheckDomainObjectSerializability(delegate { return(StateDefinition.NewObject()); });
     CheckDomainObjectSerializability(delegate { return(StatePropertyDefinition.NewObject()); });
     CheckDomainObjectSerializability(delegate { return(StatePropertyReference.NewObject()); });
     CheckDomainObjectSerializability(delegate { return((Group)LifetimeService.NewObject(ClientTransaction.Current, typeof(Group), ParamList.Empty)); });
     CheckDomainObjectSerializability(delegate { return((GroupType)LifetimeService.NewObject(ClientTransaction.Current, typeof(GroupType), ParamList.Empty)); });
     CheckDomainObjectSerializability(delegate { return(GroupTypePosition.NewObject()); });
     CheckDomainObjectSerializability(delegate { return((Position)LifetimeService.NewObject(ClientTransaction.Current, typeof(Position), ParamList.Empty)); });
     CheckDomainObjectSerializability(delegate { return(Role.NewObject()); });
     CheckDomainObjectSerializability(delegate { return((Tenant)LifetimeService.NewObject(ClientTransaction.Current, typeof(Tenant), ParamList.Empty)); });
     CheckDomainObjectSerializability(delegate { return((User)LifetimeService.NewObject(ClientTransaction.Current, typeof(User), ParamList.Empty)); });
 }