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)); } }
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)); } }
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); } }
public AccessTypeDefinition CreateJournalizeAccessType() { using (_transaction.EnterNonDiscardingScope()) { return(AccessTypeDefinition.NewObject(Guid.NewGuid(), "Journalize", 42)); } }
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)); }
public AccessTypeDefinition CreateAccessType(Guid metadataItemID, string name, int value) { using (_transaction.EnterNonDiscardingScope()) { AccessTypeDefinition accessType = AccessTypeDefinition.NewObject(metadataItemID, name, value); return(accessType); } }
private AccessTypeDefinition CreateAccessType(Guid metadataItemID, string name) { AccessTypeDefinition accessType = AccessTypeDefinition.NewObject(); accessType.MetadataItemID = metadataItemID; accessType.Name = name; return(accessType); }
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); } }
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); } }
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.")); }
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.")); }
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.")); }
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); } }
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); } }
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); } }
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)); } }
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.")); }
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)); }
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)); }); }