| | <?php |
| |
|
| | require_once __DIR__.'/BaseProcedureTest.php'; |
| |
|
| | class ProcedureAuthorizationTest extends BaseProcedureTest |
| | { |
| | public function testApiCredentialDoNotHaveAccessToUserCredentialProcedure() |
| | { |
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->app->getMe(); |
| | } |
| |
|
| | public function testUserCredentialDoNotHaveAccessToAdminProcedures() |
| | { |
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->getUser(1); |
| | } |
| |
|
| | public function testManagerCredentialDoNotHaveAccessToAdminProcedures() |
| | { |
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->getAllProjects(); |
| | } |
| |
|
| | public function testUserCredentialDoNotHaveAccessToManagerProcedures() |
| | { |
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->createProject('Team project creation are only for app managers'); |
| | } |
| |
|
| | public function testAppManagerCanCreateTeamProject() |
| | { |
| | $this->assertNotFalse($this->manager->createProject('Team project created by app manager')); |
| | } |
| |
|
| | public function testAdminManagerCanCreateTeamProject() |
| | { |
| | $projectId = $this->admin->createProject('Team project created by admin'); |
| | $this->assertNotFalse($projectId); |
| |
|
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->assertNotNull($this->manager->getProjectById($projectId)); |
| | } |
| |
|
| | public function testProjectManagerCanUpdateHisProject() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Team project can be updated', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| | $this->assertEquals('project-manager', $this->app->getProjectUserRole($projectId, $this->managerUserId)); |
| | $this->assertNotNull($this->manager->getProjectById($projectId)); |
| |
|
| | $this->assertTrue($this->manager->updateProject($projectId, 'My team project have been updated')); |
| | } |
| |
|
| | public function testProjectAuthorizationForbidden() |
| | { |
| | $projectId = $this->manager->createProject('A team project without members'); |
| | $this->assertNotFalse($projectId); |
| |
|
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->getProjectById($projectId); |
| | } |
| |
|
| | public function testProjectAuthorizationGranted() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'A team project with members', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| |
|
| | $this->assertTrue($this->manager->addProjectUser($projectId, $this->userUserId)); |
| | $this->assertNotNull($this->user->getProjectById($projectId)); |
| | } |
| |
|
| | public function testActionAuthorizationForbidden() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| |
|
| | $actionId = $this->manager->createAction($projectId, 'task.move.column', '\Kanboard\Action\TaskCloseColumn', array('column_id' => 1)); |
| | $this->assertNotFalse($actionId); |
| |
|
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->removeAction($projectId); |
| | } |
| |
|
| | public function testActionAuthorizationForbiddenBecauseNotProjectManager() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| |
|
| | $actionId = $this->manager->createAction($projectId, 'task.move.column', '\Kanboard\Action\TaskCloseColumn', array('column_id' => 1)); |
| | $this->assertNotFalse($actionId); |
| |
|
| | $this->assertTrue($this->manager->addProjectUser($projectId, $this->userUserId, 'project-member')); |
| |
|
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->removeAction($actionId); |
| | } |
| |
|
| | public function testActionAuthorizationGranted() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| |
|
| | $actionId = $this->manager->createAction($projectId, 'task.move.column', '\Kanboard\Action\TaskCloseColumn', array('column_id' => 1)); |
| | $this->assertNotFalse($actionId); |
| |
|
| | $this->assertTrue($this->manager->addProjectUser($projectId, $this->userUserId, 'project-manager')); |
| | $this->assertTrue($this->user->removeAction($actionId)); |
| | } |
| |
|
| | public function testCategoryAuthorizationForbidden() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| |
|
| | $categoryId = $this->manager->createCategory($projectId, 'Test'); |
| | $this->assertNotFalse($categoryId); |
| |
|
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->removeCategory($categoryId); |
| | } |
| |
|
| | public function testCategoryAuthorizationForbiddenBecauseNotProjectManager() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| |
|
| | $categoryId = $this->manager->createCategory($projectId, 'Test'); |
| | $this->assertNotFalse($categoryId); |
| |
|
| | $this->assertTrue($this->manager->addProjectUser($projectId, $this->userUserId, 'project-member')); |
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->removeCategory($categoryId); |
| | } |
| |
|
| | public function testCategoryAuthorizationGranted() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| |
|
| | $categoryId = $this->manager->createCategory($projectId, 'Test'); |
| | $this->assertNotFalse($categoryId); |
| |
|
| | $this->assertTrue($this->manager->addProjectUser($projectId, $this->userUserId, 'project-manager')); |
| | $this->assertTrue($this->user->removeCategory($categoryId)); |
| | } |
| |
|
| | public function testColumnAuthorizationForbidden() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| |
|
| | $columnId = $this->manager->addColumn($projectId, 'Test'); |
| | $this->assertNotFalse($columnId); |
| |
|
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->removeColumn($columnId); |
| | } |
| |
|
| | public function testColumnAuthorizationForbiddenBecauseNotProjectManager() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| |
|
| | $columnId = $this->manager->addColumn($projectId, 'Test'); |
| | $this->assertNotFalse($columnId); |
| |
|
| | $this->assertTrue($this->manager->addProjectUser($projectId, $this->userUserId, 'project-member')); |
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->removeColumn($columnId); |
| | } |
| |
|
| | public function testColumnAuthorizationGranted() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| |
|
| | $columnId = $this->manager->addColumn($projectId, 'Test'); |
| | $this->assertNotFalse($columnId); |
| |
|
| | $this->assertTrue($this->manager->addProjectUser($projectId, $this->userUserId, 'project-manager')); |
| | $this->assertTrue($this->user->removeColumn($columnId)); |
| | } |
| |
|
| | public function testCommentAuthorizationForbidden() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| | $this->assertTrue($this->manager->addProjectUser($projectId, $this->userUserId, 'project-viewer')); |
| |
|
| | $taskId = $this->manager->createTask('My Task', $projectId); |
| | $this->assertNotFalse($taskId); |
| |
|
| | $commentId = $this->manager->createComment($taskId, $this->userUserId, 'My comment'); |
| | $this->assertNotFalse($commentId); |
| |
|
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->updateComment($commentId, 'something else'); |
| | } |
| |
|
| | public function testCommentAuthorizationGranted() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| | $this->assertTrue($this->manager->addProjectUser($projectId, $this->userUserId, 'project-member')); |
| |
|
| | $taskId = $this->user->createTask('My Task', $projectId); |
| | $this->assertNotFalse($taskId); |
| |
|
| | $commentId = $this->user->createComment($taskId, $this->userUserId, 'My comment'); |
| | $this->assertNotFalse($commentId); |
| |
|
| | $this->assertTrue($this->user->updateComment($commentId, 'something else')); |
| | } |
| |
|
| | public function testSubtaskAuthorizationForbidden() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| | $this->assertTrue($this->manager->addProjectUser($projectId, $this->userUserId, 'project-viewer')); |
| |
|
| | $taskId = $this->manager->createTask('My Task', $projectId); |
| | $this->assertNotFalse($taskId); |
| |
|
| | $subtaskId = $this->manager->createSubtask($taskId, 'My subtask'); |
| | $this->assertNotFalse($subtaskId); |
| |
|
| | $this->expectException('JsonRPC\Exception\AccessDeniedException'); |
| | $this->user->removeSubtask($subtaskId); |
| | } |
| |
|
| | public function testSubtaskAuthorizationGranted() |
| | { |
| | $projectId = $this->manager->createProject(array( |
| | 'name' => 'Test Project', |
| | 'owner_id' => $this->managerUserId, |
| | )); |
| |
|
| | $this->assertNotFalse($projectId); |
| | $this->assertTrue($this->manager->addProjectUser($projectId, $this->userUserId, 'project-member')); |
| |
|
| | $taskId = $this->user->createTask('My Task', $projectId); |
| | $this->assertNotFalse($taskId); |
| |
|
| | $subtaskId = $this->manager->createSubtask($taskId, 'My subtask'); |
| | $this->assertNotFalse($subtaskId); |
| |
|
| | $this->assertTrue($this->user->removeSubtask($subtaskId)); |
| | } |
| | } |
| |
|