summaryrefslogtreecommitdiff
path: root/tests/units/Model/TaskPermissionTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/units/Model/TaskPermissionTest.php')
-rw-r--r--tests/units/Model/TaskPermissionTest.php105
1 files changed, 105 insertions, 0 deletions
diff --git a/tests/units/Model/TaskPermissionTest.php b/tests/units/Model/TaskPermissionTest.php
new file mode 100644
index 00000000..af413a76
--- /dev/null
+++ b/tests/units/Model/TaskPermissionTest.php
@@ -0,0 +1,105 @@
+<?php
+
+require_once __DIR__.'/../Base.php';
+
+use Model\Task;
+use Model\TaskCreation;
+use Model\TaskFinder;
+use Model\TaskPermission;
+use Model\Project;
+use Model\Category;
+use Model\User;
+use Model\UserSession;
+
+class TaskPermissionTest extends Base
+{
+ public function testPrepareCreation()
+ {
+ $tc = new TaskCreation($this->container);
+ $tf = new TaskFinder($this->container);
+ $tp = new TaskPermission($this->container);
+ $p = new Project($this->container);
+ $u = new User($this->container);
+ $us = new UserSession($this->container);
+
+ $this->assertNotFalse($u->create(array('username' => 'toto', 'password' => '123456')));
+ $this->assertNotFalse($u->create(array('username' => 'toto2', 'password' => '123456')));
+ $this->assertEquals(1, $p->create(array('name' => 'Project #1')));
+ $this->assertEquals(1, $tc->create(array('title' => 'Task #1', 'project_id' => 1, 'creator_id' => 1)));
+ $this->assertEquals(2, $tc->create(array('title' => 'Task #2', 'project_id' => 1, 'creator_id' => 2)));
+ $this->assertEquals(3, $tc->create(array('title' => 'Task #3', 'project_id' => 1, 'creator_id' => 3)));
+ $this->assertEquals(4, $tc->create(array('title' => 'Task #4', 'project_id' => 1)));
+
+ // User #1 can remove everything
+ $user = $u->getbyId(1);
+ $this->assertNotEmpty($user);
+ $us->refresh($user);
+
+ $task = $tf->getbyId(1);
+ $this->assertNotEmpty($task);
+ $this->assertTrue($tp->canRemoveTask($task));
+
+ // User #2 can't remove the task #1
+ $user = $u->getbyId(2);
+ $this->assertNotEmpty($user);
+ $us->refresh($user);
+
+ $task = $tf->getbyId(1);
+ $this->assertNotEmpty($task);
+ $this->assertFalse($tp->canRemoveTask($task));
+
+ // User #1 can remove everything
+ $user = $u->getbyId(1);
+ $this->assertNotEmpty($user);
+ $us->refresh($user);
+
+ $task = $tf->getbyId(2);
+ $this->assertNotEmpty($task);
+ $this->assertTrue($tp->canRemoveTask($task));
+
+ // User #2 can remove his own task
+ $user = $u->getbyId(2);
+ $this->assertNotEmpty($user);
+ $us->refresh($user);
+
+ $task = $tf->getbyId(2);
+ $this->assertNotEmpty($task);
+ $this->assertTrue($tp->canRemoveTask($task));
+
+ // User #1 can remove everything
+ $user = $u->getbyId(1);
+ $this->assertNotEmpty($user);
+ $us->refresh($user);
+
+ $task = $tf->getbyId(3);
+ $this->assertNotEmpty($task);
+ $this->assertTrue($tp->canRemoveTask($task));
+
+ // User #2 can't remove the task #3
+ $user = $u->getbyId(2);
+ $this->assertNotEmpty($user);
+ $us->refresh($user);
+
+ $task = $tf->getbyId(3);
+ $this->assertNotEmpty($task);
+ $this->assertFalse($tp->canRemoveTask($task));
+
+ // User #1 can remove everything
+ $user = $u->getbyId(1);
+ $this->assertNotEmpty($user);
+ $us->refresh($user);
+
+ $task = $tf->getbyId(4);
+ $this->assertNotEmpty($task);
+ $this->assertTrue($tp->canRemoveTask($task));
+
+ // User #2 can't remove the task #4
+ $user = $u->getbyId(2);
+ $this->assertNotEmpty($user);
+ $us->refresh($user);
+
+ $task = $tf->getbyId(4);
+ $this->assertNotEmpty($task);
+ $this->assertFalse($tp->canRemoveTask($task));
+ }
+}