示例#1
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));
        }
示例#2
0
        private void DoDelete(string[] keys)
        {
            try
            {
                Util.EnsureOperationSafe();

                var actor        = SCObjectOperations.InstanceWithPermissions;
                var adapter      = SchemaObjectAdapter.Instance;
                var errorAdapter = new ListErrorAdapter(this.notice.Errors);
                var root         = SCOrganization.GetRoot();

                var objects = DbUtil.LoadAndCheckObjects("组织", errorAdapter, keys);

                try
                {
                    actor.DeleteObjectsRecursively(objects, root);
                }
                catch (Exception ex)
                {
                    this.notice.AddErrorInfo(ex.Message);
                    MCS.Web.Library.WebUtility.ShowClientError(ex);
                }

                this.InnerRefreshList();
            }
            catch (Exception ex)
            {
                this.notice.AddErrorInfo(ex);
                MCS.Web.Library.WebUtility.ShowClientError(ex);
            }
        }
示例#3
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);
        }
示例#4
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));
        }
示例#5
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);
        }
示例#6
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);
        }
示例#7
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);
        }
示例#8
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);
        }
示例#9
0
        public void UpdateUserImage()
        {
            var userImagePropName = "PhotoKey";

            SCUser user = SCObjectGenerator.PrepareUserObject();

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

            ImageProperty image = ImageGenerator.PrepareImage();

            image.ResourceID = user.ID;

            Assert.IsTrue(CanSerialize(image));

            SCObjectOperations.Instance.UpdateObjectImageProperty(user, userImagePropName, image);

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

            Assert.IsNotNull(userLoad);

            var imageLoad = JSONSerializerExecute.Deserialize <ImageProperty>(userLoad.Properties[userImagePropName].StringValue);
            MaterialContentCollection mcc = MaterialContentAdapter.Instance.Load(builder => builder.AppendItem("CONTENT_ID", imageLoad.ID));

            Assert.AreEqual(image.Name, imageLoad.Name);
            Assert.IsNotNull(mcc);
            Assert.AreEqual(1, mcc.Count);
            Assert.AreEqual(image.Content.ContentData.Length, mcc[0].ContentData.Length);

            SCObjectOperations.Instance.UpdateObjectImageProperty(user, userImagePropName, null);
            userLoad = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID);

            Assert.AreEqual("", userLoad.Properties[userImagePropName].StringValue);
        }
示例#10
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);
        }
示例#11
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));
        }
示例#12
0
        private static Dictionary <string, SCSimpleObject> PrepareParentsList(string navOu)
        {
            Dictionary <string, SCSimpleObject> result = null;

            if (navOu != SCOrganization.RootOrganizationID)
            {
                Dictionary <string, SCSimpleObjectCollection> parents = PC.Adapters.SCSnapshotAdapter.Instance.LoadAllParentsInfo(true, navOu);

                if (parents != null && parents.ContainsKey(navOu))
                {
                    Dictionary <string, SCSimpleObject> queue = parents[navOu].ToDictionary();

                    result = parents[navOu].ToDictionary();
                }
            }
            else
            {
                SCOrganization root = SCOrganization.GetRoot();

                result = new Dictionary <string, SCSimpleObject>()
                {
                    { root.ID, root.ToSimpleObject() }
                };
            }

            return(result);
        }
示例#13
0
        protected override void OnPreRender(EventArgs e)
        {
            if (string.IsNullOrEmpty(this.lastVisitOrg.Value) == false)
            {
                this.Response.Redirect("OUExplorer.aspx?ou=" + Server.UrlEncode(this.lastVisitOrg.Value), true);
            }
            else
            {
                base.OnPreRender(e);

                SCOrganization root = SCOrganization.GetRoot();

                if (this.IsPostBack == false)
                {
                    this.navOUID.Value = WebUtility.GetRequestQueryString("ou", root.ID);
                }

                DeluxeTreeNode rootTreeNode = CreateTreeNode(root.ID, root.Name, root.DisplayName, string.Empty);

                rootTreeNode.Expanded = true;
                this.tree.Nodes.Add(rootTreeNode);

                rootTreeNode.ChildNodesLoadingType = ChildNodesLoadingTypeDefine.Normal;

                Dictionary <string, SCSimpleObject> parentsList = PrepareParentsList(this.navOUID.Value);

                PrepareTreeNodeRecursively(root.ToSimpleObject(), rootTreeNode, parentsList, Util.GetTime(), this.navOUID.Value);
            }
        }
示例#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 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));
            }
        }
示例#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 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);
        }
示例#20
0
        protected void GenRoots(object sender, EventArgs e)
        {
            var root = SCOrganization.GetRoot();

            for (int i = 0; i < 20; i++)
            {
                SCOrganization org = new SCOrganization();
                org.ID          = UuidHelper.NewUuidString();
                org.Name        = org.ID;
                org.DisplayName = org.ID;
                org.CreateDate  = DateTime.MinValue;
                org.CodeName    = org.ID;
                PC.Executors.SCObjectOperations.InstanceWithPermissions.AddOrganization(org, root);
            }
        }
示例#21
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);
        }
示例#22
0
        public void DeleteUserAndRelationExecutorTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCUser user = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.AddUser(user, root);

            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);

            userLoaded.AllParentRelations.ForEach(r => Assert.AreEqual(SchemaObjectStatus.Deleted, r.Status));
        }
        public void LoadSimpleObjectTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCOrganization newOrg = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(newOrg, root);

            root.ClearRelativeData();
            SCSimpleObjectCollection simpleChildren = root.CurrentChildren.ToSimpleObjects();

            SCSimpleObject simpleObj = simpleChildren.Find(obj => obj.ID == newOrg.ID);

            Console.WriteLine(simpleObj.DisplayName);

            Assert.IsNotNull(simpleObj);
            Assert.AreEqual(simpleObj.Name, simpleObj.DisplayName);
        }
示例#24
0
        public void RemoveUserFromGroupExecutorTest()
        {
            SCGroup group = SCObjectGenerator.PrepareGroupObject();

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

            SCUser user1 = SCObjectGenerator.PrepareUserObject();

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

            SCObjectOperations.Instance.AddUserToGroup(user1, group);

            SCObjectOperations.Instance.RemoveUserFromGroup(user1, group);

            Assert.IsTrue(group.AllMembersRelations.ContainsKey(user1.ID));
            Assert.IsFalse(group.CurrentMembersRelations.ContainsKey(user1.ID));

            Assert.IsTrue(user1.AllMemberOfRelations.ContainsKey(group.ID));
            Assert.IsFalse(user1.CurrentMemberOfRelations.ContainsKey(group.ID));
        }
示例#25
0
        public static SCGroup PrepareGroupWithConditions(out SCUser userInGroup, out SCUser userNotInGroup)
        {
            userInGroup = PrepareUserObject();
            SCObjectOperations.Instance.AddUser(userInGroup, SCOrganization.GetRoot());

            userNotInGroup = PrepareUserObject();
            SCObjectOperations.Instance.AddUser(userNotInGroup, SCOrganization.GetRoot());

            SCGroup group = PrepareGroupObject();

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

            SCConditionOwner owner = new SCConditionOwner();

            owner.OwnerID = group.ID;
            owner.Conditions.Add(new SCCondition(string.Format("Users.CodeName == \"{0}\"", userInGroup.CodeName)));

            SCConditionAdapter.Instance.UpdateConditions(owner);

            return(group);
        }
示例#26
0
        public void TestOfAdminAddRoleMembers()
        {
            this.InitAdmins();

            var mainApp = this.CreateDefaultApp();

            var mainRole = this.CreateDefaultRole();

            Facade.AddUser(new SCUser()
            {
                ID = Guid.NewGuid().ToString(), Name = "范海燕", CodeName = "fanhy", DisplayName = "fanyh"
            }, SCOrganization.GetRoot());

            var fanhy = GetSCUserByCodeName("fanhy");

            FacadeWithAcl.AddMemberToRole(fanhy, mainRole);

            var members = PC.Adapters.SCMemberRelationAdapter.Instance.LoadByContainerID(mainRole.ID);

            Assert.IsTrue((from m in members where m.ID == fanhy.ID select m).Any());
        }
示例#27
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));
        }
示例#28
0
        public void MoveGroupTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCGroup group = SCObjectGenerator.PrepareGroupObject();

            SCObjectOperations.Instance.AddGroup(group, root);

            SCOrganization newOrg = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(newOrg, root);

            SCObjectOperations.Instance.MoveObjectToOrganization(null, group, newOrg);

            group.ClearRelativeData();
            newOrg.ClearRelativeData();
            root.ClearRelativeData();

            Assert.IsTrue(group.CurrentParents.ContainsKey(newOrg.ID));
            Assert.IsTrue(newOrg.CurrentChildren.ContainsKey(group.ID));
            Assert.IsFalse(root.CurrentChildren.ContainsKey(group.ID));
        }
示例#29
0
        public void QueryGroupMembersTest()
        {
            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);

            SCObjectAndRelationCollection result = SCSnapshotAdapter.Instance.QueryContainerContainsUsersByIDs(new string[] { "Groups" }, new string[] { group.ID }, false, DateTime.MinValue);

            Assert.IsTrue(result.Count > 0);

            result.FillDetails();

            Console.WriteLine(result[0].Detail.Properties.GetValue("Name", string.Empty));
            Console.WriteLine(result[0].ParentID);
            Assert.AreEqual(user1.ID, result[0].Detail.ID);
        }
示例#30
0
        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            SCOrganization root = SCOrganization.GetRoot();

            DeluxeTreeNode rootTreeNode = CreateTreeNode(root.ID, root.Name, root.DisplayName, string.Empty, root.SchemaType);

            rootTreeNode.Expanded     = true;
            rootTreeNode.ShowCheckBox = false;
            this.tree.Nodes.Add(rootTreeNode);

            rootTreeNode.ChildNodesLoadingType = ChildNodesLoadingTypeDefine.Normal;
            string[] schemaTypes = this.Request.QueryString.GetValues("schemaType") ?? DefaultSearchSchemas;

            HashSet <string> union = new HashSet <string>(schemaTypes);

            union.UnionWith(alwaysVisibleSchemaObjects);

            SCObjectAndRelationCollection relations = SCSnapshotAdapter.Instance.QueryObjectAndRelationByParentIDs(union.ToArray(), new string[] { root.ID }, false, false, false, Util.GetTime());

            BindObjectsToTreeNodes(relations, rootTreeNode.Nodes, schemaTypes);
        }