コード例 #1
0
        public void Get_All_Paged_Users_For_Group_With_Filter()
        {
            UserGroup userGroup = UserGroupBuilder.CreateUserGroup();

            UserService.Save(userGroup);

            IUser[] users = UserBuilder.CreateMulipleUsers(10).ToArray();
            for (int i = 0; i < 10;)
            {
                users[i].AddGroup(userGroup.ToReadOnlyGroup());
                i = i + 2;
            }

            for (int i = 0; i < 10;)
            {
                users[i].Name = "blah" + users[i].Name;
                i             = i + 3;
            }

            UserService.Save(users);

            long totalRecs;
            IEnumerable <IUser> found = UserService.GetAll(0, 2, out totalRecs, "username", Direction.Ascending, userGroups: new[] { userGroup.Alias }, filter: "blah");

            Assert.AreEqual(2, found.Count());
            Assert.AreEqual(2, totalRecs);
            Assert.AreEqual("test0", found.First().Username);
            Assert.AreEqual("test6", found.Last().Username);
        }
コード例 #2
0
        private UserGroup BuildImageGroup()
        {
            List <User> users = new List <User>();

            User imageLeader = new User("Kimi", "Imaging Team");

            myWorkflowGraph.AddNode(imageLeader);
            Edge newEdge = new As();

            myWorkflowGraph.AddEdge(imageLeader, leader, newEdge);

            users.Add(new User("Lacy", "Imaging Team"));
            users.Add(new User("Michael", "Imaging Team"));

            foreach (var curItem in users)
            {
                myWorkflowGraph.AddNode(curItem);
                newEdge = new As();
                myWorkflowGraph.AddEdge(curItem, employee, newEdge);
            }

            UserGroup group = new UserGroup("Imaging", GroupTypeEnum.Executive.ToString(), "Imaging Team");

            myWorkflowGraph.AddNode(group);

            UserGroupBuilder.BuildUserGroup(myWorkflowGraph, group, imageLeader, users);
            return(group);
        }
コード例 #3
0
        private UserGroup BuildTestGroup()
        {
            List <User> users = new List <User>();

            User testLeader = new User("Nina", "Test Center");

            myWorkflowGraph.AddNode(testLeader);
            Edge newEdge = new As();

            myWorkflowGraph.AddEdge(testLeader, leader, newEdge);

            users.Add(new User("Oakley", "Test Center"));
            users.Add(new User("Pol", "Test Center"));
            users.Add(new User("Queen", "Test Center"));

            foreach (var curItem in users)
            {
                myWorkflowGraph.AddNode(curItem);
                newEdge = new As();
                myWorkflowGraph.AddEdge(curItem, employee, newEdge);
            }

            UserGroup group = new UserGroup("Test Center", GroupTypeEnum.Executive.ToString(), "Test Center");

            myWorkflowGraph.AddNode(group);

            UserGroupBuilder.BuildUserGroup(myWorkflowGraph, group, testLeader, users);
            return(group);
        }
コード例 #4
0
        private UserGroup BuildUIGroup()
        {
            List <User> users = new List <User>();

            User uiLeader = new User("Emilia", "UI Team");

            myWorkflowGraph.AddNode(uiLeader);
            Edge newEdge = new As();

            myWorkflowGraph.AddEdge(uiLeader, leader, newEdge);

            users.Add(new User("Florence", "UI Team"));
            users.Add(new User("Grant", "UI Team"));

            foreach (var curItem in users)
            {
                myWorkflowGraph.AddNode(curItem);
                newEdge = new As();
                myWorkflowGraph.AddEdge(curItem, employee, newEdge);
            }

            UserGroup group = new UserGroup("UI", GroupTypeEnum.Executive.ToString(), "UI Team");

            myWorkflowGraph.AddNode(group);

            UserGroupBuilder.BuildUserGroup(myWorkflowGraph, group, uiLeader, users);
            return(group);
        }
コード例 #5
0
        private UserGroup BuildExamGroup()
        {
            List <User> users = new List <User>();

            User examLeader = new User("Haden", "Exam Team");

            myWorkflowGraph.AddNode(examLeader);
            Edge newEdge = new As();

            myWorkflowGraph.AddEdge(examLeader, leader, newEdge);

            users.Add(new User("Isaac", "Exam Team"));
            users.Add(new User("Jackson", "Exam Team"));

            foreach (var curItem in users)
            {
                myWorkflowGraph.AddNode(curItem);
                newEdge = new As();
                myWorkflowGraph.AddEdge(curItem, employee, newEdge);
            }

            UserGroup group = new UserGroup("Exam", GroupTypeEnum.Executive.ToString(), "Exam Team");

            myWorkflowGraph.AddNode(group);

            UserGroupBuilder.BuildUserGroup(myWorkflowGraph, group, examLeader, users);
            return(group);
        }
コード例 #6
0
        public void Can_Perform_Get_On_UserGroupRepository()
        {
            // Arrange
            IScopeProvider provider = ScopeProvider;

            using (IScope scope = provider.CreateScope())
            {
                UserGroupRepository repository = CreateRepository(provider);

                UserGroup userGroup = UserGroupBuilder.CreateUserGroup();
                repository.Save(userGroup);
                scope.Complete();

                // Act
                IUserGroup resolved = repository.Get((int)userGroup.Id);

                // Assert
                Assert.That(resolved.Id, Is.EqualTo(userGroup.Id));
                //// Assert.That(resolved.CreateDate, Is.GreaterThan(DateTime.MinValue));
                //// Assert.That(resolved.UpdateDate, Is.GreaterThan(DateTime.MinValue));
                Assert.That(resolved.Name, Is.EqualTo(userGroup.Name));
                Assert.That(resolved.Alias, Is.EqualTo(userGroup.Alias));
                Assert.That(resolved.Permissions, Is.EqualTo(userGroup.Permissions));
            }
        }
コード例 #7
0
        public void Can_Perform_Delete_On_UserGroupRepository()
        {
            IScopeProvider provider = ScopeProvider;

            using (IScope scope = provider.CreateScope())
            {
                UserGroupRepository repository = CreateRepository(provider);

                UserGroup userGroup = UserGroupBuilder.CreateUserGroup();

                // Act
                repository.Save(userGroup);

                int id = userGroup.Id;

                var repository2 = new UserGroupRepository((IScopeAccessor)provider, global::Umbraco.Cms.Core.Cache.AppCaches.Disabled, LoggerFactory.CreateLogger <UserGroupRepository>(), LoggerFactory, ShortStringHelper);
                repository2.Delete(userGroup);
                scope.Complete();

                IUserGroup resolved = repository2.Get((int)id);

                // Assert
                Assert.That(resolved, Is.Null);
            }
        }
コード例 #8
0
        private UserGroup BuildCSEGroup()
        {
            List <User> users = new List <User>();

            User cseLeader = new User("Alice", "CSE Department");

            myWorkflowGraph.AddNode(cseLeader);
            Edge newEdge = new As();

            myWorkflowGraph.AddEdge(cseLeader, leader, newEdge);

            users.Add(new User("Bob", "CSE Department"));
            users.Add(new User("Clare", "CSE Department"));

            foreach (var curItem in users)
            {
                myWorkflowGraph.AddNode(curItem);
                newEdge = new As();
                myWorkflowGraph.AddEdge(curItem, employee, newEdge);
            }

            UserGroup cseGroup = new UserGroup("CSE", GroupTypeEnum.Executive.ToString(), "CSE Team");

            myWorkflowGraph.AddNode(cseGroup);

            UserGroupBuilder.BuildUserGroup(myWorkflowGraph, cseGroup, cseLeader, users);
            return(cseGroup);
        }
コード例 #9
0
        public void Get_Groups_Assigned_To_Section()
        {
            // Arrange
            IScopeProvider provider = ScopeProvider;

            using (IScope scope = provider.CreateScope())
            {
                UserGroupRepository repository = CreateRepository(provider);

                UserGroup user1 = UserGroupBuilder.CreateUserGroup(suffix: "1", allowedSections: new[] { "test1" });
                UserGroup user2 = UserGroupBuilder.CreateUserGroup(suffix: "2", allowedSections: new[] { "test2" });
                UserGroup user3 = UserGroupBuilder.CreateUserGroup(suffix: "3", allowedSections: new[] { "test1" });
                repository.Save(user1);
                repository.Save(user2);
                repository.Save(user3);
                scope.Complete();

                // Act
                IEnumerable <IUserGroup> groups = repository.GetGroupsAssignedToSection("test1");

                // Assert
                Assert.AreEqual(2, groups.Count());
                string[] names = groups.Select(x => x.Name).ToArray();
                Assert.IsTrue(names.Contains("Test Group1"));
                Assert.IsFalse(names.Contains("Test Group2"));
                Assert.IsTrue(names.Contains("Test Group3"));
            }
        }
コード例 #10
0
 public void updates_are_batched()
 {
     using (var session = SessionFactory.OpenStatelessSession())
         using (var transaction = session.BeginTransaction())
         {
             session.SetBatchSize(2);
             var builder = new UserGroupBuilder();
             var group1  = builder.Build();
             var group2  = builder.Build();
             var group3  = builder.Build();
             var group4  = builder.Build();
             session.Insert(group1);
             session.Insert(group2);
             session.Insert(group3);
             session.Insert(group4);
             group1.Name = group1.Name + "2";
             group2.Name = group2.Name + "2";
             group3.Name = group3.Name + "2";
             group4.Name = group4.Name + "2";
             session.Update(group1);
             session.Update(group2);
             Logger.Info("the first batch of 2 update statements has been sent to the database");
             session.Update(group3);
             session.Update(group4);
             Logger.Info("the second batch of 2 update statements has been sent to the database, before the session is flushed");
             transaction.Commit();
         }
 }
コード例 #11
0
ファイル: AccountantTests.cs プロジェクト: Allors/demo
        public void TestEmployeesCanRead()
        {
            var employeeRole = new Roles(this.Session).Employee;

            var employees = new UserGroupBuilder(this.Session)
                .WithName("Employees")
                .Build();

            var john = new PersonBuilder(this.Session).WithFirstName("John").WithLastName("Doe").Build();
            employees.AddMember(john);

            var invoice = new InvoiceBuilder(this.Session).Build();

            var singleton = Singleton.Instance(this.Session);
            var defaultSecurityToken = singleton.DefaultSecurityToken;

            var accessControl = new AccessControlBuilder(this.Session)
                .WithRole(employeeRole)
                .WithObject(defaultSecurityToken)
                .WithSubjectGroup(employees)
                .Build();

            var acl = new AccessControlList(invoice, john);

            acl.CanRead(Invoice.Meta.Total).ShouldBeTrue();
        }
コード例 #12
0
        public void Can_Perform_Update_On_UserGroupRepository()
        {
            // Arrange
            IScopeProvider provider = ScopeProvider;

            using (IScope scope = provider.CreateScope())
            {
                UserGroupRepository repository = CreateRepository(provider);

                UserGroup userGroup = UserGroupBuilder.CreateUserGroup();
                repository.Save(userGroup);

                // Act
                IUserGroup resolved = repository.Get((int)userGroup.Id);
                resolved.Name        = "New Name";
                resolved.Permissions = new[] { "Z", "Y", "X" };
                repository.Save(resolved);
                scope.Complete();
                IUserGroup updatedItem = repository.Get((int)userGroup.Id);

                // Assert
                Assert.That(updatedItem.Id, Is.EqualTo(resolved.Id));
                Assert.That(updatedItem.Name, Is.EqualTo(resolved.Name));
                Assert.That(updatedItem.Permissions, Is.EqualTo(resolved.Permissions));
            }
        }
コード例 #13
0
        private UserGroup CreateTestUserGroup(string alias = "testGroup", string name = "Test Group")
        {
            string[]  permissions = "ABCDEFGHIJ1234567".ToCharArray().Select(x => x.ToString()).ToArray();
            UserGroup userGroup   = UserGroupBuilder.CreateUserGroup(alias, name, permissions: permissions);

            UserService.Save(userGroup);

            return(userGroup);
        }
コード例 #14
0
        private IUserGroup[] CreateAndCommitMultipleUserGroups(IUserGroupRepository repository)
        {
            UserGroup userGroup1 = UserGroupBuilder.CreateUserGroup(suffix: "1");
            UserGroup userGroup2 = UserGroupBuilder.CreateUserGroup(suffix: "2");
            UserGroup userGroup3 = UserGroupBuilder.CreateUserGroup(suffix: "3");

            repository.Save(userGroup1);
            repository.Save(userGroup2);
            repository.Save(userGroup3);

            return(new IUserGroup[] { userGroup1, userGroup2, userGroup3 });
        }
コード例 #15
0
        private UserGroup BuildInterfaceGroup()
        {
            List <User> users = new List <User>();

            User interLeader = new User("Dave", "Interface");

            myWorkflowGraph.AddNode(interLeader);
            Edge newEdge = new As();

            myWorkflowGraph.AddEdge(interLeader, leader, newEdge);

            UserGroup interGroup = new UserGroup("Interface", GroupTypeEnum.Executive.ToString(), "Interface Team");

            myWorkflowGraph.AddNode(interGroup);

            UserGroupBuilder.BuildUserGroup(myWorkflowGraph, interGroup, interLeader, users);
            return(interGroup);
        }
コード例 #16
0
        public void manipulating_cached_collection_updates_both_database_and_cache()
        {
            var newGroup = new UserGroupBuilder().Build();

            using (var session = CreateSession())
                using (var transaction = session.BeginTransaction())
                {
                    var user = session.Get <User>(_user1.Id);
                    user.AddUserGroup(newGroup);
                    Logger.Info("this causes 2 insert statements");
                    transaction.Commit();
                }

            using (var session = CreateSession())
                using (var transaction = session.BeginTransaction())
                {
                    var user = session.Get <User>(_user1.Id);
                    Logger.Info("this doesn't cause a select statement");
                    Assert.IsTrue(user.UserGroups.Contains(newGroup));
                    transaction.Commit();
                }

            using (var session = CreateSession())
                using (var transaction = session.BeginTransaction())
                {
                    Logger.Info("this session should cause 2 delete statements, and one select statement for the usergroup's user collection, which isn't cached");
                    var user  = session.Get <User>(_user1.Id);
                    var group = session.Get <UserGroup>(newGroup.Id);
                    user.RemoveUserGroup(group);
                    session.Delete(group);
                    transaction.Commit();
                }

            using (var session = CreateSession())
                using (var transaction = session.BeginTransaction())
                {
                    var user = session.Get <User>(_user1.Id);
                    Logger.Info("this causes a select because the object is no longer in the cache");
                    Assert.IsNull(session.Get <UserGroup>(newGroup.Id));
                    Logger.Info("this doesn't cause a select statement");
                    Assert.AreEqual(0, user.UserGroups.Count(g => g.Id == newGroup.Id));
                    transaction.Commit();
                }
        }
コード例 #17
0
        public void Can_Perform_Add_On_UserGroupRepository()
        {
            // Arrange
            IScopeProvider provider = ScopeProvider;

            using (IScope scope = provider.CreateScope())
            {
                UserGroupRepository repository = CreateRepository(provider);

                UserGroup userGroup = UserGroupBuilder.CreateUserGroup();

                // Act
                repository.Save(userGroup);
                scope.Complete();

                // Assert
                Assert.That(userGroup.HasIdentity, Is.True);
            }
        }
コード例 #18
0
        private void BuildUserGroup()
        {
            List <UserGroup> userGroups =
                new List <UserGroup> {
                BuildCSEGroup(), BuildInterfaceGroup(), BuildRDGroup(), BuildTestGroup()
            };

            User gmLeader = new User("Sanders", "Siemens Healthineer");

            myWorkflowGraph.AddNode(gmLeader);
            Edge newEdge = new As();

            myWorkflowGraph.AddEdge(gmLeader, leader, newEdge);

            UserGroup group = new UserGroup("Healthineer", GroupTypeEnum.Executive.ToString(), "Siemens Healthineer");

            myWorkflowGraph.AddNode(group);

            UserGroupBuilder.BuildUserGroup(myWorkflowGraph, group, gmLeader, new List <User>(), userGroups);
        }
コード例 #19
0
        private UserGroup BuildRDGroup()
        {
            List <UserGroup> userGroups = new List <UserGroup> {
                BuildUIGroup(), BuildExamGroup(), BuildImageGroup()
            };

            User rdLeader = new User("Rafael", "RD Department");

            myWorkflowGraph.AddNode(rdLeader);
            Edge newEdge = new As();

            myWorkflowGraph.AddEdge(rdLeader, leader, newEdge);

            UserGroup group = new UserGroup("RD", GroupTypeEnum.Executive.ToString(), "RD Department");

            myWorkflowGraph.AddNode(group);

            UserGroupBuilder.BuildUserGroup(myWorkflowGraph, group, rdLeader, new List <User>(), userGroups);
            return(group);
        }
コード例 #20
0
        public void GivenNoAccessControlWhenCreatingAnAccessControlWithoutARoleThenAccessControlIsInvalid()
        {
            var userGroup     = new UserGroupBuilder(this.Session).WithName("UserGroup").Build();
            var securityToken = new SecurityTokenBuilder(this.Session).Build();

            securityToken.AddAccessControl(new AccessControlBuilder(this.Session)
                                           .WithSubjectGroup(userGroup)
                                           .Build());

            var validation = this.Session.Derive(false);

            Assert.True(validation.HasErrors);
            Assert.Equal(1, validation.Errors.Length);

            var derivationError = validation.Errors[0];

            Assert.Equal(1, derivationError.Relations.Length);
            Assert.Equal(typeof(DerivationErrorRequired), derivationError.GetType());
            Assert.Equal(M.AccessControl.Role, derivationError.Relations[0].RoleType);
        }
コード例 #21
0
        public void GivenAnotherUserGroupAndAnAccessControlledObjectWhenGettingTheAccessListThenUserHasAccessToThePermissionsInTheRole()
        {
            var readOrganisationName = this.FindPermission(M.Organisation.Name, Operations.Read);
            var databaseRole         = new RoleBuilder(this.Session).WithName("Role").WithPermission(readOrganisationName).Build();

            var person = new PersonBuilder(this.Session).WithFirstName("John").WithLastName("Doe").Build();

            new UserGroupBuilder(this.Session).WithName("Group").WithMember(person).Build();
            var anotherUserGroup = new UserGroupBuilder(this.Session).WithName("AnotherGroup").Build();

            this.Session.Derive(true);
            this.Session.Commit();

            new AccessControlBuilder(this.Session).WithSubjectGroup(anotherUserGroup).WithRole(databaseRole).Build();

            this.Session.Commit();

            var sessions = new ISession[] { this.Session };

            foreach (var session in sessions)
            {
                session.Commit();

                var organisation = new OrganisationBuilder(session).WithName("Organisation").Build();

                var token = new SecurityTokenBuilder(session).Build();
                organisation.AddSecurityToken(token);

                var role          = (Role)session.Instantiate(new Roles(this.Session).FindBy(M.Role.Name, "Role"));
                var accessControl = (AccessControl)session.Instantiate(role.AccessControlsWhereRole.First);
                token.AddAccessControl(accessControl);

                Assert.IsFalse(this.Session.Derive().HasErrors);

                var accessList = new AccessControlList(organisation, person);

                Assert.IsFalse(accessList.CanRead(M.Organisation.Name));

                session.Rollback();
            }
        }
コード例 #22
0
        public void Can_Verify_Fresh_Entity_Is_Not_Dirty()
        {
            // Arrange
            IScopeProvider provider = ScopeProvider;

            using (IScope scope = provider.CreateScope())
            {
                UserGroupRepository repository = CreateRepository(provider);

                UserGroup userGroup = UserGroupBuilder.CreateUserGroup();
                repository.Save(userGroup);
                scope.Complete();

                // Act
                IUserGroup resolved = repository.Get((int)userGroup.Id);
                bool       dirty    = ((UserGroup)resolved).IsDirty();

                // Assert
                Assert.That(dirty, Is.False);
            }
        }
コード例 #23
0
ファイル: AccessControlTests.cs プロジェクト: whesius/allors
        public void GivenNoAccessControlWhenCreatingAAccessControlWithoutARoleThenAccessControlIsInvalid()
        {
            var userGroup = new UserGroupBuilder(this.DatabaseSession).WithName("UserGroup").Build();
            var securityToken = new SecurityTokenBuilder(this.DatabaseSession).Build();

            new AccessControlBuilder(this.DatabaseSession)
                .WithSubjectGroup(userGroup)
                .WithObject(securityToken)
                .Build();

            var derivationLog = this.DatabaseSession.Derive();

            Assert.IsTrue(derivationLog.HasErrors);
            Assert.AreEqual(1, derivationLog.Errors.Length);

            var derivationError = derivationLog.Errors[0];

            Assert.AreEqual(1, derivationError.Relations.Length);
            Assert.AreEqual(typeof(DerivationErrorRequired), derivationError.GetType());
            Assert.AreEqual((RoleType)AccessControls.Meta.Role, derivationError.Relations[0].RoleType);
        }
コード例 #24
0
        public void Can_Perform_Multiple_Adds_On_UserGroupRepository()
        {
            // Arrange
            IScopeProvider provider = ScopeProvider;

            using (IScope scope = provider.CreateScope())
            {
                UserGroupRepository repository = CreateRepository(provider);

                UserGroup userGroup1 = UserGroupBuilder.CreateUserGroup(suffix: "1");
                UserGroup userGroup2 = UserGroupBuilder.CreateUserGroup(suffix: "2");

                // Act
                repository.Save(userGroup1);

                repository.Save(userGroup2);
                scope.Complete();

                // Assert
                Assert.That(userGroup1.HasIdentity, Is.True);
                Assert.That(userGroup2.HasIdentity, Is.True);
            }
        }
コード例 #25
0
    public void Is_Built_Correctly()
    {
        // Arrange
        const int    testId             = 10;
        const string testAlias          = "test";
        const string testName           = "Test";
        const int    testUserCount      = 11;
        const string testIcon           = "icon";
        const string testPermissions    = "abc";
        const int    testStartContentId = 3;
        const int    testStartMediaId   = 8;

        var builder = new UserGroupBuilder();

        // Act
        var userGroup = builder
                        .WithId(testId)
                        .WithAlias(testAlias)
                        .WithName(testName)
                        .WithUserCount(testUserCount)
                        .WithIcon(testIcon)
                        .WithPermissions(testPermissions)
                        .WithStartContentId(testStartContentId)
                        .WithStartMediaId(testStartMediaId)
                        .Build();

        // Assert
        Assert.AreEqual(testId, userGroup.Id);
        Assert.AreEqual(testAlias, userGroup.Alias);
        Assert.AreEqual(testName, userGroup.Name);
        Assert.AreEqual(testUserCount, userGroup.UserCount);
        Assert.AreEqual(testIcon, userGroup.Icon);
        Assert.AreEqual(testPermissions.Length, userGroup.Permissions.Count());
        Assert.AreEqual(testStartContentId, userGroup.StartContentId);
        Assert.AreEqual(testStartMediaId, userGroup.StartMediaId);
    }
コード例 #26
0
        public void GivenAnotherUserGroupAndAnAccessControlledObjectWhenGettingTheAccessListThenUserHasAccessToThePermissionsInTheRole()
        {
            var readOrganisationName = this.FindPermission(Organisations.Meta.Name, Operation.Read);
            var databaseRole = new RoleBuilder(this.Session).WithName("Role").WithPermission(readOrganisationName).Build();

            var person = new PersonBuilder(this.Session).WithFirstName("John").WithLastName("Doe").Build();
            new UserGroupBuilder(this.Session).WithName("Group").WithMember(person).Build();
            var anotherUserGroup = new UserGroupBuilder(this.Session).WithName("AnotherGroup").Build();

            this.Session.Derive(true);
            this.Session.Commit();

            new AccessControlBuilder(this.Session).WithSubjectGroup(anotherUserGroup).WithRole(databaseRole).Build();

            this.Session.Commit();

            var sessions = new ISession[] { this.Session };
            foreach (var session in sessions)
            {
                session.Commit();

                var organisation = new OrganisationBuilder(session).WithName("Organisation").Build();

                var token = new SecurityTokenBuilder(session).Build();
                organisation.AddSecurityToken(token);

                var role = (Role)session.Instantiate(new Roles(this.Session).FindBy(Roles.Meta.Name, "Role"));
                var accessControl = (AccessControl)session.Instantiate(role.AccessControlsWhereRole.First);
                accessControl.AddObject(token);

                Assert.IsFalse(this.Session.Derive().HasErrors);

                var accessList = new AccessControlList(organisation, person);

                Assert.IsFalse(accessList.CanRead(Organisations.Meta.Name));

                session.Rollback();
            }
        }
コード例 #27
0
        public void GivenAUserGroupWhenSettingTheTokenInTheWorkspaceAndGettingTheAccessListThenUserHasAccessToThePermissionsInTheRole()
        {
            var readOrganisationName = this.FindPermission(Organisations.Meta.Name, Operation.Read);
            var databaseRole = new RoleBuilder(this.DatabaseSession).WithName("Role").WithPermission(readOrganisationName).Build();

            var person = new PersonBuilder(this.DatabaseSession).WithFirstName("John").WithLastName("Doe").Build();
            var userGroup = new UserGroupBuilder(this.DatabaseSession).WithName("Group").WithMember(person).Build();

            this.DatabaseSession.Derive(true);
            this.DatabaseSession.Commit();

            new AccessControlBuilder(this.DatabaseSession).WithSubjectGroup(userGroup).WithRole(databaseRole).Build();

            this.DatabaseSession.Commit();

            var workspaceSession = this.CreateWorkspaceSession();

            var organisation = new OrganisationBuilder(workspaceSession).WithName("Organisation").Build();

            var token = new SecurityTokenBuilder(workspaceSession).Build();
            organisation.AddSecurityToken(token);

            var role = (Role)workspaceSession.Instantiate(new Roles(this.DatabaseSession).FindBy(Roles.Meta.Name, "Role"));
            var accessControl = (AccessControl)workspaceSession.Instantiate(role.AccessControlsWhereRole.First);
            accessControl.AddObject(token);

            Assert.IsFalse(this.DatabaseSession.Derive().HasErrors);

            var accessList = new AccessControlList(organisation, person);

            Assert.IsTrue(accessList.CanRead(Organisations.Meta.Name));
        }
コード例 #28
0
 public void SetUp() => _builder = new UserGroupBuilder();
コード例 #29
0
ファイル: InternalOrganisation.cs プロジェクト: Allors/apps
        public void AppsOnDeriveEmployeeUserGroups(IDerivation derivation)
        {
            var employeeUserGroupsByName = new Dictionary<string, UserGroup>();
            foreach (UserGroup userGroup in this.UserGroupsWhereParty)
            {
                employeeUserGroupsByName.Add(userGroup.Name, userGroup);
            }

            foreach (Role role in this.EmployeeRoles)
            {
                var userGroupName = string.Format("{0} for {1})", role.Name, this.Name);

                if (!employeeUserGroupsByName.ContainsKey(userGroupName))
                {
                    var userGroup = new UserGroupBuilder(this.Strategy.Session)
                        .WithName(userGroupName)
                        .WithParty(this)
                        .WithParent(role.UserGroupWhereRole)
                        .Build();

                    new AccessControlBuilder(this.Strategy.Session).WithRole(role).WithSubjectGroup(userGroup).WithObject(this.OwnerSecurityToken).Build();
                }
            }
        }