Beispiel #1
0
        public void AddState_DuplicateValue()
        {
            StatePropertyDefinition stateProperty = _testHelper.CreateNewStateProperty("NewProperty");

            stateProperty.AddState(_testHelper.CreateState("State 1", 1));

            Assert.That(
                () => stateProperty.AddState(_testHelper.CreateState("State 2", 1)),
                Throws.ArgumentException.And.Message.StartsWith("A state with the value 1 was already added to the property 'NewProperty'."));
        }
Beispiel #2
0
        public void AddState()
        {
            var state1 = _testHelper.CreateState("State 1", 1);
            var state2 = _testHelper.CreateState("State 2", 2);
            StatePropertyDefinition stateProperty = _testHelper.CreateNewStateProperty("NewProperty");

            stateProperty.AddState(state1);
            stateProperty.AddState(state2);

            Assert.That(stateProperty.DefinedStates, Is.EqualTo(new[] { state1, state2 }));
        }
Beispiel #3
0
        private StatePropertyDefinition CreateConfidentialityProperty()
        {
            StatePropertyDefinition confidentialityProperty =
                StatePropertyDefinition.NewObject(new Guid("93969f13-65d7-49f4-a456-a1686a4de3de"), "Confidentiality");

            confidentialityProperty.AddState(CreateState("Public", 0));
            confidentialityProperty.AddState(CreateState("Secret", 1));
            confidentialityProperty.AddState(CreateState("TopSecret", 2));

            return(confidentialityProperty);
        }
Beispiel #4
0
        public StatePropertyDefinition CreateTestProperty()
        {
            using (_transaction.EnterNonDiscardingScope())
            {
                StatePropertyDefinition property = CreateStateProperty("Test");
                property.AddState(CreateState("Test1", 0));
                property.AddState(CreateState("Test2", 1));

                return(property);
            }
        }
Beispiel #5
0
        public StatePropertyDefinition CreateDeliveryStateProperty(SecurableClassDefinition classDefinition)
        {
            using (_transaction.EnterNonDiscardingScope())
            {
                StatePropertyDefinition deliveryStateProperty = CreateStateProperty("Delivery");
                deliveryStateProperty.AddState(CreateState(EnumWrapper.Get(Delivery.Dhl).Name, 0));
                deliveryStateProperty.AddState(CreateState(EnumWrapper.Get(Delivery.Post).Name, 1));
                classDefinition.AddStateProperty(deliveryStateProperty);

                return(deliveryStateProperty);
            }
        }
Beispiel #6
0
        public StatePropertyDefinition CreatePaymentStateProperty(SecurableClassDefinition classDefinition)
        {
            using (_transaction.EnterNonDiscardingScope())
            {
                StatePropertyDefinition paymentStateProperty = CreateStateProperty("Payment");
                paymentStateProperty.AddState(CreateState(EnumWrapper.Get(PaymentState.None).Name, 0));
                paymentStateProperty.AddState(CreateState(EnumWrapper.Get(PaymentState.Paid).Name, 1));
                classDefinition.AddStateProperty(paymentStateProperty);

                return(paymentStateProperty);
            }
        }
Beispiel #7
0
        public StatePropertyDefinition CreateOrderStateProperty(SecurableClassDefinition classDefinition)
        {
            using (_transaction.EnterNonDiscardingScope())
            {
                StatePropertyDefinition orderStateProperty = CreateStateProperty("State");
                orderStateProperty.AddState(CreateState(EnumWrapper.Get(OrderState.Received).Name, 0));
                orderStateProperty.AddState(CreateState(EnumWrapper.Get(OrderState.Delivered).Name, 1));
                classDefinition.AddStateProperty(orderStateProperty);

                return(orderStateProperty);
            }
        }
Beispiel #8
0
        public StatePropertyDefinition CreateFileStateProperty(int index)
        {
            using (_transaction.EnterNonDiscardingScope())
            {
                StatePropertyDefinition property = StatePropertyDefinition.NewObject(new Guid("00000000-0000-0000-0002-000000000001"), "State");
                property.Index = index;
                property.AddState(CreateState(State_NewName, State_NewValue));
                property.AddState(CreateState(State_NormalName, State_NormalValue));
                property.AddState(CreateState(State_ArchivedName, State_ArchivedValue));

                return(property);
            }
        }
Beispiel #9
0
        public StatePropertyDefinition CreateConfidentialityProperty(int index)
        {
            using (_transaction.EnterNonDiscardingScope())
            {
                StatePropertyDefinition property = StatePropertyDefinition.NewObject(new Guid("00000000-0000-0000-0001-000000000001"), "Confidentiality");
                property.Index = index;
                property.AddState(CreateState(Confidentiality_NormalName, Confidentiality_NormalValue));
                property.AddState(CreateState(Confidentiality_ConfidentialName, Confidentiality_ConfidentialValue));
                property.AddState(CreateState(Confidentiality_PrivateName, Confidentiality_PrivateValue));

                return(property);
            }
        }
Beispiel #10
0
        private StatePropertyDefinition CreateFileStateProperty(ClientTransaction transaction)
        {
            using (transaction.EnterNonDiscardingScope())
            {
                StatePropertyDefinition fileStateProperty = StatePropertyDefinition.NewObject(new Guid("9e689c4c-3758-436e-ac86-23171289fa5e"), "FileState");
                fileStateProperty.AddState(CreateState("Open", 0));
                fileStateProperty.AddState(CreateState("Cancelled", 1));
                fileStateProperty.AddState(CreateState("Reaccounted", 2));
                fileStateProperty.AddState(CreateState("HandledBy", 3));
                fileStateProperty.AddState(CreateState("Approved", 4));

                return(fileStateProperty);
            }
        }
Beispiel #11
0
        private void CreateStateCombination(StatefulAccessControlList acl, StatePropertyDefinition stateProperty, StateDefinition stateDefinition)
        {
            StateCombination stateCombination = acl.CreateStateCombination();

            stateProperty.AddState(stateDefinition);
            stateCombination.AttachState(stateDefinition);
        }
Beispiel #12
0
        public void RemoveState_StateNotFound()
        {
            StatePropertyDefinition stateProperty = _testHelper.CreateNewStateProperty("NewProperty");

            stateProperty.AddState(_testHelper.CreateState("State 1", 1));

            Assert.That(
                () => stateProperty.RemoveState(_testHelper.CreateState("State 2", 2)),
                Throws.ArgumentException.And.Message.StartsWith("The state 'State 2' does not exist on the property 'NewProperty'."));
        }
Beispiel #13
0
        public void RemoveState_DeletesAssociatedAccessControlListIfDeletedStateCombinationWasLastStateCombination()
        {
            var state1 = _testHelper.CreateState("State 1", 1);
            var state2 = _testHelper.CreateState("State 2", 2);
            var state3 = _testHelper.CreateState("State 3", 3);
            StatePropertyDefinition stateProperty = _testHelper.CreateNewStateProperty("NewProperty");

            stateProperty.AddState(state1);
            stateProperty.AddState(state2);
            stateProperty.AddState(state3);

            var securableClassDefinition1 = SecurableClassDefinition.NewObject();

            securableClassDefinition1.AddStateProperty(stateProperty);
            var acl1 = securableClassDefinition1.CreateStatefulAccessControlList();

            acl1.StateCombinations[0].AttachState(state2);

            var acl2 = securableClassDefinition1.CreateStatefulAccessControlList();

            Assert.That(acl2.StateCombinations, Is.Not.Empty);

            var acl3 = securableClassDefinition1.CreateStatefulAccessControlList();

            acl3.StateCombinations[0].Delete();

            stateProperty.RemoveState(state2);

            Assert.That(acl1.State, Is.EqualTo(StateType.Invalid));

            Assert.That(acl2.State, Is.EqualTo(StateType.New));
            Assert.That(acl2.StateCombinations.Count, Is.EqualTo(1));
            Assert.That(acl2.StateCombinations[0].GetStates(), Is.Empty);

            Assert.That(acl3.State, Is.EqualTo(StateType.New));
            Assert.That(acl3.StateCombinations, Is.Empty);
        }
Beispiel #14
0
        public void RemoveState_DeletesAssociatedStateCombinations()
        {
            var state1 = _testHelper.CreateState("State 1", 1);
            var state2 = _testHelper.CreateState("State 2", 2);
            var state3 = _testHelper.CreateState("State 3", 3);
            StatePropertyDefinition stateProperty = _testHelper.CreateNewStateProperty("NewProperty");

            stateProperty.AddState(state1);
            stateProperty.AddState(state2);
            stateProperty.AddState(state3);

            var securableClassDefinition1 = SecurableClassDefinition.NewObject();

            securableClassDefinition1.AddStateProperty(stateProperty);
            var acl1 = securableClassDefinition1.CreateStatefulAccessControlList();

            acl1.StateCombinations[0].AttachState(state1);
            acl1.CreateStateCombination().AttachState(state2);

            var securableClassDefinition2 = SecurableClassDefinition.NewObject();

            securableClassDefinition2.AddStateProperty(stateProperty);

            var acl2 = securableClassDefinition2.CreateStatefulAccessControlList();

            acl2.StateCombinations[0].AttachState(state2);
            acl2.CreateStateCombination().AttachState(state3);

            stateProperty.RemoveState(state2);

            Assert.That(acl1.StateCombinations.Count, Is.EqualTo(1));
            Assert.That(acl1.StateCombinations[0].GetStates(), Is.EqualTo(new[] { state1 }));

            Assert.That(acl2.StateCombinations.Count, Is.EqualTo(1));
            Assert.That(acl2.StateCombinations[0].GetStates(), Is.EqualTo(new[] { state3 }));
        }