From 3043163747b13ce1942b2e55977cf7c5417021de Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sun, 18 Sep 2016 21:19:48 -0400 Subject: Add column restrictions to custom project roles --- tests/units/Model/ColumnRestrictionModelTest.php | 100 +++++++ tests/units/Model/ProjectPermissionModelTest.php | 332 +++++++++++++++++++++ tests/units/Model/ProjectPermissionTest.php | 332 --------------------- tests/units/Model/ProjectRoleModelTest.php | 32 +- .../Model/ProjectRoleRestrictionModelTest.php | 96 ++++++ tests/units/Model/TaskFinderModelTest.php | 1 + 6 files changed, 560 insertions(+), 333 deletions(-) create mode 100644 tests/units/Model/ColumnRestrictionModelTest.php create mode 100644 tests/units/Model/ProjectPermissionModelTest.php delete mode 100644 tests/units/Model/ProjectPermissionTest.php create mode 100644 tests/units/Model/ProjectRoleRestrictionModelTest.php (limited to 'tests/units/Model') diff --git a/tests/units/Model/ColumnRestrictionModelTest.php b/tests/units/Model/ColumnRestrictionModelTest.php new file mode 100644 index 00000000..6f66c258 --- /dev/null +++ b/tests/units/Model/ColumnRestrictionModelTest.php @@ -0,0 +1,100 @@ +container); + $projectRoleModel = new ProjectRoleModel($this->container); + $columnRestrictionModel = new ColumnRestrictionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); + $this->assertEquals(1, $projectRoleModel->create(1, 'my-custom-role')); + $this->assertEquals(1, $columnRestrictionModel->create(1, 1, 2, ColumnRestrictionModel::RULE_BLOCK_TASK_CREATION)); + } + + public function testRemove() + { + $projectModel = new ProjectModel($this->container); + $projectRoleModel = new ProjectRoleModel($this->container); + $projectRoleRestrictionModel = new ColumnRestrictionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); + $this->assertEquals(1, $projectRoleModel->create(1, 'my-custom-role')); + $this->assertEquals(1, $projectRoleRestrictionModel->create(1, 1, 2, ColumnRestrictionModel::RULE_ALLOW_TASK_OPEN_CLOSE)); + $this->assertTrue($projectRoleRestrictionModel->remove(1)); + $this->assertFalse($projectRoleRestrictionModel->remove(1)); + } + + public function testGetById() + { + $projectModel = new ProjectModel($this->container); + $projectRoleModel = new ProjectRoleModel($this->container); + $projectRoleRestrictionModel = new ColumnRestrictionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); + $this->assertEquals(1, $projectRoleModel->create(1, 'my-custom-role')); + $this->assertEquals(1, $projectRoleRestrictionModel->create(1, 1, 2, ColumnRestrictionModel::RULE_ALLOW_TASK_CREATION)); + + $restriction = $projectRoleRestrictionModel->getById(1, 1); + $this->assertEquals(ColumnRestrictionModel::RULE_ALLOW_TASK_CREATION, $restriction['rule']); + $this->assertEquals(1, $restriction['project_id']); + $this->assertEquals(1, $restriction['restriction_id']); + $this->assertEquals('Ready', $restriction['column_title']); + } + + public function testGetAll() + { + $projectModel = new ProjectModel($this->container); + $projectRoleModel = new ProjectRoleModel($this->container); + $projectRoleRestrictionModel = new ColumnRestrictionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); + $this->assertEquals(1, $projectRoleModel->create(1, 'my-custom-role')); + $this->assertEquals(1, $projectRoleRestrictionModel->create(1, 1, 2, ColumnRestrictionModel::RULE_ALLOW_TASK_CREATION)); + + $restrictions = $projectRoleRestrictionModel->getAll(1); + $this->assertCount(1, $restrictions); + $this->assertEquals(ColumnRestrictionModel::RULE_ALLOW_TASK_CREATION, $restrictions[0]['rule']); + $this->assertEquals(1, $restrictions[0]['project_id']); + $this->assertEquals(1, $restrictions[0]['restriction_id']); + $this->assertEquals(1, $restrictions[0]['role_id']); + $this->assertEquals(2, $restrictions[0]['column_id']); + $this->assertEquals('Ready', $restrictions[0]['column_title']); + } + + public function testGetByRole() + { + $projectModel = new ProjectModel($this->container); + $projectRoleModel = new ProjectRoleModel($this->container); + $columnRestrictionModel = new ColumnRestrictionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); + $this->assertEquals(1, $projectRoleModel->create(1, 'my-custom-role')); + $this->assertEquals(1, $columnRestrictionModel->create(1, 1, 2, ColumnRestrictionModel::RULE_BLOCK_TASK_CREATION)); + + $restrictions = $columnRestrictionModel->getAllByRole(1, 'my-custom-role'); + $this->assertCount(1, $restrictions); + $this->assertEquals(ColumnRestrictionModel::RULE_BLOCK_TASK_CREATION, $restrictions[0]['rule']); + $this->assertEquals(1, $restrictions[0]['project_id']); + $this->assertEquals(1, $restrictions[0]['restriction_id']); + $this->assertEquals(1, $restrictions[0]['role_id']); + $this->assertEquals(2, $restrictions[0]['column_id']); + $this->assertEquals('my-custom-role', $restrictions[0]['role']); + } + + public function testGetRules() + { + $columnRestrictionModel = new ColumnRestrictionModel($this->container); + $rules = $columnRestrictionModel->getRules(); + + $this->assertCount(4, $rules); + $this->assertArrayHasKey(ColumnRestrictionModel::RULE_ALLOW_TASK_CREATION, $rules); + } +} diff --git a/tests/units/Model/ProjectPermissionModelTest.php b/tests/units/Model/ProjectPermissionModelTest.php new file mode 100644 index 00000000..3313cf2d --- /dev/null +++ b/tests/units/Model/ProjectPermissionModelTest.php @@ -0,0 +1,332 @@ +container); + $projectModel = new ProjectModel($this->container); + $groupModel = new GroupModel($this->container); + $groupMemberModel = new GroupMemberModel($this->container); + $groupRoleModel = new ProjectGroupRoleModel($this->container); + $userRoleModel = new ProjectUserRoleModel($this->container); + $projectPermissionModel = new ProjectPermissionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); + + $this->assertEquals(2, $userModel->create(array('username' => 'user1'))); + $this->assertEquals(3, $userModel->create(array('username' => 'user2'))); + $this->assertEquals(4, $userModel->create(array('username' => 'user3'))); + + $this->assertEquals(1, $groupModel->create('Group A')); + $this->assertTrue($groupMemberModel->addUser(1, 2)); + + $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MANAGER)); + + $this->assertEquals(array('user1', 'user2'), $projectPermissionModel->findUsernames(1, 'us')); + $this->assertEmpty($projectPermissionModel->findUsernames(1, 'a')); + $this->assertEmpty($projectPermissionModel->findUsernames(2, 'user')); + } + + public function testGetQueryByRole() + { + $userModel = new UserModel($this->container); + $projectModel = new ProjectModel($this->container); + $userRoleModel = new ProjectUserRoleModel($this->container); + $projectPermission = new ProjectPermissionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); + $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2'))); + $this->assertEquals(3, $projectModel->create(array('name' => 'Project 3'))); + + $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); + $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); + $this->assertEquals(4, $userModel->create(array('username' => 'user 3'))); + $this->assertEquals(5, $userModel->create(array('username' => 'user 4'))); + + $this->assertTrue($userRoleModel->addUser(1, 2, Role::PROJECT_MANAGER)); + $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MANAGER)); + $this->assertTrue($userRoleModel->addUser(1, 4, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(1, 5, Role::PROJECT_MEMBER)); + + $this->assertTrue($userRoleModel->addUser(2, 2, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(2, 3, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(2, 5, Role::PROJECT_MANAGER)); + + $this->assertTrue($userRoleModel->addUser(3, 4, Role::PROJECT_MANAGER)); + $this->assertTrue($userRoleModel->addUser(3, 5, Role::PROJECT_VIEWER)); + + $this->assertEmpty($projectPermission->getQueryByRole(array(), Role::PROJECT_MANAGER)->findAll()); + + $users = $projectPermission->getQueryByRole(array(1, 2), Role::PROJECT_MANAGER)->findAll(); + $this->assertCount(3, $users); + $this->assertEquals('user 1', $users[0]['username']); + $this->assertEquals('Project 1', $users[0]['project_name']); + $this->assertEquals('user 2', $users[1]['username']); + $this->assertEquals('Project 1', $users[1]['project_name']); + $this->assertEquals('user 4', $users[2]['username']); + $this->assertEquals('Project 2', $users[2]['project_name']); + + $users = $projectPermission->getQueryByRole(array(1), Role::PROJECT_MANAGER)->findAll(); + $this->assertCount(2, $users); + $this->assertEquals('user 1', $users[0]['username']); + $this->assertEquals('Project 1', $users[0]['project_name']); + $this->assertEquals('user 2', $users[1]['username']); + $this->assertEquals('Project 1', $users[1]['project_name']); + + $users = $projectPermission->getQueryByRole(array(1, 2, 3), Role::PROJECT_MEMBER)->findAll(); + $this->assertCount(4, $users); + $this->assertEquals('user 3', $users[0]['username']); + $this->assertEquals('Project 1', $users[0]['project_name']); + $this->assertEquals('user 4', $users[1]['username']); + $this->assertEquals('Project 1', $users[1]['project_name']); + $this->assertEquals('user 1', $users[2]['username']); + $this->assertEquals('Project 2', $users[2]['project_name']); + $this->assertEquals('user 2', $users[3]['username']); + $this->assertEquals('Project 2', $users[3]['project_name']); + + $users = $projectPermission->getQueryByRole(array(1, 2, 3), Role::PROJECT_VIEWER)->findAll(); + $this->assertCount(1, $users); + $this->assertEquals('user 4', $users[0]['username']); + $this->assertEquals('Project 3', $users[0]['project_name']); + } + + public function testEverybodyAllowed() + { + $projectModel = new ProjectModel($this->container); + $projectPermission = new ProjectPermissionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); + $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2', 'is_everybody_allowed' => 1))); + + $this->assertFalse($projectPermission->isEverybodyAllowed(1)); + $this->assertTrue($projectPermission->isEverybodyAllowed(2)); + } + + public function testIsUserAllowed() + { + $userModel = new UserModel($this->container); + $projectModel = new ProjectModel($this->container); + $groupModel = new GroupModel($this->container); + $groupRoleModel = new ProjectGroupRoleModel($this->container); + $groupMemberModel = new GroupMemberModel($this->container); + $userRoleModel = new ProjectUserRoleModel($this->container); + $projectPermission = new ProjectPermissionModel($this->container); + + $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); + $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); + $this->assertEquals(4, $userModel->create(array('username' => 'user 3'))); + $this->assertEquals(5, $userModel->create(array('username' => 'user 4'))); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); + $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2'))); + + $this->assertEquals(1, $groupModel->create('Group A')); + + $this->assertTrue($groupMemberModel->addUser(1, 2)); + $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_VIEWER)); + + $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(1, 4, Role::PROJECT_MANAGER)); + + $this->assertTrue($projectPermission->isUserAllowed(1, 2)); + $this->assertTrue($projectPermission->isUserAllowed(1, 3)); + $this->assertTrue($projectPermission->isUserAllowed(1, 4)); + $this->assertFalse($projectPermission->isUserAllowed(1, 5)); + + $this->assertFalse($projectPermission->isUserAllowed(2, 2)); + $this->assertFalse($projectPermission->isUserAllowed(2, 3)); + $this->assertFalse($projectPermission->isUserAllowed(2, 4)); + $this->assertFalse($projectPermission->isUserAllowed(2, 5)); + } + + public function testIsAssignable() + { + $userModel = new UserModel($this->container); + $projectModel = new ProjectModel($this->container); + $groupModel = new GroupModel($this->container); + $groupRoleModel = new ProjectGroupRoleModel($this->container); + $groupMemberModel = new GroupMemberModel($this->container); + $userRoleModel = new ProjectUserRoleModel($this->container); + $projectPermission = new ProjectPermissionModel($this->container); + + $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); + $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); + $this->assertEquals(4, $userModel->create(array('username' => 'user 3'))); + $this->assertEquals(5, $userModel->create(array('username' => 'user 4'))); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); + $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2'))); + + $this->assertEquals(1, $groupModel->create('Group A')); + + $this->assertTrue($groupMemberModel->addUser(1, 2)); + $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_VIEWER)); + + $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(1, 4, Role::PROJECT_MANAGER)); + + $this->assertFalse($projectPermission->isAssignable(1, 2)); + $this->assertTrue($projectPermission->isAssignable(1, 3)); + $this->assertTrue($projectPermission->isAssignable(1, 4)); + $this->assertFalse($projectPermission->isAssignable(1, 5)); + + $this->assertFalse($projectPermission->isAssignable(2, 2)); + $this->assertFalse($projectPermission->isAssignable(2, 3)); + $this->assertFalse($projectPermission->isAssignable(2, 4)); + $this->assertFalse($projectPermission->isAssignable(2, 5)); + } + + public function testIsAssignableWhenUserIsDisabled() + { + $userModel = new UserModel($this->container); + $projectModel = new ProjectModel($this->container); + $userRoleModel = new ProjectUserRoleModel($this->container); + $projectPermission = new ProjectPermissionModel($this->container); + + $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); + $this->assertEquals(3, $userModel->create(array('username' => 'user 2', 'is_active' => 0))); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); + + $this->assertTrue($userRoleModel->addUser(1, 2, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); + + $this->assertTrue($projectPermission->isAssignable(1, 2)); + $this->assertFalse($projectPermission->isAssignable(1, 3)); + } + + public function testIsMember() + { + $userModel = new UserModel($this->container); + $projectModel = new ProjectModel($this->container); + $groupModel = new GroupModel($this->container); + $groupRoleModel = new ProjectGroupRoleModel($this->container); + $groupMemberModel = new GroupMemberModel($this->container); + $userRoleModel = new ProjectUserRoleModel($this->container); + $projectPermission = new ProjectPermissionModel($this->container); + + $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); + $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); + $this->assertEquals(4, $userModel->create(array('username' => 'user 3'))); + $this->assertEquals(5, $userModel->create(array('username' => 'user 4'))); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); + $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2'))); + + $this->assertEquals(1, $groupModel->create('Group A')); + + $this->assertTrue($groupMemberModel->addUser(1, 2)); + $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_VIEWER)); + + $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(1, 4, Role::PROJECT_MANAGER)); + + $this->assertTrue($projectPermission->isMember(1, 2)); + $this->assertTrue($projectPermission->isMember(1, 3)); + $this->assertTrue($projectPermission->isMember(1, 4)); + $this->assertFalse($projectPermission->isMember(1, 5)); + + $this->assertFalse($projectPermission->isMember(2, 2)); + $this->assertFalse($projectPermission->isMember(2, 3)); + $this->assertFalse($projectPermission->isMember(2, 4)); + $this->assertFalse($projectPermission->isMember(2, 5)); + } + + public function testGetActiveProjectIds() + { + $userModel = new UserModel($this->container); + $projectModel = new ProjectModel($this->container); + $userRoleModel = new ProjectUserRoleModel($this->container); + $projectPermission = new ProjectPermissionModel($this->container); + + $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); + $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); + $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2', 'is_active' => 0))); + + $this->assertTrue($userRoleModel->addUser(1, 2, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(2, 2, Role::PROJECT_VIEWER)); + $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_VIEWER)); + + $this->assertEmpty($projectPermission->getActiveProjectIds(1)); + $this->assertEquals(array(1), $projectPermission->getActiveProjectIds(2)); + $this->assertEquals(array(1), $projectPermission->getActiveProjectIds(3)); + } + + public function testGetProjectIds() + { + $userModel = new UserModel($this->container); + $projectModel = new ProjectModel($this->container); + $userRoleModel = new ProjectUserRoleModel($this->container); + $projectPermission = new ProjectPermissionModel($this->container); + + $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); + $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); + $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2', 'is_active' => 0))); + + $this->assertTrue($userRoleModel->addUser(1, 2, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(2, 2, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); + $this->assertTrue($userRoleModel->addUser(2, 3, Role::PROJECT_MEMBER)); + + $this->assertEmpty($projectPermission->getProjectIds(1)); + $this->assertEquals(array(1, 2), $projectPermission->getProjectIds(2)); + $this->assertEquals(array(1, 2), $projectPermission->getProjectIds(3)); + } + + public function testDuplicate() + { + $userModel = new UserModel($this->container); + $projectModel = new ProjectModel($this->container); + $groupModel = new GroupModel($this->container); + $groupMemberModel = new GroupMemberModel($this->container); + $groupRoleModel = new ProjectGroupRoleModel($this->container); + $userRoleModel = new ProjectUserRoleModel($this->container); + $projectPermission = new ProjectPermissionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); + $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2'))); + + $this->assertEquals(2, $userModel->create(array('username' => 'user 1', 'name' => 'User #1'))); + $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); + $this->assertEquals(4, $userModel->create(array('username' => 'user 3'))); + $this->assertEquals(5, $userModel->create(array('username' => 'user 4'))); + $this->assertEquals(6, $userModel->create(array('username' => 'user 5', 'name' => 'User #5'))); + + $this->assertEquals(1, $groupModel->create('Group C')); + $this->assertEquals(2, $groupModel->create('Group B')); + $this->assertEquals(3, $groupModel->create('Group A')); + + $this->assertTrue($groupMemberModel->addUser(1, 4)); + $this->assertTrue($groupMemberModel->addUser(2, 5)); + $this->assertTrue($groupMemberModel->addUser(3, 3)); + $this->assertTrue($groupMemberModel->addUser(3, 2)); + + $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_VIEWER)); + $this->assertTrue($groupRoleModel->addGroup(1, 3, Role::PROJECT_MANAGER)); + + $this->assertTrue($userRoleModel->addUser(1, 5, Role::PROJECT_MANAGER)); + $this->assertTrue($userRoleModel->addUser(1, 6, Role::PROJECT_MEMBER)); + + $this->assertTrue($projectPermission->duplicate(1, 2)); + + $this->assertCount(2, $userRoleModel->getUsers(2)); + $this->assertCount(3, $groupRoleModel->getUsers(2)); + } +} diff --git a/tests/units/Model/ProjectPermissionTest.php b/tests/units/Model/ProjectPermissionTest.php deleted file mode 100644 index a9f8ab04..00000000 --- a/tests/units/Model/ProjectPermissionTest.php +++ /dev/null @@ -1,332 +0,0 @@ -container); - $projectModel = new ProjectModel($this->container); - $groupModel = new GroupModel($this->container); - $groupMemberModel = new GroupMemberModel($this->container); - $groupRoleModel = new ProjectGroupRoleModel($this->container); - $userRoleModel = new ProjectUserRoleModel($this->container); - $projectPermissionModel = new ProjectPermissionModel($this->container); - - $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); - - $this->assertEquals(2, $userModel->create(array('username' => 'user1'))); - $this->assertEquals(3, $userModel->create(array('username' => 'user2'))); - $this->assertEquals(4, $userModel->create(array('username' => 'user3'))); - - $this->assertEquals(1, $groupModel->create('Group A')); - $this->assertTrue($groupMemberModel->addUser(1, 2)); - - $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MANAGER)); - - $this->assertEquals(array('user1', 'user2'), $projectPermissionModel->findUsernames(1, 'us')); - $this->assertEmpty($projectPermissionModel->findUsernames(1, 'a')); - $this->assertEmpty($projectPermissionModel->findUsernames(2, 'user')); - } - - public function testGetQueryByRole() - { - $userModel = new UserModel($this->container); - $projectModel = new ProjectModel($this->container); - $userRoleModel = new ProjectUserRoleModel($this->container); - $projectPermission = new ProjectPermissionModel($this->container); - - $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); - $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2'))); - $this->assertEquals(3, $projectModel->create(array('name' => 'Project 3'))); - - $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); - $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); - $this->assertEquals(4, $userModel->create(array('username' => 'user 3'))); - $this->assertEquals(5, $userModel->create(array('username' => 'user 4'))); - - $this->assertTrue($userRoleModel->addUser(1, 2, Role::PROJECT_MANAGER)); - $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MANAGER)); - $this->assertTrue($userRoleModel->addUser(1, 4, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(1, 5, Role::PROJECT_MEMBER)); - - $this->assertTrue($userRoleModel->addUser(2, 2, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(2, 3, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(2, 5, Role::PROJECT_MANAGER)); - - $this->assertTrue($userRoleModel->addUser(3, 4, Role::PROJECT_MANAGER)); - $this->assertTrue($userRoleModel->addUser(3, 5, Role::PROJECT_VIEWER)); - - $this->assertEmpty($projectPermission->getQueryByRole(array(), Role::PROJECT_MANAGER)->findAll()); - - $users = $projectPermission->getQueryByRole(array(1, 2), Role::PROJECT_MANAGER)->findAll(); - $this->assertCount(3, $users); - $this->assertEquals('user 1', $users[0]['username']); - $this->assertEquals('Project 1', $users[0]['project_name']); - $this->assertEquals('user 2', $users[1]['username']); - $this->assertEquals('Project 1', $users[1]['project_name']); - $this->assertEquals('user 4', $users[2]['username']); - $this->assertEquals('Project 2', $users[2]['project_name']); - - $users = $projectPermission->getQueryByRole(array(1), Role::PROJECT_MANAGER)->findAll(); - $this->assertCount(2, $users); - $this->assertEquals('user 1', $users[0]['username']); - $this->assertEquals('Project 1', $users[0]['project_name']); - $this->assertEquals('user 2', $users[1]['username']); - $this->assertEquals('Project 1', $users[1]['project_name']); - - $users = $projectPermission->getQueryByRole(array(1, 2, 3), Role::PROJECT_MEMBER)->findAll(); - $this->assertCount(4, $users); - $this->assertEquals('user 3', $users[0]['username']); - $this->assertEquals('Project 1', $users[0]['project_name']); - $this->assertEquals('user 4', $users[1]['username']); - $this->assertEquals('Project 1', $users[1]['project_name']); - $this->assertEquals('user 1', $users[2]['username']); - $this->assertEquals('Project 2', $users[2]['project_name']); - $this->assertEquals('user 2', $users[3]['username']); - $this->assertEquals('Project 2', $users[3]['project_name']); - - $users = $projectPermission->getQueryByRole(array(1, 2, 3), Role::PROJECT_VIEWER)->findAll(); - $this->assertCount(1, $users); - $this->assertEquals('user 4', $users[0]['username']); - $this->assertEquals('Project 3', $users[0]['project_name']); - } - - public function testEverybodyAllowed() - { - $projectModel = new ProjectModel($this->container); - $projectPermission = new ProjectPermissionModel($this->container); - - $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); - $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2', 'is_everybody_allowed' => 1))); - - $this->assertFalse($projectPermission->isEverybodyAllowed(1)); - $this->assertTrue($projectPermission->isEverybodyAllowed(2)); - } - - public function testIsUserAllowed() - { - $userModel = new UserModel($this->container); - $projectModel = new ProjectModel($this->container); - $groupModel = new GroupModel($this->container); - $groupRoleModel = new ProjectGroupRoleModel($this->container); - $groupMemberModel = new GroupMemberModel($this->container); - $userRoleModel = new ProjectUserRoleModel($this->container); - $projectPermission = new ProjectPermissionModel($this->container); - - $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); - $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); - $this->assertEquals(4, $userModel->create(array('username' => 'user 3'))); - $this->assertEquals(5, $userModel->create(array('username' => 'user 4'))); - - $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); - $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2'))); - - $this->assertEquals(1, $groupModel->create('Group A')); - - $this->assertTrue($groupMemberModel->addUser(1, 2)); - $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_VIEWER)); - - $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(1, 4, Role::PROJECT_MANAGER)); - - $this->assertTrue($projectPermission->isUserAllowed(1, 2)); - $this->assertTrue($projectPermission->isUserAllowed(1, 3)); - $this->assertTrue($projectPermission->isUserAllowed(1, 4)); - $this->assertFalse($projectPermission->isUserAllowed(1, 5)); - - $this->assertFalse($projectPermission->isUserAllowed(2, 2)); - $this->assertFalse($projectPermission->isUserAllowed(2, 3)); - $this->assertFalse($projectPermission->isUserAllowed(2, 4)); - $this->assertFalse($projectPermission->isUserAllowed(2, 5)); - } - - public function testIsAssignable() - { - $userModel = new UserModel($this->container); - $projectModel = new ProjectModel($this->container); - $groupModel = new GroupModel($this->container); - $groupRoleModel = new ProjectGroupRoleModel($this->container); - $groupMemberModel = new GroupMemberModel($this->container); - $userRoleModel = new ProjectUserRoleModel($this->container); - $projectPermission = new ProjectPermissionModel($this->container); - - $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); - $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); - $this->assertEquals(4, $userModel->create(array('username' => 'user 3'))); - $this->assertEquals(5, $userModel->create(array('username' => 'user 4'))); - - $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); - $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2'))); - - $this->assertEquals(1, $groupModel->create('Group A')); - - $this->assertTrue($groupMemberModel->addUser(1, 2)); - $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_VIEWER)); - - $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(1, 4, Role::PROJECT_MANAGER)); - - $this->assertFalse($projectPermission->isAssignable(1, 2)); - $this->assertTrue($projectPermission->isAssignable(1, 3)); - $this->assertTrue($projectPermission->isAssignable(1, 4)); - $this->assertFalse($projectPermission->isAssignable(1, 5)); - - $this->assertFalse($projectPermission->isAssignable(2, 2)); - $this->assertFalse($projectPermission->isAssignable(2, 3)); - $this->assertFalse($projectPermission->isAssignable(2, 4)); - $this->assertFalse($projectPermission->isAssignable(2, 5)); - } - - public function testIsAssignableWhenUserIsDisabled() - { - $userModel = new UserModel($this->container); - $projectModel = new ProjectModel($this->container); - $userRoleModel = new ProjectUserRoleModel($this->container); - $projectPermission = new ProjectPermissionModel($this->container); - - $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); - $this->assertEquals(3, $userModel->create(array('username' => 'user 2', 'is_active' => 0))); - - $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); - - $this->assertTrue($userRoleModel->addUser(1, 2, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); - - $this->assertTrue($projectPermission->isAssignable(1, 2)); - $this->assertFalse($projectPermission->isAssignable(1, 3)); - } - - public function testIsMember() - { - $userModel = new UserModel($this->container); - $projectModel = new ProjectModel($this->container); - $groupModel = new GroupModel($this->container); - $groupRoleModel = new ProjectGroupRoleModel($this->container); - $groupMemberModel = new GroupMemberModel($this->container); - $userRoleModel = new ProjectUserRoleModel($this->container); - $projectPermission = new ProjectPermissionModel($this->container); - - $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); - $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); - $this->assertEquals(4, $userModel->create(array('username' => 'user 3'))); - $this->assertEquals(5, $userModel->create(array('username' => 'user 4'))); - - $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); - $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2'))); - - $this->assertEquals(1, $groupModel->create('Group A')); - - $this->assertTrue($groupMemberModel->addUser(1, 2)); - $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_VIEWER)); - - $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(1, 4, Role::PROJECT_MANAGER)); - - $this->assertTrue($projectPermission->isMember(1, 2)); - $this->assertTrue($projectPermission->isMember(1, 3)); - $this->assertTrue($projectPermission->isMember(1, 4)); - $this->assertFalse($projectPermission->isMember(1, 5)); - - $this->assertFalse($projectPermission->isMember(2, 2)); - $this->assertFalse($projectPermission->isMember(2, 3)); - $this->assertFalse($projectPermission->isMember(2, 4)); - $this->assertFalse($projectPermission->isMember(2, 5)); - } - - public function testGetActiveProjectIds() - { - $userModel = new UserModel($this->container); - $projectModel = new ProjectModel($this->container); - $userRoleModel = new ProjectUserRoleModel($this->container); - $projectPermission = new ProjectPermissionModel($this->container); - - $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); - $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); - - $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); - $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2', 'is_active' => 0))); - - $this->assertTrue($userRoleModel->addUser(1, 2, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(2, 2, Role::PROJECT_VIEWER)); - $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_VIEWER)); - - $this->assertEmpty($projectPermission->getActiveProjectIds(1)); - $this->assertEquals(array(1), $projectPermission->getActiveProjectIds(2)); - $this->assertEquals(array(1), $projectPermission->getActiveProjectIds(3)); - } - - public function testGetProjectIds() - { - $userModel = new UserModel($this->container); - $projectModel = new ProjectModel($this->container); - $userRoleModel = new ProjectUserRoleModel($this->container); - $projectPermission = new ProjectPermissionModel($this->container); - - $this->assertEquals(2, $userModel->create(array('username' => 'user 1'))); - $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); - - $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); - $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2', 'is_active' => 0))); - - $this->assertTrue($userRoleModel->addUser(1, 2, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(2, 2, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); - $this->assertTrue($userRoleModel->addUser(2, 3, Role::PROJECT_MEMBER)); - - $this->assertEmpty($projectPermission->getProjectIds(1)); - $this->assertEquals(array(1, 2), $projectPermission->getProjectIds(2)); - $this->assertEquals(array(1, 2), $projectPermission->getProjectIds(3)); - } - - public function testDuplicate() - { - $userModel = new UserModel($this->container); - $projectModel = new ProjectModel($this->container); - $groupModel = new GroupModel($this->container); - $groupMemberModel = new GroupMemberModel($this->container); - $groupRoleModel = new ProjectGroupRoleModel($this->container); - $userRoleModel = new ProjectUserRoleModel($this->container); - $projectPermission = new ProjectPermissionModel($this->container); - - $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); - $this->assertEquals(2, $projectModel->create(array('name' => 'Project 2'))); - - $this->assertEquals(2, $userModel->create(array('username' => 'user 1', 'name' => 'User #1'))); - $this->assertEquals(3, $userModel->create(array('username' => 'user 2'))); - $this->assertEquals(4, $userModel->create(array('username' => 'user 3'))); - $this->assertEquals(5, $userModel->create(array('username' => 'user 4'))); - $this->assertEquals(6, $userModel->create(array('username' => 'user 5', 'name' => 'User #5'))); - - $this->assertEquals(1, $groupModel->create('Group C')); - $this->assertEquals(2, $groupModel->create('Group B')); - $this->assertEquals(3, $groupModel->create('Group A')); - - $this->assertTrue($groupMemberModel->addUser(1, 4)); - $this->assertTrue($groupMemberModel->addUser(2, 5)); - $this->assertTrue($groupMemberModel->addUser(3, 3)); - $this->assertTrue($groupMemberModel->addUser(3, 2)); - - $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_VIEWER)); - $this->assertTrue($groupRoleModel->addGroup(1, 3, Role::PROJECT_MANAGER)); - - $this->assertTrue($userRoleModel->addUser(1, 5, Role::PROJECT_MANAGER)); - $this->assertTrue($userRoleModel->addUser(1, 6, Role::PROJECT_MEMBER)); - - $this->assertTrue($projectPermission->duplicate(1, 2)); - - $this->assertCount(2, $userRoleModel->getUsers(2)); - $this->assertCount(3, $groupRoleModel->getUsers(2)); - } -} diff --git a/tests/units/Model/ProjectRoleModelTest.php b/tests/units/Model/ProjectRoleModelTest.php index 5dd78e20..65208e6a 100644 --- a/tests/units/Model/ProjectRoleModelTest.php +++ b/tests/units/Model/ProjectRoleModelTest.php @@ -41,14 +41,44 @@ class ProjectRoleModelTest extends Base $this->assertEquals('Role B', $roles[1]['role']); } - public function testModification() + public function testModificationWithUserRole() { $projectModel = new ProjectModel($this->container); $projectRoleModel = new ProjectRoleModel($this->container); + $projectUserRoleModel = new ProjectUserRoleModel($this->container); + $groupModel = new GroupModel($this->container); + $groupMemberModel = new GroupMemberModel($this->container); + + $this->assertEquals(1, $groupModel->create('Group A')); + $this->assertTrue($groupMemberModel->addUser(1, 1)); $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); $this->assertEquals(1, $projectRoleModel->create(1, 'Role A')); + $this->assertTrue($projectUserRoleModel->addUser(1, 1, 'Role A')); + $this->assertEquals('Role A', $projectUserRoleModel->getUserRole(1, 1)); + + $this->assertTrue($projectRoleModel->update(1, 1, 'Role B')); + $this->assertEquals('Role B', $projectUserRoleModel->getUserRole(1, 1)); + } + + public function testModificationWithGroupRole() + { + $projectModel = new ProjectModel($this->container); + $projectRoleModel = new ProjectRoleModel($this->container); + $projectGroupRoleModel = new ProjectGroupRoleModel($this->container); + $groupModel = new GroupModel($this->container); + $groupMemberModel = new GroupMemberModel($this->container); + + $this->assertEquals(1, $groupModel->create('Group A')); + $this->assertTrue($groupMemberModel->addUser(1, 1)); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); + $this->assertEquals(1, $projectRoleModel->create(1, 'Role A')); + $this->assertTrue($projectGroupRoleModel->addGroup(1, 1, 'Role A')); + $this->assertEquals('Role A', $projectGroupRoleModel->getUserRole(1, 1)); + $this->assertTrue($projectRoleModel->update(1, 1, 'Role B')); + $this->assertEquals('Role B', $projectGroupRoleModel->getUserRole(1, 1)); } public function testRemoveWithUserRole() diff --git a/tests/units/Model/ProjectRoleRestrictionModelTest.php b/tests/units/Model/ProjectRoleRestrictionModelTest.php new file mode 100644 index 00000000..07473061 --- /dev/null +++ b/tests/units/Model/ProjectRoleRestrictionModelTest.php @@ -0,0 +1,96 @@ +container); + $projectRoleModel = new ProjectRoleModel($this->container); + $projectRoleRestrictionModel = new ProjectRoleRestrictionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); + $this->assertEquals(1, $projectRoleModel->create(1, 'my-custom-role')); + $this->assertEquals(1, $projectRoleRestrictionModel->create(1, 1, ProjectRoleRestrictionModel::RULE_TASK_CREATION)); + } + + public function testRemove() + { + $projectModel = new ProjectModel($this->container); + $projectRoleModel = new ProjectRoleModel($this->container); + $projectRoleRestrictionModel = new ProjectRoleRestrictionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); + $this->assertEquals(1, $projectRoleModel->create(1, 'my-custom-role')); + $this->assertEquals(1, $projectRoleRestrictionModel->create(1, 1, ProjectRoleRestrictionModel::RULE_TASK_CREATION)); + $this->assertTrue($projectRoleRestrictionModel->remove(1)); + $this->assertFalse($projectRoleRestrictionModel->remove(1)); + } + + public function testGetById() + { + $projectModel = new ProjectModel($this->container); + $projectRoleModel = new ProjectRoleModel($this->container); + $projectRoleRestrictionModel = new ProjectRoleRestrictionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); + $this->assertEquals(1, $projectRoleModel->create(1, 'my-custom-role')); + $this->assertEquals(1, $projectRoleRestrictionModel->create(1, 1, ProjectRoleRestrictionModel::RULE_TASK_CREATION)); + + $restriction = $projectRoleRestrictionModel->getById(1, 1); + $this->assertEquals(ProjectRoleRestrictionModel::RULE_TASK_CREATION, $restriction['rule']); + $this->assertEquals(1, $restriction['project_id']); + $this->assertEquals(1, $restriction['restriction_id']); + } + + public function testGetAll() + { + $projectModel = new ProjectModel($this->container); + $projectRoleModel = new ProjectRoleModel($this->container); + $projectRoleRestrictionModel = new ProjectRoleRestrictionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); + $this->assertEquals(1, $projectRoleModel->create(1, 'my-custom-role')); + $this->assertEquals(1, $projectRoleRestrictionModel->create(1, 1, ProjectRoleRestrictionModel::RULE_TASK_CREATION)); + + $restrictions = $projectRoleRestrictionModel->getAll(1); + $this->assertCount(1, $restrictions); + $this->assertEquals(ProjectRoleRestrictionModel::RULE_TASK_CREATION, $restrictions[0]['rule']); + $this->assertEquals(1, $restrictions[0]['project_id']); + $this->assertEquals(1, $restrictions[0]['restriction_id']); + $this->assertEquals(1, $restrictions[0]['role_id']); + } + + public function testGetByRole() + { + $projectModel = new ProjectModel($this->container); + $projectRoleModel = new ProjectRoleModel($this->container); + $projectRoleRestrictionModel = new ProjectRoleRestrictionModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'Test'))); + $this->assertEquals(1, $projectRoleModel->create(1, 'my-custom-role')); + $this->assertEquals(1, $projectRoleRestrictionModel->create(1, 1, ProjectRoleRestrictionModel::RULE_TASK_CREATION)); + + $restrictions = $projectRoleRestrictionModel->getAllByRole(1, 'my-custom-role'); + $this->assertCount(1, $restrictions); + $this->assertEquals(ProjectRoleRestrictionModel::RULE_TASK_CREATION, $restrictions[0]['rule']); + $this->assertEquals(1, $restrictions[0]['project_id']); + $this->assertEquals(1, $restrictions[0]['restriction_id']); + $this->assertEquals(1, $restrictions[0]['role_id']); + $this->assertEquals('my-custom-role', $restrictions[0]['role']); + } + + public function testGetRules() + { + $projectRoleRestrictionModel = new ProjectRoleRestrictionModel($this->container); + $rules = $projectRoleRestrictionModel->getRules(); + + $this->assertCount(2, $rules); + $this->assertArrayHasKey(ProjectRoleRestrictionModel::RULE_TASK_OPEN_CLOSE, $rules); + } +} diff --git a/tests/units/Model/TaskFinderModelTest.php b/tests/units/Model/TaskFinderModelTest.php index a9f018ff..9e0369ce 100644 --- a/tests/units/Model/TaskFinderModelTest.php +++ b/tests/units/Model/TaskFinderModelTest.php @@ -89,6 +89,7 @@ class TaskFinderModelTest extends Base $tasks = $taskFinderModel->getUserQuery(1)->findAll(); $this->assertCount(1, $tasks); $this->assertEquals('Task #1', $tasks[0]['title']); + $this->assertEquals(1, $tasks[0]['column_id']); $this->assertTrue($columnModel->update(2, 'Test', 0, '', 0)); -- cgit v1.2.3