diff options
author | Frederic Guillot <fred@kanboard.net> | 2016-01-22 21:23:12 -0500 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2016-01-22 21:23:12 -0500 |
commit | ad8fcf035ab92d8cd06179959000b9a1681b1505 (patch) | |
tree | 80f4e35b16c1c1a6d4c473983bc6cb62b9519494 /tests/functionals | |
parent | f27bcec2d92af83ee7205c84954cda9d7b2fc55d (diff) |
Add new API procedures for groups, roles and project permissions
Diffstat (limited to 'tests/functionals')
-rw-r--r-- | tests/functionals/ApiTest.php | 1122 | ||||
-rw-r--r-- | tests/functionals/UserApiTest.php | 289 |
2 files changed, 0 insertions, 1411 deletions
diff --git a/tests/functionals/ApiTest.php b/tests/functionals/ApiTest.php deleted file mode 100644 index b250254e..00000000 --- a/tests/functionals/ApiTest.php +++ /dev/null @@ -1,1122 +0,0 @@ -<?php - -require_once __DIR__.'/../../vendor/autoload.php'; - -class Api extends PHPUnit_Framework_TestCase -{ - private $client = null; - - public static function setUpBeforeClass() - { - if (DB_DRIVER === 'sqlite') { - @unlink(DB_FILENAME); - } elseif (DB_DRIVER === 'mysql') { - $pdo = new PDO('mysql:host='.DB_HOSTNAME, DB_USERNAME, DB_PASSWORD); - $pdo->exec('DROP DATABASE '.DB_NAME); - $pdo->exec('CREATE DATABASE '.DB_NAME); - $pdo = null; - } elseif (DB_DRIVER === 'postgres') { - $pdo = new PDO('pgsql:host='.DB_HOSTNAME, DB_USERNAME, DB_PASSWORD); - $pdo->exec('DROP DATABASE '.DB_NAME); - $pdo->exec('CREATE DATABASE '.DB_NAME.' WITH OWNER '.DB_USERNAME); - $pdo = null; - } - - $service = new Kanboard\ServiceProvider\DatabaseProvider; - - $db = $service->getInstance(); - $db->table('settings')->eq('option', 'api_token')->update(array('value' => API_KEY)); - $db->table('settings')->eq('option', 'application_timezone')->update(array('value' => 'Europe/Paris')); - $db->closeConnection(); - } - - public function setUp() - { - $this->client = new JsonRPC\Client(API_URL); - $this->client->authentication('jsonrpc', API_KEY); - // $this->client->debug = true; - } - - private function getTaskId() - { - $tasks = $this->client->getAllTasks(1, 1); - $this->assertNotEmpty($tasks); - - return $tasks[0]['id']; - } - - public function testGetTimezone() - { - $this->assertEquals('Europe/Paris', $this->client->getTimezone()); - } - - public function testGetVersion() - { - $this->assertEquals('master', $this->client->getVersion()); - } - - public function testRemoveAll() - { - $projects = $this->client->getAllProjects(); - - if ($projects) { - foreach ($projects as $project) { - $this->assertEquals('http://127.0.0.1:8000/?controller=board&action=show&project_id='.$project['id'], $project['url']['board']); - $this->assertEquals('http://127.0.0.1:8000/?controller=calendar&action=show&project_id='.$project['id'], $project['url']['calendar']); - $this->assertEquals('http://127.0.0.1:8000/?controller=listing&action=show&project_id='.$project['id'], $project['url']['list']); - $this->assertTrue($this->client->removeProject($project['id'])); - } - } - } - - public function testCreateProject() - { - $project_id = $this->client->createProject('API test'); - $this->assertNotFalse($project_id); - $this->assertInternalType('int', $project_id); - } - - public function testGetProjectById() - { - $project = $this->client->getProjectById(1); - $this->assertNotEmpty($project); - $this->assertEquals(1, $project['id']); - $this->assertEquals('http://127.0.0.1:8000/?controller=board&action=show&project_id='.$project['id'], $project['url']['board']); - $this->assertEquals('http://127.0.0.1:8000/?controller=calendar&action=show&project_id='.$project['id'], $project['url']['calendar']); - $this->assertEquals('http://127.0.0.1:8000/?controller=listing&action=show&project_id='.$project['id'], $project['url']['list']); - } - - public function testGetProjectByName() - { - $project = $this->client->getProjectByName('API test'); - $this->assertNotEmpty($project); - $this->assertEquals(1, $project['id']); - $this->assertEquals('http://127.0.0.1:8000/?controller=board&action=show&project_id='.$project['id'], $project['url']['board']); - $this->assertEquals('http://127.0.0.1:8000/?controller=calendar&action=show&project_id='.$project['id'], $project['url']['calendar']); - $this->assertEquals('http://127.0.0.1:8000/?controller=listing&action=show&project_id='.$project['id'], $project['url']['list']); - - $project = $this->client->getProjectByName(array('name' => 'API test')); - $this->assertNotEmpty($project); - $this->assertEquals(1, $project['id']); - - $project = $this->client->getProjectByName('None'); - $this->assertEmpty($project); - $this->assertNull($project); - } - - public function testGetAllProjects() - { - $projects = $this->client->getAllProjects(); - $this->assertNotEmpty($projects); - - foreach ($projects as $project) { - $this->assertEquals('http://127.0.0.1:8000/?controller=board&action=show&project_id='.$project['id'], $project['url']['board']); - $this->assertEquals('http://127.0.0.1:8000/?controller=calendar&action=show&project_id='.$project['id'], $project['url']['calendar']); - $this->assertEquals('http://127.0.0.1:8000/?controller=listing&action=show&project_id='.$project['id'], $project['url']['list']); - } - } - - public function testUpdateProject() - { - $project = $this->client->getProjectById(1); - $this->assertNotEmpty($project); - $this->assertTrue($this->client->execute('updateProject', array('id' => 1, 'name' => 'API test 2'))); - - $project = $this->client->getProjectById(1); - $this->assertEquals('API test 2', $project['name']); - - $this->assertTrue($this->client->execute('updateProject', array('id' => 1, 'name' => 'API test', 'description' => 'test'))); - - $project = $this->client->getProjectById(1); - $this->assertEquals('API test', $project['name']); - $this->assertEquals('test', $project['description']); - } - - public function testDisableProject() - { - $this->assertTrue($this->client->disableProject(1)); - $project = $this->client->getProjectById(1); - $this->assertNotEmpty($project); - $this->assertEquals(0, $project['is_active']); - } - - public function testEnableProject() - { - $this->assertTrue($this->client->enableProject(1)); - $project = $this->client->getProjectById(1); - $this->assertNotEmpty($project); - $this->assertEquals(1, $project['is_active']); - } - - public function testEnableProjectPublicAccess() - { - $this->assertTrue($this->client->enableProjectPublicAccess(1)); - $project = $this->client->getProjectById(1); - $this->assertNotEmpty($project); - $this->assertEquals(1, $project['is_public']); - $this->assertNotEmpty($project['token']); - } - - public function testDisableProjectPublicAccess() - { - $this->assertTrue($this->client->disableProjectPublicAccess(1)); - $project = $this->client->getProjectById(1); - $this->assertNotEmpty($project); - $this->assertEquals(0, $project['is_public']); - $this->assertEmpty($project['token']); - } - - public function testgetProjectActivities() - { - $activities = $this->client->getProjectActivities(array('project_ids' => array(1))); - $this->assertInternalType('array', $activities); - $this->assertCount(0, $activities); - } - - public function testgetProjectActivity() - { - $activities = $this->client->getProjectActivity(1); - $this->assertInternalType('array', $activities); - $this->assertCount(0, $activities); - } - - public function testGetBoard() - { - $board = $this->client->getBoard(1); - $this->assertTrue(is_array($board)); - $this->assertEquals(1, count($board)); - $this->assertEquals('Default swimlane', $board[0]['name']); - $this->assertEquals(4, count($board[0]['columns'])); - } - - public function testGetColumns() - { - $columns = $this->client->getColumns(1); - $this->assertTrue(is_array($columns)); - $this->assertEquals(4, count($columns)); - $this->assertEquals('Done', $columns[3]['title']); - } - - public function testMoveColumnUp() - { - $this->assertTrue($this->client->moveColumnUp(1, 4)); - - $columns = $this->client->getColumns(1); - $this->assertTrue(is_array($columns)); - $this->assertEquals('Done', $columns[2]['title']); - $this->assertEquals('Work in progress', $columns[3]['title']); - } - - public function testMoveColumnDown() - { - $this->assertTrue($this->client->moveColumnDown(1, 4)); - - $columns = $this->client->getColumns(1); - $this->assertTrue(is_array($columns)); - $this->assertEquals('Work in progress', $columns[2]['title']); - $this->assertEquals('Done', $columns[3]['title']); - } - - public function testUpdateColumn() - { - $this->assertTrue($this->client->updateColumn(4, 'Boo', 2)); - - $columns = $this->client->getColumns(1); - $this->assertTrue(is_array($columns)); - $this->assertEquals('Boo', $columns[3]['title']); - $this->assertEquals(2, $columns[3]['task_limit']); - } - - public function testAddColumn() - { - $column_id = $this->client->addColumn(1, 'New column'); - - $this->assertNotFalse($column_id); - $this->assertInternalType('int', $column_id); - $this->assertTrue($column_id > 0); - - $columns = $this->client->getColumns(1); - $this->assertTrue(is_array($columns)); - $this->assertEquals(5, count($columns)); - $this->assertEquals('New column', $columns[4]['title']); - } - - public function testRemoveColumn() - { - $this->assertTrue($this->client->removeColumn(5)); - - $columns = $this->client->getColumns(1); - $this->assertTrue(is_array($columns)); - $this->assertEquals(4, count($columns)); - } - - public function testGetDefaultSwimlane() - { - $swimlane = $this->client->getDefaultSwimlane(1); - $this->assertNotEmpty($swimlane); - $this->assertEquals('Default swimlane', $swimlane['default_swimlane']); - } - - public function testAddSwimlane() - { - $swimlane_id = $this->client->addSwimlane(1, 'Swimlane 1'); - $this->assertNotFalse($swimlane_id); - $this->assertInternalType('int', $swimlane_id); - - $swimlane = $this->client->getSwimlaneById($swimlane_id); - $this->assertNotEmpty($swimlane); - $this->assertInternalType('array', $swimlane); - $this->assertEquals('Swimlane 1', $swimlane['name']); - } - - public function testGetSwimlane() - { - $swimlane = $this->client->getSwimlane(1); - $this->assertNotEmpty($swimlane); - $this->assertInternalType('array', $swimlane); - $this->assertEquals('Swimlane 1', $swimlane['name']); - } - - public function testUpdateSwimlane() - { - $swimlane = $this->client->getSwimlaneByName(1, 'Swimlane 1'); - $this->assertNotEmpty($swimlane); - $this->assertInternalType('array', $swimlane); - $this->assertEquals(1, $swimlane['id']); - $this->assertEquals('Swimlane 1', $swimlane['name']); - - $this->assertTrue($this->client->updateSwimlane($swimlane['id'], 'Another swimlane')); - - $swimlane = $this->client->getSwimlaneById($swimlane['id']); - $this->assertNotEmpty($swimlane); - $this->assertEquals('Another swimlane', $swimlane['name']); - } - - public function testDisableSwimlane() - { - $this->assertTrue($this->client->disableSwimlane(1, 1)); - - $swimlane = $this->client->getSwimlaneById(1); - $this->assertNotEmpty($swimlane); - $this->assertEquals(0, $swimlane['is_active']); - } - - public function testEnableSwimlane() - { - $this->assertTrue($this->client->enableSwimlane(1, 1)); - - $swimlane = $this->client->getSwimlaneById(1); - $this->assertNotEmpty($swimlane); - $this->assertEquals(1, $swimlane['is_active']); - } - - public function testGetAllSwimlanes() - { - $this->assertNotFalse($this->client->addSwimlane(1, 'Swimlane A')); - - $swimlanes = $this->client->getAllSwimlanes(1); - $this->assertNotEmpty($swimlanes); - $this->assertCount(2, $swimlanes); - $this->assertEquals('Another swimlane', $swimlanes[0]['name']); - $this->assertEquals('Swimlane A', $swimlanes[1]['name']); - } - - public function testGetActiveSwimlane() - { - $this->assertTrue($this->client->disableSwimlane(1, 1)); - - $swimlanes = $this->client->getActiveSwimlanes(1); - $this->assertNotEmpty($swimlanes); - $this->assertCount(2, $swimlanes); - $this->assertEquals('Default swimlane', $swimlanes[0]['name']); - $this->assertEquals('Swimlane A', $swimlanes[1]['name']); - } - - public function testMoveSwimlaneUp() - { - $this->assertTrue($this->client->enableSwimlane(1, 1)); - $this->assertTrue($this->client->moveSwimlaneUp(1, 1)); - - $swimlanes = $this->client->getActiveSwimlanes(1); - $this->assertNotEmpty($swimlanes); - $this->assertCount(3, $swimlanes); - $this->assertEquals('Default swimlane', $swimlanes[0]['name']); - $this->assertEquals('Another swimlane', $swimlanes[1]['name']); - $this->assertEquals('Swimlane A', $swimlanes[2]['name']); - - $this->assertTrue($this->client->moveSwimlaneUp(1, 2)); - - $swimlanes = $this->client->getActiveSwimlanes(1); - $this->assertNotEmpty($swimlanes); - $this->assertCount(3, $swimlanes); - $this->assertEquals('Default swimlane', $swimlanes[0]['name']); - $this->assertEquals('Swimlane A', $swimlanes[1]['name']); - $this->assertEquals('Another swimlane', $swimlanes[2]['name']); - } - - public function testMoveSwimlaneDown() - { - $this->assertTrue($this->client->moveSwimlaneDown(1, 2)); - - $swimlanes = $this->client->getActiveSwimlanes(1); - $this->assertNotEmpty($swimlanes); - $this->assertCount(3, $swimlanes); - $this->assertEquals('Default swimlane', $swimlanes[0]['name']); - $this->assertEquals('Another swimlane', $swimlanes[1]['name']); - $this->assertEquals('Swimlane A', $swimlanes[2]['name']); - } - - public function testCreateTaskWithWrongMember() - { - $task = array( - 'title' => 'Task #1', - 'color_id' => 'blue', - 'owner_id' => 1, - 'project_id' => 1, - 'column_id' => 2, - ); - - $task_id = $this->client->createTask($task); - - $this->assertFalse($task_id); - } - - public function testGetAllowedUsers() - { - $users = $this->client->getMembers(1); - $this->assertNotFalse($users); - $this->assertEquals(array(), $users); - } - - public function testAddMember() - { - $this->assertTrue($this->client->allowUser(1, 1)); - } - - public function testCreateTask() - { - $task = array( - 'title' => 'Task #1', - 'color_id' => 'blue', - 'owner_id' => 1, - 'project_id' => 1, - 'column_id' => 2, - ); - - $task_id = $this->client->createTask($task); - - $this->assertNotFalse($task_id); - $this->assertInternalType('int', $task_id); - $this->assertTrue($task_id > 0); - } - - /** - * @expectedException InvalidArgumentException - */ - public function testCreateTaskWithBadParams() - { - $task = array( - 'title' => 'Task #1', - 'color_id' => 'blue', - 'owner_id' => 1, - ); - - $this->client->createTask($task); - } - - public function testGetTask() - { - $task = $this->client->getTask(1); - - $this->assertNotFalse($task); - $this->assertTrue(is_array($task)); - $this->assertEquals('Task #1', $task['title']); - $this->assertEquals('http://127.0.0.1:8000/?controller=task&action=show&task_id='.$task['id'].'&project_id='.$task['project_id'], $task['url']); - } - - public function testGetAllTasks() - { - $tasks = $this->client->getAllTasks(1, 1); - - $this->assertNotFalse($tasks); - $this->assertTrue(is_array($tasks)); - $this->assertEquals('Task #1', $tasks[0]['title']); - $this->assertEquals('http://127.0.0.1:8000/?controller=task&action=show&task_id='.$tasks[0]['id'].'&project_id='.$tasks[0]['project_id'], $tasks[0]['url']); - - $tasks = $this->client->getAllTasks(2, 0); - - $this->assertNotFalse($tasks); - $this->assertTrue(is_array($tasks)); - $this->assertEmpty($tasks); - } - - public function testMoveTaskSwimlane() - { - $task_id = $this->getTaskId(); - - $task = $this->client->getTask($task_id); - $this->assertNotFalse($task); - $this->assertTrue(is_array($task)); - $this->assertEquals(1, $task['position']); - $this->assertEquals(2, $task['column_id']); - $this->assertEquals(0, $task['swimlane_id']); - - $moved_timestamp = $task['date_moved']; - sleep(1); - $this->assertTrue($this->client->moveTaskPosition(1, $task_id, 4, 1, 2)); - - $task = $this->client->getTask($task_id); - $this->assertNotFalse($task); - $this->assertTrue(is_array($task)); - $this->assertEquals(1, $task['position']); - $this->assertEquals(4, $task['column_id']); - $this->assertEquals(2, $task['swimlane_id']); - $this->assertNotEquals($moved_timestamp, $task['date_moved']); - } - - public function testRemoveSwimlane() - { - $this->assertTrue($this->client->removeSwimlane(1, 2)); - - $task = $this->client->getTask($this->getTaskId()); - $this->assertNotFalse($task); - $this->assertTrue(is_array($task)); - $this->assertEquals(1, $task['position']); - $this->assertEquals(4, $task['column_id']); - $this->assertEquals(0, $task['swimlane_id']); - } - - public function testUpdateTask() - { - $task = $this->client->getTask(1); - - $values = array(); - $values['id'] = $task['id']; - $values['color_id'] = 'green'; - $values['description'] = 'test'; - $values['date_due'] = ''; - - $this->assertTrue($this->client->execute('updateTask', $values)); - } - - public function testRemoveTask() - { - $this->assertTrue($this->client->removeTask(1)); - } - - public function testRemoveUsers() - { - $users = $this->client->getAllUsers(); - $this->assertNotFalse($users); - $this->assertNotEmpty($users); - - foreach ($users as $user) { - if ($user['id'] > 1) { - $this->assertTrue($this->client->removeUser($user['id'])); - } - } - } - - public function testCreateUser() - { - $user = array( - 'username' => 'toto', - 'name' => 'Toto', - 'password' => '123456', - ); - - $user_id = $this->client->execute('createUser', $user); - $this->assertNotFalse($user_id); - $this->assertInternalType('int', $user_id); - $this->assertTrue($user_id > 0); - } - - public function testCreateManagerUser() - { - $user = array( - 'username' => 'manager', - 'name' => 'Manager', - 'password' => '123456', - 'role' => 'app-manager' - ); - - $user_id = $this->client->execute('createUser', $user); - $this->assertNotFalse($user_id); - $this->assertInternalType('int', $user_id); - $this->assertTrue($user_id > 0); - } - - /** - * @expectedException InvalidArgumentException - */ - public function testCreateUserWithBadParams() - { - $user = array( - 'name' => 'Titi', - 'password' => '123456', - ); - - $this->assertNull($this->client->execute('createUser', $user)); - } - - public function testGetUser() - { - $user = $this->client->getUser(2); - $this->assertNotFalse($user); - $this->assertTrue(is_array($user)); - $this->assertEquals('toto', $user['username']); - - $user = $this->client->getUser(3); - $this->assertNotEmpty($user); - $this->assertEquals('app-manager', $user['role']); - - $this->assertNull($this->client->getUser(2222)); - } - - public function testUpdateUser() - { - $user = array(); - $user['id'] = 2; - $user['username'] = 'titi'; - $user['name'] = 'Titi'; - - $this->assertTrue($this->client->execute('updateUser', $user)); - - $user = $this->client->getUser(2); - $this->assertNotFalse($user); - $this->assertTrue(is_array($user)); - $this->assertEquals('titi', $user['username']); - $this->assertEquals('Titi', $user['name']); - - $user = array(); - $user['id'] = 2; - $user['email'] = 'titi@localhost'; - - $this->assertTrue($this->client->execute('updateUser', $user)); - - $user = $this->client->getUser(2); - $this->assertNotFalse($user); - $this->assertTrue(is_array($user)); - $this->assertEquals('titi@localhost', $user['email']); - } - - public function testAllowedUser() - { - $this->assertTrue($this->client->allowUser(1, 2)); - - $users = $this->client->getMembers(1); - $this->assertNotFalse($users); - $this->assertEquals(array(1 => 'admin', 2 => 'Titi'), $users); - } - - public function testRevokeUser() - { - $this->assertTrue($this->client->revokeUser(1, 2)); - - $users = $this->client->getMembers(1); - $this->assertNotFalse($users); - $this->assertEquals(array(1 => 'admin'), $users); - } - - public function testCreateComment() - { - $task = array( - 'title' => 'Task with comment', - 'color_id' => 'red', - 'owner_id' => 1, - 'project_id' => 1, - 'column_id' => 1, - ); - - $this->assertNotFalse($this->client->execute('createTask', $task)); - - $tasks = $this->client->getAllTasks(1, 1); - $this->assertNotEmpty($tasks); - $this->assertEquals(1, count($tasks)); - - $comment = array( - 'task_id' => $tasks[0]['id'], - 'user_id' => 2, - 'content' => 'boo', - ); - - $comment_id = $this->client->execute('createComment', $comment); - - $this->assertNotFalse($comment_id); - $this->assertInternalType('int', $comment_id); - $this->assertTrue($comment_id > 0); - } - - public function testGetComment() - { - $comment = $this->client->getComment(1); - $this->assertNotFalse($comment); - $this->assertNotEmpty($comment); - $this->assertEquals(2, $comment['user_id']); - $this->assertEquals('boo', $comment['comment']); - } - - public function testUpdateComment() - { - $comment = array(); - $comment['id'] = 1; - $comment['content'] = 'test'; - - $this->assertTrue($this->client->execute('updateComment', $comment)); - - $comment = $this->client->getComment(1); - $this->assertEquals('test', $comment['comment']); - } - - public function testGetAllComments() - { - $task_id = $this->getTaskId(); - - $comment = array( - 'task_id' => $task_id, - 'user_id' => 1, - 'content' => 'blabla', - ); - - $comment_id = $this->client->createComment($comment); - - $this->assertNotFalse($comment_id); - $this->assertInternalType('int', $comment_id); - $this->assertTrue($comment_id > 0); - - $comments = $this->client->getAllComments($task_id); - $this->assertNotFalse($comments); - $this->assertNotEmpty($comments); - $this->assertTrue(is_array($comments)); - $this->assertEquals(2, count($comments)); - } - - public function testRemoveComment() - { - $task_id = $this->getTaskId(); - - $comments = $this->client->getAllComments($task_id); - $this->assertNotFalse($comments); - $this->assertNotEmpty($comments); - $this->assertTrue(is_array($comments)); - - foreach ($comments as $comment) { - $this->assertTrue($this->client->removeComment($comment['id'])); - } - - $comments = $this->client->getAllComments($task_id); - $this->assertNotFalse($comments); - $this->assertEmpty($comments); - $this->assertTrue(is_array($comments)); - } - - public function testCreateSubtask() - { - $subtask = array( - 'task_id' => $this->getTaskId(), - 'title' => 'subtask #1', - ); - - $subtask_id = $this->client->createSubtask($subtask); - - $this->assertNotFalse($subtask_id); - $this->assertInternalType('int', $subtask_id); - $this->assertTrue($subtask_id > 0); - } - - public function testGetSubtask() - { - $subtask = $this->client->getSubtask(1); - $this->assertNotFalse($subtask); - $this->assertNotEmpty($subtask); - $this->assertEquals($this->getTaskId(), $subtask['task_id']); - $this->assertEquals(0, $subtask['user_id']); - $this->assertEquals('subtask #1', $subtask['title']); - } - - public function testUpdateSubtask() - { - $subtask = array(); - $subtask['id'] = 1; - $subtask['task_id'] = $this->getTaskId(); - $subtask['title'] = 'test'; - - $this->assertTrue($this->client->execute('updateSubtask', $subtask)); - - $subtask = $this->client->getSubtask(1); - $this->assertEquals('test', $subtask['title']); - } - - public function testGetAllSubtasks() - { - $subtask = array( - 'task_id' => $this->getTaskId(), - 'user_id' => 2, - 'title' => 'Subtask #2', - ); - - $this->assertNotFalse($this->client->execute('createSubtask', $subtask)); - - $subtasks = $this->client->getAllSubtasks($this->getTaskId()); - $this->assertNotFalse($subtasks); - $this->assertNotEmpty($subtasks); - $this->assertTrue(is_array($subtasks)); - $this->assertEquals(2, count($subtasks)); - } - - public function testRemoveSubtask() - { - $this->assertTrue($this->client->removeSubtask(1)); - - $subtasks = $this->client->getAllSubtasks($this->getTaskId()); - $this->assertNotFalse($subtasks); - $this->assertNotEmpty($subtasks); - $this->assertTrue(is_array($subtasks)); - $this->assertEquals(1, count($subtasks)); - } - - public function testMoveTaskPosition() - { - $task_id = $this->getTaskId(); - $this->assertTrue($this->client->moveTaskPosition(1, $task_id, 3, 1)); - - $task = $this->client->getTask($task_id); - $this->assertNotFalse($task); - $this->assertTrue(is_array($task)); - $this->assertEquals(1, $task['position']); - $this->assertEquals(3, $task['column_id']); - } - - public function testCategoryCreation() - { - $category = array( - 'name' => 'Category', - 'project_id' => 1, - ); - - $cat_id = $this->client->execute('createCategory', $category); - $this->assertNotFalse($cat_id); - $this->assertInternalType('int', $cat_id); - $this->assertTrue($cat_id > 0); - - // Duplicate - - $category = array( - 'name' => 'Category', - 'project_id' => 1, - ); - - $this->assertFalse($this->client->execute('createCategory', $category)); - } - - /** - * @expectedException InvalidArgumentException - */ - public function testCategoryCreationWithBadParams() - { - // Missing project id - $category = array( - 'name' => 'Category', - ); - - $this->assertNull($this->client->execute('createCategory', $category)); - } - - public function testCategoryRead() - { - $category = $this->client->getCategory(1); - - $this->assertTrue(is_array($category)); - $this->assertNotEmpty($category); - $this->assertEquals(1, $category['id']); - $this->assertEquals('Category', $category['name']); - $this->assertEquals(1, $category['project_id']); - } - - public function testGetAllCategories() - { - $categories = $this->client->getAllCategories(1); - - $this->assertNotEmpty($categories); - $this->assertNotFalse($categories); - $this->assertTrue(is_array($categories)); - $this->assertEquals(1, count($categories)); - $this->assertEquals(1, $categories[0]['id']); - $this->assertEquals('Category', $categories[0]['name']); - $this->assertEquals(1, $categories[0]['project_id']); - } - - public function testCategoryUpdate() - { - $category = array( - 'id' => 1, - 'name' => 'Renamed category', - ); - - $this->assertTrue($this->client->execute('updateCategory', $category)); - - $category = $this->client->getCategory(1); - $this->assertTrue(is_array($category)); - $this->assertNotEmpty($category); - $this->assertEquals(1, $category['id']); - $this->assertEquals('Renamed category', $category['name']); - $this->assertEquals(1, $category['project_id']); - } - - public function testCategoryRemove() - { - $this->assertTrue($this->client->removeCategory(1)); - $this->assertFalse($this->client->removeCategory(1)); - $this->assertFalse($this->client->removeCategory(1111)); - } - - public function testGetAvailableActions() - { - $actions = $this->client->getAvailableActions(); - $this->assertNotEmpty($actions); - $this->assertInternalType('array', $actions); - $this->assertArrayHasKey('\Kanboard\Action\TaskCloseColumn', $actions); - } - - public function testGetAvailableActionEvents() - { - $events = $this->client->getAvailableActionEvents(); - $this->assertNotEmpty($events); - $this->assertInternalType('array', $events); - $this->assertArrayHasKey('task.move.column', $events); - } - - public function testGetCompatibleActionEvents() - { - $events = $this->client->getCompatibleActionEvents('\Kanboard\Action\TaskCloseColumn'); - $this->assertNotEmpty($events); - $this->assertInternalType('array', $events); - $this->assertArrayHasKey('task.move.column', $events); - } - - public function testCreateAction() - { - $action_id = $this->client->createAction(1, 'task.move.column', '\Kanboard\Action\TaskCloseColumn', array('column_id' => 1)); - $this->assertNotFalse($action_id); - $this->assertEquals(1, $action_id); - } - - public function testGetActions() - { - $actions = $this->client->getActions(1); - $this->assertNotEmpty($actions); - $this->assertInternalType('array', $actions); - $this->assertCount(1, $actions); - $this->assertArrayHasKey('id', $actions[0]); - $this->assertArrayHasKey('project_id', $actions[0]); - $this->assertArrayHasKey('event_name', $actions[0]); - $this->assertArrayHasKey('action_name', $actions[0]); - $this->assertArrayHasKey('params', $actions[0]); - $this->assertArrayHasKey('column_id', $actions[0]['params']); - } - - public function testRemoveAction() - { - $this->assertTrue($this->client->removeAction(1)); - - $actions = $this->client->getActions(1); - $this->assertEmpty($actions); - $this->assertCount(0, $actions); - } - - public function testGetAllLinks() - { - $links = $this->client->getAllLinks(); - $this->assertNotEmpty($links); - $this->assertArrayHasKey('id', $links[0]); - $this->assertArrayHasKey('label', $links[0]); - $this->assertArrayHasKey('opposite_id', $links[0]); - } - - public function testGetOppositeLink() - { - $link = $this->client->getOppositeLinkId(1); - $this->assertEquals(1, $link); - - $link = $this->client->getOppositeLinkId(2); - $this->assertEquals(3, $link); - } - - public function testGetLinkByLabel() - { - $link = $this->client->getLinkByLabel('blocks'); - $this->assertNotEmpty($link); - $this->assertEquals(2, $link['id']); - $this->assertEquals(3, $link['opposite_id']); - } - - public function testGetLinkById() - { - $link = $this->client->getLinkById(4); - $this->assertNotEmpty($link); - $this->assertEquals(4, $link['id']); - $this->assertEquals(5, $link['opposite_id']); - $this->assertEquals('duplicates', $link['label']); - } - - public function testCreateLink() - { - $link_id = $this->client->createLink(array('label' => 'test')); - $this->assertNotFalse($link_id); - $this->assertInternalType('int', $link_id); - - $link_id = $this->client->createLink(array('label' => 'foo', 'opposite_label' => 'bar')); - $this->assertNotFalse($link_id); - $this->assertInternalType('int', $link_id); - } - - public function testUpdateLink() - { - $link1 = $this->client->getLinkByLabel('bar'); - $this->assertNotEmpty($link1); - - $link2 = $this->client->getLinkByLabel('test'); - $this->assertNotEmpty($link2); - - $this->assertNotFalse($this->client->updateLink($link1['id'], $link2['id'], 'boo')); - - $link = $this->client->getLinkById($link1['id']); - $this->assertNotEmpty($link); - $this->assertEquals($link2['id'], $link['opposite_id']); - $this->assertEquals('boo', $link['label']); - - $this->assertTrue($this->client->removeLink($link1['id'])); - } - - public function testCreateTaskLink() - { - $task_id1 = $this->client->createTask(array('project_id' => 1, 'title' => 'A')); - $this->assertNotFalse($task_id1); - - $task_id2 = $this->client->createTask(array('project_id' => 1, 'title' => 'B')); - $this->assertNotFalse($task_id2); - - $task_id3 = $this->client->createTask(array('project_id' => 1, 'title' => 'C')); - $this->assertNotFalse($task_id3); - - $task_link_id = $this->client->createTaskLink($task_id1, $task_id2, 1); - $this->assertNotFalse($task_link_id); - - $task_link = $this->client->getTaskLinkById($task_link_id); - $this->assertNotEmpty($task_link); - $this->assertEquals($task_id1, $task_link['task_id']); - $this->assertEquals($task_id2, $task_link['opposite_task_id']); - $this->assertEquals(1, $task_link['link_id']); - - $task_links = $this->client->getAllTaskLinks($task_id1); - $this->assertNotEmpty($task_links); - $this->assertCount(1, $task_links); - - $this->assertTrue($this->client->updateTaskLink($task_link_id, $task_id1, $task_id3, 2)); - - $task_link = $this->client->getTaskLinkById($task_link_id); - $this->assertNotEmpty($task_link); - $this->assertEquals($task_id1, $task_link['task_id']); - $this->assertEquals($task_id3, $task_link['opposite_task_id']); - $this->assertEquals(2, $task_link['link_id']); - - $this->assertTrue($this->client->removeTaskLink($task_link_id)); - $this->assertEmpty($this->client->getAllTaskLinks($task_id1)); - } - - public function testCreateFile() - { - $this->assertNotFalse($this->client->createFile(1, $this->getTaskId(), 'My file', base64_encode('plain text file'))); - } - - public function testGetAllFiles() - { - $files = $this->client->getAllFiles(array('task_id' => $this->getTaskId())); - - $this->assertNotEmpty($files); - $this->assertCount(1, $files); - $this->assertEquals('My file', $files[0]['name']); - - $file = $this->client->getFile($files[0]['id']); - $this->assertNotEmpty($file); - $this->assertEquals('My file', $file['name']); - - $content = $this->client->downloadFile($file['id']); - $this->assertNotEmpty($content); - $this->assertEquals('plain text file', base64_decode($content)); - - $content = $this->client->downloadFile(1234567); - $this->assertEmpty($content); - - $this->assertTrue($this->client->removeFile($file['id'])); - $this->assertEmpty($this->client->getAllFiles(1)); - } - - public function testRemoveAllFiles() - { - $this->assertNotFalse($this->client->createFile(1, $this->getTaskId(), 'My file 1', base64_encode('plain text file'))); - $this->assertNotFalse($this->client->createFile(1, $this->getTaskId(), 'My file 2', base64_encode('plain text file'))); - - $files = $this->client->getAllFiles(array('task_id' => $this->getTaskId())); - $this->assertNotEmpty($files); - $this->assertCount(2, $files); - - $this->assertTrue($this->client->removeAllFiles(array('task_id' => $this->getTaskId()))); - - $files = $this->client->getAllFiles(array('task_id' => $this->getTaskId())); - $this->assertEmpty($files); - } - - public function testCreateTaskWithReference() - { - $task = array( - 'title' => 'Task with external ticket number', - 'reference' => 'TICKET-1234', - 'project_id' => 1, - 'description' => '[Link to my ticket](http://my-ticketing-system/1234)', - ); - - $task_id = $this->client->createTask($task); - - $this->assertNotFalse($task_id); - $this->assertInternalType('int', $task_id); - $this->assertTrue($task_id > 0); - } - - public function testGetTaskByReference() - { - $task = $this->client->getTaskByReference(array('project_id' => 1, 'reference' => 'TICKET-1234')); - - $this->assertNotEmpty($task); - $this->assertEquals('Task with external ticket number', $task['title']); - $this->assertEquals('TICKET-1234', $task['reference']); - $this->assertEquals('http://127.0.0.1:8000/?controller=task&action=show&task_id='.$task['id'].'&project_id='.$task['project_id'], $task['url']); - } - - public function testCreateOverdueTask() - { - $this->assertNotFalse($this->client->createTask(array( - 'title' => 'overdue task', - 'project_id' => 1, - 'date_due' => date('Y-m-d', strtotime('-2days')), - ))); - } - - public function testGetOverdueTasksByProject() - { - $tasks = $this->client->getOverdueTasksByProject(1); - $this->assertNotEmpty($tasks); - $this->assertCount(1, $tasks); - $this->assertEquals('overdue task', $tasks[0]['title']); - $this->assertEquals('API test', $tasks[0]['project_name']); - } - - public function testGetOverdueTasks() - { - $tasks = $this->client->getOverdueTasks(); - $this->assertNotEmpty($tasks); - $this->assertCount(1, $tasks); - $this->assertEquals('overdue task', $tasks[0]['title']); - $this->assertEquals('API test', $tasks[0]['project_name']); - } -} diff --git a/tests/functionals/UserApiTest.php b/tests/functionals/UserApiTest.php deleted file mode 100644 index 3c7fc04e..00000000 --- a/tests/functionals/UserApiTest.php +++ /dev/null @@ -1,289 +0,0 @@ -<?php - -require_once __DIR__.'/../../vendor/autoload.php'; - -class UserApi extends PHPUnit_Framework_TestCase -{ - private $app = null; - private $admin = null; - private $user = null; - - public static function setUpBeforeClass() - { - if (DB_DRIVER === 'sqlite') { - @unlink(DB_FILENAME); - } elseif (DB_DRIVER === 'mysql') { - $pdo = new PDO('mysql:host='.DB_HOSTNAME, DB_USERNAME, DB_PASSWORD); - $pdo->exec('DROP DATABASE '.DB_NAME); - $pdo->exec('CREATE DATABASE '.DB_NAME); - $pdo = null; - } elseif (DB_DRIVER === 'postgres') { - $pdo = new PDO('pgsql:host='.DB_HOSTNAME, DB_USERNAME, DB_PASSWORD); - $pdo->exec('DROP DATABASE '.DB_NAME); - $pdo->exec('CREATE DATABASE '.DB_NAME.' WITH OWNER '.DB_USERNAME); - $pdo = null; - } - - $service = new Kanboard\ServiceProvider\DatabaseProvider; - - $db = $service->getInstance(); - $db->table('settings')->eq('option', 'api_token')->update(array('value' => API_KEY)); - $db->closeConnection(); - } - - public function setUp() - { - $this->app = new JsonRPC\Client(API_URL); - $this->app->authentication('jsonrpc', API_KEY); - // $this->app->debug = true; - - $this->admin = new JsonRPC\Client(API_URL); - $this->admin->authentication('admin', 'admin'); - // $this->admin->debug = true; - - $this->user = new JsonRPC\Client(API_URL); - $this->user->authentication('user', 'password'); - // $this->user->debug = true; - } - - public function testCreateProject() - { - $this->assertEquals(1, $this->app->createProject('team project')); - } - - public function testCreateUser() - { - $this->assertEquals(2, $this->app->createUser('user', 'password')); - } - - /** - * @expectedException JsonRPC\AccessDeniedException - */ - public function testNotAllowedAppProcedure() - { - $this->app->getMe(); - } - - /** - * @expectedException JsonRPC\AccessDeniedException - */ - public function testNotAllowedUserProcedure() - { - $this->user->getAllProjects(); - } - - /** - * @expectedException JsonRPC\AccessDeniedException - */ - public function testNotAllowedProjectForUser() - { - $this->user->getProjectById(1); - } - - public function testAllowedProjectForAdmin() - { - $this->assertNotEmpty($this->admin->getProjectById(1)); - } - - public function testGetTimezone() - { - $this->assertEquals('UTC', $this->user->getTimezone()); - } - - public function testGetVersion() - { - $this->assertEquals('master', $this->user->getVersion()); - } - - public function testGetDefaultColor() - { - $this->assertEquals('yellow', $this->user->getDefaultTaskColor()); - } - - public function testGetDefaultColors() - { - $colors = $this->user->getDefaultTaskColors(); - $this->assertNotEmpty($colors); - $this->assertArrayHasKey('red', $colors); - } - - public function testGetColorList() - { - $colors = $this->user->getColorList(); - $this->assertNotEmpty($colors); - $this->assertArrayHasKey('red', $colors); - $this->assertEquals('Red', $colors['red']); - } - - public function testGetMe() - { - $profile = $this->user->getMe(); - $this->assertNotEmpty($profile); - $this->assertEquals(2, $profile['id']); - $this->assertEquals('user', $profile['username']); - } - - public function testCreateMyPrivateProject() - { - $this->assertEquals(2, $this->user->createMyPrivateProject('my project')); - } - - public function testGetMyProjectsList() - { - $projects = $this->user->getMyProjectsList(); - $this->assertNotEmpty($projects); - $this->assertArrayNotHasKey(1, $projects); - $this->assertArrayHasKey(2, $projects); - $this->assertEquals('my project', $projects[2]); - } - - public function testGetMyProjects() - { - $projects = $this->user->getMyProjects(); - $this->assertNotEmpty($projects); - $this->assertCount(1, $projects); - $this->assertEquals(2, $projects[0]['id']); - $this->assertEquals('my project', $projects[0]['name']); - $this->assertNotEmpty($projects[0]['url']['calendar']); - $this->assertNotEmpty($projects[0]['url']['board']); - $this->assertNotEmpty($projects[0]['url']['list']); - } - - public function testGetProjectById() - { - $project = $this->user->getProjectById(2); - $this->assertNotEmpty($project); - $this->assertEquals('my project', $project['name']); - $this->assertEquals(1, $project['is_private']); - } - - public function testCreateTask() - { - $this->assertEquals(1, $this->user->createTask('my user title', 2)); - $this->assertEquals(2, $this->admin->createTask('my admin title', 1)); - } - - public function testCreateTaskWithWrongMember() - { - $this->assertFalse($this->user->createTask(array('title' => 'something', 'project_id' => 2, 'owner_id' => 1))); - $this->assertFalse($this->app->createTask(array('title' => 'something', 'project_id' => 1, 'owner_id' => 2))); - } - - public function testGetTask() - { - $task = $this->user->getTask(1); - $this->assertNotEmpty($task); - $this->assertEquals('my user title', $task['title']); - $this->assertEquals('yellow', $task['color_id']); - $this->assertArrayHasKey('color', $task); - $this->assertArrayHasKey('name', $task['color']); - $this->assertArrayHasKey('border', $task['color']); - $this->assertArrayHasKey('background', $task['color']); - } - - /** - * @expectedException JsonRPC\AccessDeniedException - */ - public function testGetAdminTask() - { - $this->user->getTask(2); - } - - /** - * @expectedException JsonRPC\AccessDeniedException - */ - public function testGetProjectActivityDenied() - { - $this->user->getProjectActivity(1); - } - - public function testGetProjectActivityAllowed() - { - $activity = $this->user->getProjectActivity(2); - $this->assertNotEmpty($activity); - } - - public function testGetMyActivityStream() - { - $activity = $this->user->getMyActivityStream(); - $this->assertNotEmpty($activity); - } - - public function testCloseTask() - { - $this->assertTrue($this->user->closeTask(1)); - } - - public function testOpenTask() - { - $this->assertTrue($this->user->openTask(1)); - } - - public function testMoveTaskPosition() - { - $this->assertTrue($this->user->moveTaskPosition(2, 1, 2, 1)); - } - - public function testUpdateTaskWithWrongMember() - { - $this->assertFalse($this->user->updateTask(array('id' => 1, 'title' => 'new title', 'reference' => 'test', 'owner_id' => 1))); - } - - public function testUpdateTask() - { - $this->assertTrue($this->user->updateTask(array('id' => 1, 'title' => 'new title', 'reference' => 'test', 'owner_id' => 2))); - } - - public function testGetbyReference() - { - $task = $this->user->getTaskByReference(2, 'test'); - $this->assertNotEmpty($task); - $this->assertEquals('new title', $task['title']); - $this->assertEquals(2, $task['column_id']); - $this->assertEquals(1, $task['position']); - } - - public function testGetMyDashboard() - { - $dashboard = $this->user->getMyDashboard(); - $this->assertNotEmpty($dashboard); - $this->assertArrayHasKey('projects', $dashboard); - $this->assertArrayHasKey('tasks', $dashboard); - $this->assertArrayHasKey('subtasks', $dashboard); - $this->assertNotEmpty($dashboard['projects']); - $this->assertNotEmpty($dashboard['tasks']); - } - - public function testGetBoard() - { - $this->assertNotEmpty($this->user->getBoard(2)); - } - - public function testCreateOverdueTask() - { - $this->assertNotFalse($this->user->createTask(array( - 'title' => 'overdue task', - 'project_id' => 2, - 'date_due' => date('Y-m-d', strtotime('-2days')), - 'owner_id' => 2, - ))); - } - - public function testGetMyOverdueTasks() - { - $tasks = $this->user->getMyOverdueTasks(); - $this->assertNotEmpty($tasks); - $this->assertCount(1, $tasks); - $this->assertEquals('overdue task', $tasks[0]['title']); - $this->assertEquals('my project', $tasks[0]['project_name']); - } - - public function testGetOverdueTasksByProject() - { - $tasks = $this->user->getOverdueTasksByProject(2); - $this->assertNotEmpty($tasks); - $this->assertCount(1, $tasks); - $this->assertEquals('overdue task', $tasks[0]['title']); - $this->assertEquals('my project', $tasks[0]['project_name']); - } -} |