예제 #1
0
        public void LoadCurrentContainerAndPermissionsTest()
        {
            SCAclAdapter adapter = SCAclAdapter.Instance;

            SCObjectGenerator.PreareTestOguObjectForDelete();
            var parent1 = (SCOrganization)SchemaObjectAdapter.Instance.LoadByCodeName("Organizations", "groupHQ", SchemaObjectStatus.Normal, DateTime.MinValue);

            var role1 = (SCRole)SchemaObjectAdapter.Instance.LoadByCodeName("Roles", "系统管理员", SchemaObjectStatus.Normal, DateTime.MinValue);

            var role2 = (SCRole)SchemaObjectAdapter.Instance.LoadByCodeName("Roles", "系统维护员", SchemaObjectStatus.Normal, DateTime.MinValue);

            var container = new PC.Permissions.SCAclContainer(parent1);

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

            container.Members.Add("UpdateChildren", role2);
            container.Members.Add("EditPermissionsOfChildren", role2);
            container.Members.Add("AddChildren", role2);

            PC.Executors.SCObjectOperations.Instance.UpdateObjectAcl(container);

            var user = (SCUser)SchemaObjectAdapter.Instance.LoadByCodeName("Users", "fanhy", SchemaObjectStatus.Normal, DateTime.MinValue);

            Thread.Sleep(2000);

            var result = adapter.LoadCurrentContainerAndPermissions(user.ID, new string[] { parent1.ID });

            Assert.IsTrue((from PC.Permissions.SCContainerAndPermission p in result where p.ContainerPermission == "AddChildren" && p.ContainerID == parent1.ID select p).Any());

            Assert.IsTrue((from PC.Permissions.SCContainerAndPermission p in result where p.ContainerPermission == "DeleteChildren" && p.ContainerID == parent1.ID select p).Any());
        }
예제 #2
0
        public void SimpleConditionTest()
        {
            SCConditionOwner owner = new SCConditionOwner();

            SCUser user1 = SCObjectGenerator.PrepareUserObject();

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

            SCUser user2 = SCObjectGenerator.PrepareUserObject();

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

            owner.OwnerID = UuidHelper.NewUuidString();

            string expression = string.Format("Users.CodeName == \"{0}\"", user2.CodeName);

            owner.Conditions.Add(new SCCondition()
            {
                Description = "基本测试", Condition = expression
            });

            SCConditionCalculator calculator = new SCConditionCalculator();

            IEnumerable <SchemaObjectBase> result = calculator.Calculate(owner);

            Assert.AreEqual(1, result.Count());

            foreach (SchemaObjectBase obj in result)
            {
                Console.WriteLine("ID:{0}, Name: {1}", obj.ID, obj.Properties.GetValue("Name", string.Empty));
            }
        }
예제 #3
0
        public void AddSecretaryToUserExecutorTest()
        {
            SCUser secretary = SCObjectGenerator.PrepareUserObject("罗", "剑", "罗剑" + UuidHelper.NewUuidString());

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

            SCUser user1 = SCObjectGenerator.PrepareUserObject();

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

            SCSecretaryRelation sr = SCObjectOperations.Instance.AddSecretaryToUser(secretary, user1);

            Assert.AreEqual(secretary.SchemaType, sr.ContainerSchemaType);
            Assert.AreEqual(user1.SchemaType, sr.MemberSchemaType);

            SCUser user2 = SCObjectGenerator.PrepareUserObject();

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

            SCObjectOperations.Instance.AddSecretaryToUser(secretary, user2);

            Assert.IsTrue(user1.CurrentSecretaries.ContainsKey(secretary.ID));
            Assert.IsTrue(user2.CurrentSecretaries.ContainsKey(secretary.ID));

            Assert.IsTrue(secretary.CurrentSecretariesOf.ContainsKey(user1.ID));
            Assert.IsTrue(secretary.CurrentSecretariesOf.ContainsKey(user2.ID));
        }
예제 #4
0
        public void AddUserToGroupExecutorTest()
        {
            SCGroup group = SCObjectGenerator.PrepareGroupObject();

            SCObjectOperations.Instance.AddGroup(group, SCOrganization.GetRoot());

            SCUser user1 = SCObjectGenerator.PrepareUserObject();

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

            SCMemberRelation mr = SCObjectOperations.Instance.AddUserToGroup(user1, group);

            Assert.AreEqual(group.SchemaType, mr.ContainerSchemaType);
            Assert.AreEqual(user1.SchemaType, mr.MemberSchemaType);

            SCUser user2 = SCObjectGenerator.PrepareUserObject();

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

            SCObjectOperations.Instance.AddUserToGroup(user2, group);

            Assert.AreEqual(2, group.CurrentUsers.Count);
            Assert.IsTrue(group.CurrentUsers.ContainsKey(user1.ID));
            Assert.IsTrue(group.CurrentUsers.ContainsKey(user2.ID));

            Assert.IsTrue(user1.CurrentGroups.ContainsKey(group.ID));
            Assert.IsTrue(user2.CurrentGroups.ContainsKey(group.ID));

            SameContainerUserAndContainerSnapshotCollection ugSnapshot = UserAndContainerSnapshotAdapter.Instance.LoadByContainerID(group.ID);

            Assert.IsTrue(ugSnapshot.ContainsKey(user1.ID));
            Assert.IsTrue(ugSnapshot.ContainsKey(user2.ID));
        }
예제 #5
0
        public void UpdateOrganizationNameTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCOrganization newOrg = SCObjectGenerator.PrepareOrganizationObject();
            SCUser         user   = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.AddOrganization(newOrg, root);

            SchemaObjectBase objLoaded = SchemaObjectAdapter.Instance.Load(newOrg.ID);

            Assert.AreEqual(newOrg.Name, objLoaded.Properties.GetValue("Name", string.Empty));
            Assert.IsTrue(objLoaded.CurrentParents.Count > 0);
            Assert.AreEqual(root.ID, objLoaded.CurrentParents[0].ID);

            SCObjectOperations.Instance.AddUser(user, newOrg);

            newOrg.ClearRelativeData();

            newOrg.Name = "ChangedOrgName";

            SCObjectOperations.Instance.UpdateOrganization(newOrg);

            Console.WriteLine("Org ID: {0}, User ID: {1}", newOrg.ID, user.ID);
        }
예제 #6
0
        public void SetUserDefaultOrganizationTest()
        {
            SCUser user = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.AddUser(user, null);

            SCUser userLoaded = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID);

            SCOrganization root = SCOrganization.GetRoot();

            SCOrganization org1 = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(org1, root);

            SCOrganization org2 = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(org2, root);

            SCObjectOperations.Instance.AddUserToOrganization(user, org1);
            SCObjectOperations.Instance.AddUserToOrganization(user, org2);

            SCObjectOperations.Instance.SetUserDefaultOrganization(user, org2);

            SCRelationObject relation1 = SchemaRelationObjectAdapter.Instance.Load(org1.ID, userLoaded.ID);
            SCRelationObject relation2 = SchemaRelationObjectAdapter.Instance.Load(org2.ID, userLoaded.ID);

            Assert.IsFalse(relation1.Default);
            Assert.IsTrue(relation2.Default);
        }
예제 #7
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);
        }
예제 #8
0
        public void ChangeOwnerTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCUser user = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.AddUser(user, root);

            SCOrganization sidelineOrg = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(sidelineOrg, root);

            //设置了兼职
            SCObjectOperations.Instance.AddUser(user, sidelineOrg);

            SCObjectOperations.Instance.ChangeOwner(user, sidelineOrg);

            user = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID);

            user.ClearRelativeData();
            sidelineOrg.ClearRelativeData();
            root.ClearRelativeData();

            Console.WriteLine(user.OwnerName);
            Assert.AreEqual(sidelineOrg.ID, user.OwnerID);
        }
예제 #9
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));
        }
예제 #10
0
        public void GenerateUserAndContainerSnapshotTest()
        {
            TestRoleData roleData = SCObjectGenerator.PrepareTestRoleWithOrgAndGroup();

            SCConditionCalculator calculator = new SCConditionCalculator();

            ProcessProgress.Clear();
            ProcessProgress.Current.RegisterResponser(TestProgressResponser.Instance);

            calculator.GenerateUserAndContainerSnapshot(new List <ISCUserContainerObject>()
            {
                roleData.Group
            });
            calculator.GenerateUserAndContainerSnapshot(new List <ISCUserContainerObject>()
            {
                roleData.Role
            });

            SameContainerUserAndContainerSnapshotCollection snapshot = UserAndContainerSnapshotAdapter.Instance.LoadByContainerID(roleData.Role.ID);

            Console.WriteLine(roleData.ToString());
            Console.Error.WriteLine("Error: {0}", ProcessProgress.Current.GetDefaultError());
            Console.WriteLine("Output: {0}", ProcessProgress.Current.GetDefaultOutput());

            Assert.IsTrue(snapshot.ContainsKey(roleData.UserInGroup.ID));
            Assert.IsTrue(snapshot.ContainsKey(roleData.UserInOrg.ID));
            Assert.IsTrue(snapshot.ContainsKey(roleData.UserInRole.ID));
            Assert.IsTrue(snapshot.ContainsKey(roleData.UserInConditionRole.ID));
            Assert.IsTrue(snapshot.ContainsKey(roleData.UserInConditionGroup.ID));
        }
예제 #11
0
        public void QueryDirectChildrenTest()
        {
            SCUser user = SCObjectGenerator.PrepareUserObject();

            string ticks = DateTime.Now.Ticks.ToString();

            SCOrganization parent3 = SCObjectGenerator.PrepareOrganizationObject("第三组织" + ticks, "第三组织");

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

            SCOrganization parent32 = SCObjectGenerator.PrepareOrganizationObject("第三.二组织" + ticks, "第三.二组织");

            SCObjectOperations.Instance.AddOrganization(parent32, parent3);

            SCUser user3 = SCObjectGenerator.PrepareUserObject("李", "琪" + ticks, "liqi");

            SCObjectOperations.Instance.AddUser(user3, parent32);

            string path = string.Format(@"第三组织{0}\第三.二组织{0}\李琪{0}", ticks);

            SCObjectAndRelationCollection result = SCSnapshotAdapter.Instance.QueryObjectAndRelationByParentIDs(new string[0], new string[] { parent32.ID }, false, true, false, DateTime.MinValue);

            result.Sort((x, y) => (int)(x.InnerSort - y.InnerSort));

            result.FillDetails();

            Assert.IsTrue(result.Count > 0);

            Console.WriteLine(result[0].Detail.Properties.GetValue("Name", string.Empty));
            Assert.AreEqual(user3.ID, result[0].Detail.ID);
        }
예제 #12
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));
        }
예제 #13
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);
        }
예제 #14
0
        public void AddOrRemoveUserToGroupExecutorTest()
        {
            SCGroup group = SCObjectGenerator.PrepareGroupObject();

            SCObjectOperations.Instance.AddGroup(group, SCOrganization.GetRoot());

            SCUser user1 = SCObjectGenerator.PrepareUserObject();

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

            Console.WriteLine("UserID: {0}, GroupID: {1}", user1.ID, group.ID);

            SCMemberRelation mr = SCObjectOperations.Instance.AddUserToGroup(user1, group);

            SCObjectOperations.Instance.RemoveUserFromGroup(user1, group);

            // 确认删除
            Assert.IsFalse(group.CurrentMembersRelations.ContainsKey(user1.ID));
            Assert.IsFalse(user1.CurrentMemberOfRelations.ContainsKey(group.ID));

            SCObjectOperations.Instance.AddUserToGroup(user1, group);

            // 重置数据
            group.ClearRelativeData();
            user1.ClearRelativeData();

            // 确认又加回来了
            Assert.IsTrue(group.CurrentUsers.ContainsKey(user1.ID));
            Assert.IsTrue(user1.CurrentGroups.ContainsKey(group.ID));

            Console.WriteLine("UserID: {0}, GroupID: {1}", user1.ID, group.ID);
        }
예제 #15
0
        public void MoveUserNotChangeOwnerTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCUser user = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.AddUser(user, root);

            SCOrganization sidelineOrg = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(sidelineOrg, root);

            //设置了兼职
            SCObjectOperations.Instance.AddUser(user, sidelineOrg);

            SCOrganization targetOrg = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(targetOrg, root);

            SCObjectOperations.Instance.MoveObjectToOrganization(sidelineOrg, user, targetOrg);

            user = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID);

            user.ClearRelativeData();
            targetOrg.ClearRelativeData();
            sidelineOrg.ClearRelativeData();
            root.ClearRelativeData();

            Assert.IsTrue(user.CurrentParents.ContainsKey(targetOrg.ID));
            Assert.IsTrue(targetOrg.CurrentChildren.ContainsKey(user.ID));
            Assert.IsFalse(sidelineOrg.CurrentChildren.ContainsKey(user.ID));
            Assert.AreNotEqual(targetOrg.ID, user.OwnerID);
        }
예제 #16
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);
        }
예제 #17
0
        public void MergeUserInGroupExecutorTest()
        {
            // 准备4位用户。User1位状态不变,User2待删除,User3新增加,User4复活
            SCGroup group = SCObjectGenerator.PrepareGroupObject();

            SCObjectOperations.Instance.AddGroup(group, SCOrganization.GetRoot());

            SCUser user1 = SCObjectGenerator.PrepareUserObject();

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

            SCMemberRelation mr = SCObjectOperations.Instance.AddUserToGroup(user1, group);

            Assert.AreEqual(group.SchemaType, mr.ContainerSchemaType);
            Assert.AreEqual(user1.SchemaType, mr.MemberSchemaType);

            SCUser user2 = SCObjectGenerator.PrepareUserObject();

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

            SCObjectOperations.Instance.AddUserToGroup(user2, group);

            SCUser user3 = SCObjectGenerator.PrepareUserObject();

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

            SCUser user4 = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.AddUser(user4, SCOrganization.GetRoot());
            SCObjectOperations.Instance.AddUserToGroup(user4, group);
            SCObjectOperations.Instance.RemoveUserFromGroup(user4, group);

            user4.Status = SchemaObjectStatus.Normal;

            SchemaObjectCollection needMergeUsers = new SchemaObjectCollection()
            {
                user1, user3, user4
            };

            UserAndContainerSnapshotAdapter.Instance.Merge(group.ID, group.SchemaType, needMergeUsers);

            Console.WriteLine("Group ID: {0}", group.ID);

            SameContainerUserAndContainerSnapshotCollection ugSnapshot = UserAndContainerSnapshotAdapter.Instance.LoadByContainerID(group.ID);

            Assert.IsTrue(ugSnapshot.ContainsKey(user1.ID));
            Assert.AreEqual(SchemaObjectStatus.Normal, ugSnapshot[user1.ID].Status);

            Assert.IsTrue(ugSnapshot.ContainsKey(user2.ID));
            Assert.AreEqual(SchemaObjectStatus.Deleted, ugSnapshot[user2.ID].Status);

            Assert.IsTrue(ugSnapshot.ContainsKey(user3.ID));
            Assert.AreEqual(SchemaObjectStatus.Normal, ugSnapshot[user3.ID].Status);

            Assert.IsTrue(ugSnapshot.ContainsKey(user4.ID));
            Assert.AreEqual(SchemaObjectStatus.Normal, ugSnapshot[user4.ID].Status);
        }
예제 #18
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));
        }
예제 #19
0
        public void GetRoleUsersTest()
        {
            TestRoleData roleData = SCObjectGenerator.PrepareTestRoleWithOrgAndGroup();

            SchemaObjectCollection users = roleData.Role.GetCurrentUsers();

            Assert.IsTrue(users.ContainsKey(roleData.UserInGroup.ID));
            Assert.IsTrue(users.ContainsKey(roleData.UserInOrg.ID));
            Assert.IsTrue(users.ContainsKey(roleData.UserInRole.ID));
        }
예제 #20
0
        public void DeleteApplicationTest()
        {
            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCObjectOperations.Instance.DeleteApplication(application);

            SCApplication appLoaded = (SCApplication)SchemaObjectAdapter.Instance.Load(application.ID);

            Assert.AreEqual(SchemaObjectStatus.Deleted, appLoaded.Status);
        }
예제 #21
0
        public void DeleteUserExecutorTest()
        {
            SCUser user = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.AddUser(user, null);

            SCUser userLoaded = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID);

            SCObjectOperations.Instance.DeleteUser(userLoaded, null, false);

            userLoaded = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID);

            Assert.AreEqual(SchemaObjectStatus.Deleted, userLoaded.Status);
        }
예제 #22
0
        public void GenerateAllUserAndContainerSnapshotTest()
        {
            ProcessProgress.Clear();
            ProcessProgress.Current.RegisterResponser(TestProgressResponser.Instance);

            TestRoleData roleData = SCObjectGenerator.PrepareTestRoleWithOrgAndGroup();

            SCConditionCalculator calculator = new SCConditionCalculator();

            calculator.GenerateAllUserAndContainerSnapshot();

            Console.Error.WriteLine("Error: {0}", ProcessProgress.Current.GetDefaultError());
            Console.WriteLine("Output: {0}", ProcessProgress.Current.GetDefaultOutput());
        }
예제 #23
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);
        }
예제 #24
0
        public void AddPermissionTest()
        {
            Trace.CorrelationManager.ActivityId = UuidHelper.NewUuid();

            SCApplication application = SCObjectGenerator.PrepareApplicationObject();

            SCObjectOperations.Instance.AddApplication(application);

            SCPermission permission = SCObjectGenerator.PreparePermissionObject();

            SCObjectOperations.Instance.AddPermission(permission, application);

            application.CurrentPermissions.ContainsKey(permission.ID);
        }
예제 #25
0
        public void AddOrganizationTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCOrganization newOrg = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(newOrg, root);

            SchemaObjectBase objLoaded = SchemaObjectAdapter.Instance.Load(newOrg.ID);

            Assert.AreEqual(newOrg.Name, objLoaded.Properties.GetValue("Name", string.Empty));
            Assert.IsTrue(objLoaded.CurrentParents.Count > 0);
            Assert.AreEqual(root.ID, objLoaded.CurrentParents[0].ID);
        }
예제 #26
0
        public void DeleteConditionsContainerTest()
        {
            SCUser userInGroup;
            SCUser userNotInGroup;

            SCGroup group = SCObjectGenerator.PrepareGroupWithConditions(out userInGroup, out userNotInGroup);

            Console.WriteLine("Group ID: {0}", group.ID);

            SCObjectOperations.Instance.DeleteGroup(group, null, false);

            SCConditionOwner owner = SCConditionAdapter.Instance.Load(group.ID);

            owner.Conditions.ForEach(c => Assert.AreEqual(SchemaObjectStatus.Deleted, c.Status));
        }
예제 #27
0
        public void SCObjectSnapshotUpdateSqlTest()
        {
            SCUser user = SCObjectGenerator.PrepareUserObject();

            SchemaObjectAdapter.Instance.MergeExistsObjectInfo(user);

            string sql = VersionSnapshotUpdateSqlBuilder.Instance.ToUpdateSql(user, ORMapping.GetMappingInfo(user.GetType()));

            Console.WriteLine(sql);

            SCActionContext.Current.DoActions(() => SCSnapshotBasicAdapter.Instance.UpdateCurrentSnapshot(user, user.Schema.SnapshotTable, SnapshotModeDefinition.IsInSnapshot));

            DataRowView drv = SCSnapshotBasicAdapter.Instance.Load(user.Schema.Name, user.ID);

            Assert.IsNotNull(drv);
        }
예제 #28
0
        public void SCObjectSnapshotLoadByIDTest()
        {
            SCUser user = SCObjectGenerator.PrepareUserObject();

            string codeName = UuidHelper.NewUuidString();

            user.Properties.SetValue("CodeName", codeName);

            SCActionContext.Current.DoActions(() => SchemaObjectAdapter.Instance.Update(user));

            SchemaObjectBase obj =
                SCSnapshotBasicAdapter.Instance.LoadByID(user.SchemaType, SnapshotQueryIDType.CodeName, codeName);

            Assert.AreEqual(user.ID, obj.ID);
            Assert.AreEqual(codeName, obj.Properties.GetValue("CodeName", string.Empty));
        }
예제 #29
0
        public void AddUserOperationTest()
        {
            Trace.CorrelationManager.ActivityId = UuidHelper.NewUuid();

            SCUser user = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.DoOperation(SCObjectOperationMode.Add, user, null);

            SCUser userLoaded = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID);

            Assert.AreEqual(user.ID, userLoaded.ID);

            SCOperationLog log = SCOperationLogAdapter.Instance.LoadByResourceID(user.ID).FirstOrDefault();

            Assert.IsNotNull(log);
            Assert.AreEqual(Trace.CorrelationManager.ActivityId.ToString(), log.CorrelationID);
        }
예제 #30
0
        public void AddGroupExecutorTest()
        {
            Trace.CorrelationManager.ActivityId = UuidHelper.NewUuid();

            SCGroup group = SCObjectGenerator.PrepareGroupObject();

            SCObjectOperations.Instance.AddGroup(group, SCOrganization.GetRoot());

            SCGroup groupLoaded = (SCGroup)SchemaObjectAdapter.Instance.Load(group.ID);

            Assert.AreEqual(group.ID, groupLoaded.ID);

            SCOperationLog log = SCOperationLogAdapter.Instance.LoadByResourceID(group.ID).FirstOrDefault();

            Assert.IsNotNull(log);
            Assert.AreEqual(Trace.CorrelationManager.ActivityId.ToString(), log.CorrelationID);
        }