Newer
Older
/**
* Copyright Maarch since 2008 under licence GPLv3.
* See LICENCE.txt file at the root folder for more details.
* This file is part of Maarch software.
*
*/
use PHPUnit\Framework\TestCase;
class PriorityControllerTest extends TestCase
{
private static $id = null;
private static $priorities = null;
public function testCreate()
{
$priorityController = new \Priority\controllers\PriorityController();
// CREATE
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
'label' => 'TEST-OVER-URGENT',
'color' => '#ffffff',
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $priorityController->create($fullRequest, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody());
self::$id = $responseBody->priority;
$this->assertIsString(self::$id);
// READ
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $priorityController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame(self::$id, $responseBody->priority->id);
$this->assertSame('TEST-OVER-URGENT', $responseBody->priority->label);
$this->assertSame('#ffffff', $responseBody->priority->color);
$this->assertSame(72, $responseBody->priority->delays);
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
// fail
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $priorityController->create($fullRequest, new \Slim\Http\Response());
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Body (label, color or delays) is empty or type is incorrect', $responseBody['errors']);
$body = [
'label' => 'TEST-OVER-URGENT',
'color' => '#ffffff',
'delays' => '72',
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $priorityController->create($fullRequest, new \Slim\Http\Response());
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame(_PRIORITY_DELAY_ALREADY_SET, $responseBody['errors']);
$GLOBALS['userId'] = 'bbain';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $priorityController->create($fullRequest, new \Slim\Http\Response());
$this->assertSame(403, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Service forbidden', $responseBody['errors']);
$GLOBALS['userId'] = 'superadmin';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
}
public function testGet()
{
$priorityController = new \Priority\controllers\PriorityController();
// GET
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $priorityController->get($request, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody());
$this->assertIsArray($responseBody->priorities);
$this->assertNotNull($responseBody->priorities);
}
public function testUpdate()
{
$priorityController = new \Priority\controllers\PriorityController();
// UPDATE
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$aArgs = [
'label' => 'TEST-OVER-URGENT-UPDATED',
'color' => '#f2f2f2',
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $priorityController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('success', $responseBody->success);
// READ
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $priorityController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame(self::$id, $responseBody->priority->id);
$this->assertSame('TEST-OVER-URGENT-UPDATED', $responseBody->priority->label);
$this->assertSame('#f2f2f2', $responseBody->priority->color);
$this->assertSame(64, $responseBody->priority->delays);
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
// fail
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $priorityController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Body (label, color or delays) is empty or type is incorrect', $responseBody['errors']);
$body = [
'label' => 'TEST-OVER-URGENT',
'color' => '#ffffff',
'delays' => '64',
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $priorityController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id * 1000]);
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame(_PRIORITY_DELAY_ALREADY_SET, $responseBody['errors']);
$GLOBALS['userId'] = 'bbain';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $priorityController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
$this->assertSame(403, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Service forbidden', $responseBody['errors']);
$GLOBALS['userId'] = 'superadmin';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
}
public function testDelete()
{
$priorityController = new \Priority\controllers\PriorityController();
// DELETE
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $priorityController->delete($request, new \Slim\Http\Response(), ['id' => self::$id]);
$responseBody = json_decode((string)$response->getBody());
$this->assertIsArray($responseBody->priorities);
// READ
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $priorityController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('Priority not found', $responseBody->errors);
// Fail
$GLOBALS['userId'] = 'bbain';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $priorityController->delete($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
$this->assertSame(403, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Service forbidden', $responseBody['errors']);
$GLOBALS['userId'] = 'superadmin';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
public function testGetSorted()
{
$priorityController = new \Priority\controllers\PriorityController();
// GET
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $priorityController->getSorted($request, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertIsArray($responseBody['priorities']);
$this->assertNotEmpty($responseBody['priorities']);
foreach ($responseBody['priorities'] as $value) {
$this->assertNotEmpty($value['id']);
$this->assertNotEmpty($value['label']);
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
self::$priorities = $responseBody['priorities'];
// Fail
$GLOBALS['userId'] = 'bbain';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $priorityController->getSorted($fullRequest, new \Slim\Http\Response());
$this->assertSame(403, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Service forbidden', $responseBody['errors']);
$GLOBALS['userId'] = 'superadmin';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
}
public function testUpdateSorted()
{
$priorityController = new \Priority\controllers\PriorityController();
// PUT
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$priority2 = self::$priorities[1];
self::$priorities[1] = self::$priorities[0];
self::$priorities[0] = $priority2;
$fullRequest = \httpRequestCustom::addContentInBody(self::$priorities, $request);
$response = $priorityController->updateSort($fullRequest, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertIsArray($responseBody['priorities']);
$this->assertNotEmpty($responseBody['priorities']);
foreach ($responseBody['priorities'] as $value) {
$this->assertNotEmpty($value['id']);
$this->assertNotEmpty($value['label']);
}
// fail
$GLOBALS['userId'] = 'bbain';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $priorityController->updateSort($fullRequest, new \Slim\Http\Response());
$this->assertSame(403, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Service forbidden', $responseBody['errors']);
$GLOBALS['userId'] = 'superadmin';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];