Exemple #1
0
        public void JoinRoleAndPermissionTest()
        {
            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role = SCObjectGenerator.PrepareRoleObject();

            SCObjectOperations.Instance.AddRole(role, application);

            SCPermission permission = SCObjectGenerator.PreparePermissionObject();

            SCObjectOperations.Instance.AddPermission(permission, application);

            SCRelationObject relation = SCObjectOperations.Instance.JoinRoleAndPermission(role, permission);

            role.ClearRelativeData();
            Assert.IsTrue(role.CurrentPermissions.ContainsKey(permission.ID));
            Assert.IsTrue(permission.CurrentRoles.ContainsKey(role.ID));

            SCObjectOperations.Instance.DisjoinRoleAndPermission(role, permission);

            role.ClearRelativeData();
            permission.ClearRelativeData();

            Assert.IsFalse(role.CurrentPermissions.ContainsKey(permission.ID));
            Assert.IsFalse(permission.CurrentRoles.ContainsKey(role.ID));
        }
Exemple #2
0
        public void DeletePermissionTest()
        {
            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role = SCObjectGenerator.PrepareRoleObject();

            SCObjectOperations.Instance.AddRole(role, application);

            SCPermission permission = SCObjectGenerator.PreparePermissionObject();

            SCObjectOperations.Instance.AddPermission(permission, application);

            SCRelationObject relation = SCObjectOperations.Instance.JoinRoleAndPermission(role, permission);

            SCObjectOperations.Instance.DeletePermission(permission);

            application.ClearRelativeData();
            role.ClearRelativeData();

            Console.WriteLine("Role permission count {0}, applicaiton permission count {1}",
                              role.CurrentPermissions.Count, application.CurrentPermissions.Count);

            Assert.AreEqual(0, role.CurrentPermissions.Count);
            Assert.AreEqual(0, application.CurrentPermissions.Count);
        }
Exemple #3
0
        public void SCQueryPermissionsByUserIDsSnapshotTest()
        {
            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role = SCObjectGenerator.PrepareRoleObject();

            SCObjectOperations.Instance.AddRole(role, application);

            SCPermission permission = SCObjectGenerator.PreparePermissionObject();

            SCObjectOperations.Instance.AddPermission(permission, application);

            SCRelationObject relation = SCObjectOperations.Instance.JoinRoleAndPermission(role, permission);

            SCUser user1 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1");

            SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot());

            SCObjectOperations.Instance.AddMemberToRole(user1, role);

            SchemaObjectCollection result = SCSnapshotAdapter.Instance.QueryPermissionsByUserIDs(new string[] { user1.ID }, false, DateTime.MinValue);

            Assert.IsTrue(result.Count > 0);

            Console.WriteLine(result[0].Properties.GetValue("Name", string.Empty));

            Assert.AreEqual(permission.ID, result[0].ID);
        }
Exemple #4
0
        public void AddMemberToRoleTest()
        {
            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role = SCObjectGenerator.PrepareRoleObject();

            SCObjectOperations.Instance.AddRole(role, application);

            SCUser user1 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1");
            SCUser user2 = SCObjectGenerator.PrepareUserObject("RU2", "User2", "RoleUser2");

            SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot());
            SCObjectOperations.Instance.AddUser(user2, SCOrganization.GetRoot());

            SCObjectOperations.Instance.AddMemberToRole(user1, role);
            SCObjectOperations.Instance.AddMemberToRole(user2, role);

            Assert.AreEqual(2, role.CurrentMembers.Count);
            Assert.IsTrue(role.CurrentMembers.ContainsKey(user1.ID));
            Assert.IsTrue(role.CurrentMembers.ContainsKey(user2.ID));

            Assert.IsTrue(user1.CurrentRoles.ContainsKey(role.ID));
            Assert.IsTrue(user2.CurrentRoles.ContainsKey(role.ID));
        }
Exemple #5
0
        public void InheritAclPermissionsTest()
        {
            //准备组织数据
            SCOrganization parent = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(parent, SCOrganization.GetRoot());

            //准备应用
            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role1 = SCObjectGenerator.PrepareRoleObject();

            //准备角色
            SCObjectOperations.Instance.AddRole(role1, application);

            //准备人员
            SCUser user1 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1");

            SCObjectOperations.Instance.AddUser(user1, parent);

            //将人员添加到角色
            SCObjectOperations.Instance.AddMemberToRole(user1, role1);

            SCRole role2 = SCObjectGenerator.PrepareRoleObject();

            //准备角色
            SCObjectOperations.Instance.AddRole(role2, application);

            //准备人员
            SCUser user2 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1");

            SCObjectOperations.Instance.AddUser(user2, parent);

            //将人员添加到角色
            SCObjectOperations.Instance.AddMemberToRole(user2, role2);

            //准备Container
            SCAclContainer container = new SCAclContainer(parent);

            container.Members.Add("AddChildren", role1);
            container.Members.Add("AddChildren", role2);

            SCObjectOperations.Instance.UpdateObjectAcl(container);

            SCOrganization organization = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(organization, parent);

            SCAclMemberCollection members = SCAclAdapter.Instance.LoadByContainerID(organization.ID, DateTime.MinValue);

            Assert.IsTrue(members.ContainsKey("AddChildren", role1.ID));
            Assert.AreEqual(SchemaObjectStatus.Normal, members["AddChildren", role1.ID].Status);

            Assert.IsTrue(members.ContainsKey("AddChildren", role2.ID));
            Assert.AreEqual(SchemaObjectStatus.Normal, members["AddChildren", role2.ID].Status);
        }
Exemple #6
0
        public void DeleteAclMemberTest()
        {
            //准备组织数据
            SCOrganization organization = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(organization, SCOrganization.GetRoot());

            //准备应用
            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role1 = SCObjectGenerator.PrepareRoleObject();

            //准备角色
            SCObjectOperations.Instance.AddRole(role1, application);

            //准备人员
            SCUser user1 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1");

            SCObjectOperations.Instance.AddUser(user1, organization);

            //将人员添加到角色
            SCObjectOperations.Instance.AddMemberToRole(user1, role1);

            SCRole role2 = SCObjectGenerator.PrepareRoleObject();

            //准备角色
            SCObjectOperations.Instance.AddRole(role2, application);

            //准备人员
            SCUser user2 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1");

            SCObjectOperations.Instance.AddUser(user2, organization);

            //将人员添加到角色
            SCObjectOperations.Instance.AddMemberToRole(user2, role2);

            //准备Container
            SCAclContainer container = new SCAclContainer(organization);

            container.Members.Add("AddChildren", role1);
            container.Members.Add("AddChildren", role2);

            SCObjectOperations.Instance.UpdateObjectAcl(container);

            Console.WriteLine("ContainerID: {0}", container.ContainerID);

            SCObjectOperations.Instance.DeleteRole(role1);
            SCObjectOperations.Instance.DeleteRole(role2);

            SCAclMemberCollection members = SCAclAdapter.Instance.LoadByContainerID(organization.ID, DateTime.MinValue);

            Assert.IsFalse(members.ContainsKey("AddChildren", role1.ID));
            Assert.IsFalse(members.ContainsKey("AddChildren", role2.ID));
        }
Exemple #7
0
        public void AddRoleTest()
        {
            Trace.CorrelationManager.ActivityId = UuidHelper.NewUuid();

            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role = SCObjectGenerator.PrepareRoleObject();

            SCObjectOperations.Instance.AddRole(role, application);

            application.CurrentRoles.ContainsKey(role.ID);
        }
Exemple #8
0
        public void DeleteRoleTest()
        {
            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role = SCObjectGenerator.PrepareRoleObject();

            SCObjectOperations.Instance.AddRole(role, application);

            Console.WriteLine("RoleID: {0}", role.ID);

            SCUser user1 = SCObjectGenerator.PrepareUserObject("RU1", "User1", "RoleUser1");
            SCUser user2 = SCObjectGenerator.PrepareUserObject("RU2", "User2", "RoleUser2");

            SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot());
            SCObjectOperations.Instance.AddUser(user2, SCOrganization.GetRoot());

            SCObjectOperations.Instance.AddMemberToRole(user1, role);
            SCObjectOperations.Instance.AddMemberToRole(user2, role);

            SCObjectAndRelationCollection relations = SCSnapshotAdapter.Instance.QueryRolesContainsMembers(new string[] { "Roles" }, new string[] { role.ID }, false, DateTime.MinValue);

            Assert.AreEqual(role.CurrentMembers.Count, relations.Count);

            SCObjectOperations.Instance.DeleteRole(role);

            Assert.AreEqual(0, application.CurrentRoles.Count);

            Assert.AreEqual(0, user1.CurrentRoles.Count);
            Assert.AreEqual(0, user2.CurrentRoles.Count);

            SCObjectAndRelationCollection relationDeleted = SCSnapshotAdapter.Instance.QueryRolesContainsMembers(new string[] { "Roles" }, new string[] { role.ID }, false, DateTime.MinValue);

            Assert.AreEqual(role.CurrentMembers.Count, relationDeleted.Count);

            SameContainerUserAndContainerSnapshotCollection containsUsers = UserAndContainerSnapshotAdapter.Instance.LoadByContainerID(role.ID);

            containsUsers.ForEach(u => Assert.AreEqual(SchemaObjectStatus.Deleted, u.Status));
        }
Exemple #9
0
        public void UpdateRoleRoleConditionTest()
        {
            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCRole role = SCObjectGenerator.PrepareRoleObject();

            SCObjectOperations.Instance.AddRole(role, application);

            SCConditionOwner owner = new SCConditionOwner()
            {
                OwnerID = role.ID
            };

            owner.Conditions.Add(new SCCondition()
            {
                OwnerID = role.ID, SortID = 0, Condition = "Users.Status == 1"
            });
            owner.Conditions.Add(new SCCondition()
            {
                OwnerID = role.ID, SortID = 1, Condition = "Users.Status == 3"
            });

            SCObjectOperations.Instance.UpdateRoleConditions(owner);

            SCConditionOwner ownerLoaded = SCConditionAdapter.Instance.Load(role.ID);

            Assert.AreEqual(owner.OwnerID, ownerLoaded.OwnerID);
            Assert.AreEqual("Default", ownerLoaded.Type);

            Assert.AreEqual(owner.Conditions.Count, ownerLoaded.Conditions.Count);

            for (int i = 0; i < owner.Conditions.Count; i++)
            {
                Assert.AreEqual(owner.Conditions[i].OwnerID, ownerLoaded.Conditions[i].OwnerID);
                Assert.AreEqual(owner.Conditions[i].Condition, ownerLoaded.Conditions[i].Condition);
            }
        }