diff --git a/app/Model/TaskCreationModel.php b/app/Model/TaskCreationModel.php index 044d754db..8f10ea4eb 100644 --- a/app/Model/TaskCreationModel.php +++ b/app/Model/TaskCreationModel.php @@ -78,7 +78,8 @@ class TaskCreationModel extends Base $values['title'] = t('Untitled'); } - if ($this->userSession->isLogged()) { + // Note: Do not override the creator_id if the task is imported + if (empty($values['creator_id']) && $this->userSession->isLogged()) { $values['creator_id'] = $this->userSession->getId(); } diff --git a/tests/units/Model/TaskCreationModelTest.php b/tests/units/Model/TaskCreationModelTest.php index fffce126b..09da085f1 100644 --- a/tests/units/Model/TaskCreationModelTest.php +++ b/tests/units/Model/TaskCreationModelTest.php @@ -7,6 +7,7 @@ use Kanboard\Model\TaskModel; use Kanboard\Model\TaskCreationModel; use Kanboard\Model\TaskFinderModel; use Kanboard\Model\ProjectModel; +use Kanboard\Model\UserModel; class TaskCreationModelTest extends Base { @@ -140,15 +141,40 @@ class TaskCreationModelTest extends Base $projectModel = new ProjectModel($this->container); $taskCreationModel = new TaskCreationModel($this->container); $taskFinderModel = new TaskFinderModel($this->container); + $userModel = new UserModel($this->container); + $this->assertEquals(2, $userModel->create(array('username' => 'someone'))); + $this->assertEquals(3, $userModel->create(array('username' => 'logged_user'))); $this->assertEquals(1, $projectModel->create(array('name' => 'test'))); - $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test', 'creator_id' => 1))); + // Scenario 1: creator_id is defined and no logged user + $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test', 'creator_id' => 2))); $task = $taskFinderModel->getById(1); $this->assertNotEmpty($task); - $this->assertEquals(1, $task['id']); - $this->assertEquals(1, $task['creator_id']); + $this->assertEquals(2, $task['creator_id']); + + // Scenario 2: creator_id is not defined and no logged user + $this->assertEquals(2, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test'))); + $task = $taskFinderModel->getById(2); + $this->assertNotEmpty($task); + $this->assertEquals(2, $task['id']); + $this->assertEquals(0, $task['creator_id']); + + // Scenario 3: creator_id is not defined and a user is logged + $_SESSION['user'] = array('id' => 3); + $this->assertEquals(3, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test'))); + $task = $taskFinderModel->getById(3); + $this->assertNotEmpty($task); + $this->assertEquals(3, $task['id']); + $this->assertEquals(3, $task['creator_id']); + + // Scenario 4: creator_id is defined and it's different than the logged user + $this->assertEquals(4, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test', 'creator_id' => 2))); + $task = $taskFinderModel->getById(4); + $this->assertNotEmpty($task); + $this->assertEquals(4, $task['id']); + $this->assertEquals(2, $task['creator_id']); } public function testThatCreatorIsDefined()