예제 #1
0
        public void InitialData_Core_Permissions_Apply()
        {
            var initialData = new InitialData
            {
                Permissions = new List <string>
                {
                    "+6|Normal|-6:_______________________________________________________________+",
                    "-1000|Normal|+6:_______________________________________________________________+",
                }
            };

            InitialSecurityDataTest(() =>
            {
                var securityHandler = Providers.Instance.SecurityHandler;

                var mask = PermissionType.GetPermissionMask(PermissionType.BuiltInPermissionTypes);
                Providers.Instance.SecurityHandler.CreateAclEditor()
                .RemoveExplicitEntries(2)
                .RemoveExplicitEntries(6)
                .RemoveExplicitEntries(1000)
                .Set(2, 7, false, mask, 0UL)
                .Apply();

                // PRECHECKS
                // Administrators group has 1 entry on the Root.
                Assert.AreEqual(1, Providers.Instance.SecurityHandler.GetExplicitEntries(2, new[] { 7 }).Count);
                // Visitor has no any permission.
                Assert.IsFalse(securityHandler.HasPermission(User.Visitor, 6, PermissionType.See));
                Assert.IsFalse(securityHandler.HasPermission(User.Visitor, 1000, PermissionType.See));
                // There is no break.
                Assert.IsTrue(securityHandler.IsEntityInherited(6));
                Assert.IsTrue(securityHandler.IsEntityInherited(1000));

                // ACTION
                new SecurityInstaller(Providers.Instance.SecurityHandler, Providers.Instance.StorageSchema,
                                      Providers.Instance.DataStore).InstallDefaultSecurityStructure(initialData);

                // ASSERT
                // Administrators group has an entry on the Root.
                Assert.AreEqual(1, Providers.Instance.SecurityHandler.GetExplicitEntries(2, new[] { 7 }).Count);
                // Visitor has See permission on both contents.
                Assert.IsTrue(securityHandler.HasPermission(User.Visitor, 6, PermissionType.See));
                Assert.IsTrue(securityHandler.HasPermission(User.Visitor, 1000, PermissionType.See));
                // The second content is not inherited.
                Assert.IsTrue(securityHandler.IsEntityInherited(6));
                Assert.IsFalse(securityHandler.IsEntityInherited(1000));
            });
        }