コード例 #1
0
        public void TestDenyInheritanceFlagOnMultipleParents()
        {
            SecurityServiceBase srv = new TestSecurityService(Db);

            string collectionName       = "TestUserIsAdminCollection";
            string collectionDesciption = "Test collection description";
            string itemName             = "TestUserIsAdminItem";
            string itemDesciption       = "Test item description";

            AccessMode defaultAccess = GetDefaultPermissions();

            CFAccessDefinition ad1 = new CFAccessDefinition()
            {
                Name        = "Test 1",
                AccessModes = AccessMode.Write
            };

            CFAccessDefinition ad2 = new CFAccessDefinition()
            {
                Name        = "Test 2",
                AccessModes = AccessMode.Control | AccessMode.Append
            };

            CFAccessDefinition ad3 = new CFAccessDefinition()
            {
                Name        = "Test 3",
                AccessModes = AccessMode.Discover
            };

            CFAccessDefinition ad4 = new CFAccessDefinition()
            {
                Name        = "Test 4",
                AccessModes = AccessMode.Read | AccessMode.Write
            };

            int    entityType = mDh.Ets.GetEntityTypes(CFEntityType.eTarget.Items).FirstOrDefault().Id;
            CFItem i1         = mDh.CreateItem(mDh.Is, entityType, itemName, itemDesciption, true);

            entityType = mDh.Ets.GetEntityTypes(CFEntityType.eTarget.Collections).FirstOrDefault().Id;
            CFCollection c1 = mDh.CreateCollection(mDh.Cs, entityType, collectionName, collectionDesciption, true);

            entityType = mDh.Ets.GetEntityTypes(CFEntityType.eTarget.Items).FirstOrDefault().Id;
            CFItem i2 = mDh.CreateItem(mDh.Is, entityType, itemName, itemDesciption, true);

            entityType = mDh.Ets.GetEntityTypes(CFEntityType.eTarget.Collections).FirstOrDefault().Id;
            CFCollection c2 = mDh.CreateCollection(mDh.Cs, entityType, collectionName, collectionDesciption, true);

            List <CFAccessGroup> groups = new List <CFAccessGroup>()
            {
                new CFAccessGroup()
                {
                    AccessGuids = new List <Guid>()
                    {
                        Guid.Parse(Groups[0])
                    }, AccessDefinition = ad1
                },
            };

            c1.AccessGroups     = groups;
            c1.BlockInheritance = true;
            c1.Serialize();

            groups = new List <CFAccessGroup>()
            {
                new CFAccessGroup()
                {
                    AccessGuids = new List <Guid>()
                    {
                        Guid.Parse(Groups[1])
                    }, AccessDefinition = ad2
                },
                new CFAccessGroup()
                {
                    AccessGuids = new List <Guid>()
                    {
                        Guid.Parse(Groups[2])
                    }, AccessDefinition = ad3
                }
            };

            i2.AccessGroups     = groups;
            i2.BlockInheritance = true;
            i2.Serialize();

            groups = new List <CFAccessGroup>()
            {
                new CFAccessGroup()
                {
                    AccessGuids = new List <Guid>()
                    {
                        Guid.Parse(Groups[1])
                    }, AccessDefinition = ad4
                }
            };

            c2.AccessGroups = groups;
            c2.Serialize();

            i1.Serialize();

            c1.ChildMembers.Add(i1);
            i2.ChildMembers.Add(i1);
            c2.ChildMembers.Add(c1);
            Db.SaveChanges();

            AccessMode modes1 = srv.GetPermissions(Users[0].Guid, i1);
            AccessMode modes2 = srv.GetPermissions(Users[1].Guid, i1);
            AccessMode modes3 = srv.GetPermissions(Users[2].Guid, i1);
            AccessMode modes4 = srv.GetPermissions(Users[3].Guid, i1);

            Assert.AreEqual(ad1.AccessModes | ad3.AccessModes, modes1);
            Assert.AreEqual(ad1.AccessModes | ad2.AccessModes, modes2);
            Assert.AreEqual(ad2.AccessModes, modes3);
            Assert.AreEqual(ad2.AccessModes | ad3.AccessModes, modes4);

            modes1 = srv.GetPermissions(Users[0].Guid, i2);
            modes2 = srv.GetPermissions(Users[1].Guid, i2);
            modes3 = srv.GetPermissions(Users[2].Guid, i2);
            modes4 = srv.GetPermissions(Users[3].Guid, i2);

            Assert.AreEqual(ad3.AccessModes, modes1);
            Assert.AreEqual(ad2.AccessModes, modes2);
            Assert.AreEqual(ad2.AccessModes, modes3);
            Assert.AreEqual(ad2.AccessModes | ad3.AccessModes, modes4);

            modes1 = srv.GetPermissions(Users[0].Guid, c1);
            modes2 = srv.GetPermissions(Users[1].Guid, c1);
            modes3 = srv.GetPermissions(Users[2].Guid, c1);
            modes4 = srv.GetPermissions(Users[3].Guid, c1);

            Assert.AreEqual(ad1.AccessModes, modes1);
            Assert.AreEqual(ad1.AccessModes, modes2);
            Assert.AreEqual(AccessMode.None, modes3);
            Assert.AreEqual(AccessMode.None, modes4);

            modes1 = srv.GetPermissions(Users[0].Guid, c2);
            modes2 = srv.GetPermissions(Users[1].Guid, c2);
            modes3 = srv.GetPermissions(Users[2].Guid, c2);
            modes4 = srv.GetPermissions(Users[3].Guid, c2);

            Assert.AreEqual(defaultAccess, modes1);
            Assert.AreEqual(defaultAccess | ad4.AccessModes, modes2);
            Assert.AreEqual(defaultAccess | ad4.AccessModes, modes3);
            Assert.AreEqual(defaultAccess | ad4.AccessModes, modes4);
        }
コード例 #2
0
        public void Initialize()
        {
            mDh = new DatabaseHelper(true);

            SecurityServiceBase srv   = new TestSecurityService(Db);
            UserListService     ulSrv = new UserListService(Db);

            Users  = new List <TestUser>();
            Groups = new List <string>();

            // Create the users
            Users.Add(CreateUser(srv, "U1"));
            Users.Add(CreateUser(srv, "U2"));
            Users.Add(CreateUser(srv, "U3"));
            Users.Add(CreateUser(srv, "U4"));
            Db.SaveChanges();

            // Create the groups
            CFUserList ul = new CFUserList()
            {
                Name = "G1", Id = Guid.NewGuid()
            };

            ul.CFUserListEntries.Add(new CFUserListEntry()
            {
                UserId = Guid.Parse(Users[0].Guid)
            });
            ul.CFUserListEntries.Add(new CFUserListEntry()
            {
                UserId = Guid.Parse(Users[1].Guid)
            });
            ulSrv.EditEntityGroup(ul);
            Groups.Add(ul.Id.ToString());

            ul = new CFUserList()
            {
                Name = "G2", Id = Guid.NewGuid()
            };
            ul.CFUserListEntries.Add(new CFUserListEntry()
            {
                UserId = Guid.Parse(Users[1].Guid)
            });
            ul.CFUserListEntries.Add(new CFUserListEntry()
            {
                UserId = Guid.Parse(Users[2].Guid)
            });
            ul.CFUserListEntries.Add(new CFUserListEntry()
            {
                UserId = Guid.Parse(Users[3].Guid)
            });
            ulSrv.EditEntityGroup(ul);
            Groups.Add(ul.Id.ToString());

            ul = new CFUserList()
            {
                Name = "G3", Id = Guid.NewGuid()
            };
            ul.CFUserListEntries.Add(new CFUserListEntry()
            {
                UserId = Guid.Parse(Users[0].Guid)
            });
            ul.CFUserListEntries.Add(new CFUserListEntry()
            {
                UserId = Guid.Parse(Users[3].Guid)
            });
            ulSrv.EditEntityGroup(ul);
            Groups.Add(ul.Id.ToString());

            Db.SaveChanges();
        }