summaryrefslogtreecommitdiff
path: root/tests/integration/BaseIntegrationTest.php
blob: cd83717360c66ed1e651ffeb34772b1aae704057 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php

require_once __DIR__.'/../../vendor/autoload.php';

abstract class BaseIntegrationTest extends PHPUnit_Framework_TestCase
{
    protected $app = null;
    protected $admin = null;
    protected $manager = null;
    protected $user = null;

    protected $adminUserId = 0;
    protected $managerUserId = 0;
    protected $userUserId = 0;

    protected $projectName = '';
    protected $projectId = 0;
    protected $taskTitle = 'My task';
    protected $taskId = 0;

    protected $groupName1 = 'My Group A';
    protected $groupName2 = 'My Group B';
    protected $groupId1;
    protected $groupId2;

    protected $username = 'test-user';
    protected $userId;

    public function setUp()
    {
        $this->setUpAppClient();
        $this->setUpAdminUser();
        $this->setUpManagerUser();
        $this->setUpStandardUser();
    }

    public function setUpAppClient()
    {
        $this->app = new JsonRPC\Client(API_URL);
        $this->app->authentication('jsonrpc', API_KEY);
        $this->app->getHttpClient()->withDebug()->withTimeout(10);
    }

    public function setUpAdminUser()
    {
        $this->adminUserId = $this->getUserId('superuser');

        if (! $this->adminUserId) {
            $this->adminUserId = $this->app->createUser('superuser', 'password', 'Admin User', 'user@localhost', 'app-admin');
            $this->assertNotFalse($this->adminUserId);
        }

        $this->admin = new JsonRPC\Client(API_URL);
        $this->admin->authentication('superuser', 'password');
        $this->admin->getHttpClient()->withDebug();
    }

    public function setUpManagerUser()
    {
        $this->managerUserId = $this->getUserId('manager');

        if (! $this->managerUserId) {
            $this->managerUserId = $this->app->createUser('manager', 'password', 'Manager User', 'user@localhost', 'app-manager');
            $this->assertNotFalse($this->managerUserId);
        }

        $this->manager = new JsonRPC\Client(API_URL);
        $this->manager->authentication('manager', 'password');
        $this->manager->getHttpClient()->withDebug();
    }

    public function setUpStandardUser()
    {
        $this->userUserId = $this->getUserId('user');

        if (! $this->userUserId) {
            $this->userUserId = $this->app->createUser('user', 'password', 'Standard User', 'user@localhost', 'app-user');
            $this->assertNotFalse($this->userUserId);
        }

        $this->user = new JsonRPC\Client(API_URL);
        $this->user->authentication('user', 'password');
        $this->user->getHttpClient()->withDebug();
    }

    public function getUserId($username)
    {
        $user = $this->app->getUserByName($username);

        if (! empty($user)) {
            return $user['id'];
        }

        return 0;
    }

    public function assertCreateTeamProject()
    {
        $this->projectId = $this->app->createProject($this->projectName, 'Description');
        $this->assertNotFalse($this->projectId);
    }

    public function assertCreateUser()
    {
        $this->userId = $this->app->createUser($this->username, 'password');
        $this->assertNotFalse($this->userId);
    }

    public function assertCreateGroups()
    {
        $this->groupId1 = $this->app->createGroup($this->groupName1);
        $this->groupId2 = $this->app->createGroup($this->groupName2, 'External ID');
        $this->assertNotFalse($this->groupId1);
        $this->assertNotFalse($this->groupId2);
    }

    public function assertCreateTask()
    {
        $this->taskId = $this->app->createTask(array('title' => $this->taskTitle, 'project_id' => $this->projectId));
        $this->assertNotFalse($this->taskId);
    }
}