예제 #1
0
        public void CreateStatefulAccessControlList_TwoNewAcls()
        {
            using (ClientTransaction.CreateRootTransaction().EnterNonDiscardingScope())
            {
                SecurableClassDefinition classDefinition = SecurableClassDefinition.NewObject();
                using (ClientTransaction.Current.CreateSubTransaction().EnterDiscardingScope())
                {
                    classDefinition.EnsureDataAvailable();
                    Assert.That(classDefinition.State, Is.EqualTo(StateType.Unchanged));

                    StatefulAccessControlList acccessControlList0 = classDefinition.CreateStatefulAccessControlList();
                    StatefulAccessControlList acccessControlListl = classDefinition.CreateStatefulAccessControlList();

                    Assert.That(classDefinition.StatefulAccessControlLists.Count, Is.EqualTo(2));
                    Assert.That(classDefinition.StatefulAccessControlLists[0], Is.SameAs(acccessControlList0));
                    Assert.That(acccessControlList0.Index, Is.EqualTo(0));
                    Assert.That(classDefinition.StatefulAccessControlLists[1], Is.SameAs(acccessControlListl));
                    Assert.That(acccessControlListl.Index, Is.EqualTo(1));
                    Assert.That(classDefinition.State, Is.EqualTo(StateType.Changed));
                }
            }
        }
예제 #2
0
        public ObjectID CreateAndCommitAccessControlEntryWithPermissions(int permissions, ClientTransaction transaction)
        {
            CreateEmptyDomain();

            using (transaction.EnterNonDiscardingScope())
            {
                SecurableClassDefinition classDefinition = CreateSecurableClassDefinitionWithAccessTypes(permissions);
                AccessControlList        acl             = classDefinition.CreateStatefulAccessControlList();
                AccessControlEntry       ace             = acl.CreateAccessControlEntry();

                ClientTransactionScope.CurrentTransaction.Commit();

                return(ace.ID);
            }
        }
예제 #3
0
        public void ValidateDuringCommit()
        {
            SecurableClassDefinition orderClass      = _testHelper.CreateOrderClassDefinition();
            StatePropertyDefinition  paymentProperty = _testHelper.CreatePaymentStateProperty(orderClass);
            StateDefinition          paidState       = paymentProperty[EnumWrapper.Get(PaymentState.Paid).Name];
            StateDefinition          notPaidState    = paymentProperty[EnumWrapper.Get(PaymentState.None).Name];

            _testHelper.CreateStateCombination(orderClass, paidState);
            _testHelper.CreateStateCombination(orderClass, notPaidState);
            _testHelper.CreateStateCombination(orderClass);
            var dupicateStateCombination = orderClass.CreateStatefulAccessControlList().StateCombinations[0];

            using (ClientTransaction.Current.CreateSubTransaction().EnterDiscardingScope())
            {
                dupicateStateCombination.AttachState(paidState);

                ClientTransaction.Current.Commit();
            }
        }
예제 #4
0
        public void CreateStatefulAccessControlList()
        {
            using (ClientTransaction.CreateRootTransaction().EnterNonDiscardingScope())
            {
                SecurableClassDefinition classDefinition = SecurableClassDefinition.NewObject();
                using (ClientTransaction.Current.CreateSubTransaction().EnterDiscardingScope())
                {
                    classDefinition.EnsureDataAvailable();
                    Assert.That(classDefinition.State, Is.EqualTo(StateType.Unchanged));

                    StatefulAccessControlList accessControlList = classDefinition.CreateStatefulAccessControlList();

                    Assert.That(accessControlList.Class, Is.SameAs(classDefinition));
                    Assert.IsNotEmpty(accessControlList.AccessControlEntries);
                    Assert.IsNotEmpty(accessControlList.StateCombinations);
                    Assert.That(classDefinition.State, Is.EqualTo(StateType.Changed));
                }
            }
        }
예제 #5
0
        public void ValidateDuringCommit_ByTouchOnClassForChangedStateUsagesCollection()
        {
            SecurableClassDefinition orderClass      = _testHelper.CreateOrderClassDefinition();
            StatePropertyDefinition  paymentProperty = _testHelper.CreatePaymentStateProperty(orderClass);
            StateDefinition          paidState       = paymentProperty[EnumWrapper.Get(PaymentState.Paid).Name];
            StateDefinition          notPaidState    = paymentProperty[EnumWrapper.Get(PaymentState.None).Name];
            StateCombination         combination1    = _testHelper.CreateStateCombination(orderClass, paidState);
            StateCombination         combination2    = _testHelper.CreateStateCombination(orderClass, notPaidState);
            StateCombination         combination3    = _testHelper.CreateStateCombination(orderClass);

            combination1.AccessControlList.AccessControlEntries.Add(AccessControlEntry.NewObject());
            combination2.AccessControlList.AccessControlEntries.Add(AccessControlEntry.NewObject());
            combination3.AccessControlList.AccessControlEntries.Add(AccessControlEntry.NewObject());
            var dupicateStateCombination = orderClass.CreateStatefulAccessControlList().StateCombinations[0];

            using (_testHelper.Transaction.CreateSubTransaction().EnterDiscardingScope())
            {
                dupicateStateCombination.AttachState(paidState);

                ClientTransaction.Current.Commit();
            }
        }