Newer
Older
<?php
/**
* 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 IssuingSiteControllerTest extends TestCase
{
private static $id = null;
public function testCreate()
{
$issuingSiteController = new \RegisteredMail\controllers\IssuingSiteController();
// CREATE
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$body = [
'siteLabel' => 'Scranton',
'postOfficeLabel' => 'Scranton Post Office',
'accountNumber' => 42,
'addressStreet' => '1725',
'addressAdditional1' => null,
'addressAdditional2' => null,
'addressPostcode' => '18505',
'addressTown' => 'Scranton',
'addressCountry' => 'USA',
'entities' => [6]
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $issuingSiteController->create($fullRequest, new \Slim\Http\Response());
$this->assertSame(200, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertIsInt($responseBody['id']);
self::$id = $responseBody['id'];
// READ
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $issuingSiteController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
$this->assertSame(200, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertNotEmpty($responseBody['site']);
$this->assertSame(self::$id, $responseBody['site']['id']);
$this->assertSame('Scranton', $responseBody['site']['siteLabel']);
$this->assertSame('Scranton Post Office', $responseBody['site']['postOfficeLabel']);
$this->assertSame('42', $responseBody['site']['accountNumber']);
$this->assertSame('1725', $responseBody['site']['addressStreet']);
$this->assertEmpty($responseBody['site']['addressAdditional1']);
$this->assertEmpty($responseBody['site']['addressAdditional2']);
$this->assertSame('18505', $responseBody['site']['addressPostcode']);
$this->assertSame('Scranton', $responseBody['site']['addressTown']);
$this->assertSame('USA', $responseBody['site']['addressCountry']);
$this->assertNotEmpty($responseBody['site']['entities']);
$this->assertSame(1, count($responseBody['site']['entities']));
$this->assertSame(6, $responseBody['site']['entities'][0]);
// fail
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $issuingSiteController->create($fullRequest, new \Slim\Http\Response());
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Body siteLabel is empty or not a string', $responseBody['errors']);
$body = [
'siteLabel' => 'Scranton',
'postOfficeLabel' => 'Scranton Post Office',
'accountNumber' => 42,
'addressStreet' => '1725',
'addressAdditional1' => null,
'addressAdditional2' => null,
'addressPostcode' => '18505',
'addressTown' => 'Scranton',
'addressCountry' => 'USA',
'entities' => 'toto'
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $issuingSiteController->create($fullRequest, new \Slim\Http\Response());
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Body entities is not an array', $responseBody['errors']);
$body = [
'siteLabel' => 'Scranton',
'postOfficeLabel' => 'Scranton Post Office',
'accountNumber' => 42,
'addressStreet' => '1725',
'addressAdditional1' => null,
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
'addressAdditional2' => null,
'addressPostcode' => '18505',
'addressTown' => 'Scranton',
'addressCountry' => 'USA',
'entities' => ['toto']
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $issuingSiteController->create($fullRequest, new \Slim\Http\Response());
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Body entities[0] is not an integer', $responseBody['errors']);
$GLOBALS['login'] = 'bbain';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $issuingSiteController->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['login'] = 'superadmin';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
}
public function testGet()
{
$issuingSiteController = new \RegisteredMail\controllers\IssuingSiteController();
// GET
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $issuingSiteController->get($request, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertIsArray($responseBody['sites']);
$this->assertNotEmpty($responseBody['sites']);
$this->assertIsArray($responseBody['sites'][0]);
$this->assertNotEmpty($responseBody['sites'][0]);
$this->assertSame(self::$id, $responseBody['sites'][0]['id']);
$this->assertSame('Scranton', $responseBody['sites'][0]['siteLabel']);
$this->assertSame('Scranton Post Office', $responseBody['sites'][0]['postOfficeLabel']);
$this->assertSame('42', $responseBody['sites'][0]['accountNumber']);
$this->assertSame('1725', $responseBody['sites'][0]['addressStreet']);
$this->assertEmpty($responseBody['sites'][0]['addressAdditional1']);
$this->assertEmpty($responseBody['sites'][0]['addressAdditional2']);
$this->assertSame('18505', $responseBody['sites'][0]['addressPostcode']);
$this->assertSame('Scranton', $responseBody['sites'][0]['addressTown']);
$this->assertSame('USA', $responseBody['sites'][0]['addressCountry']);
$GLOBALS['login'] = 'bbain';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
$response = $issuingSiteController->get($request, new \Slim\Http\Response());
$this->assertSame(403, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Service forbidden', $responseBody['errors']);
$GLOBALS['login'] = 'superadmin';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
}
public function testGetById()
{
$issuingSiteController = new \RegisteredMail\controllers\IssuingSiteController();
// GET
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $issuingSiteController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertIsArray($responseBody['site']);
$this->assertNotEmpty($responseBody['site']);
$this->assertSame(self::$id, $responseBody['site']['id']);
$this->assertSame('Scranton', $responseBody['site']['siteLabel']);
$this->assertSame('Scranton Post Office', $responseBody['site']['postOfficeLabel']);
$this->assertSame('42', $responseBody['site']['accountNumber']);
$this->assertSame('1725', $responseBody['site']['addressStreet']);
$this->assertEmpty($responseBody['site']['addressAdditional1']);
$this->assertEmpty($responseBody['site']['addressAdditional2']);
$this->assertSame('18505', $responseBody['site']['addressPostcode']);
$this->assertSame('Scranton', $responseBody['site']['addressTown']);
$this->assertSame('USA', $responseBody['site']['addressCountry']);
$this->assertNotEmpty($responseBody['site']['entities']);
$this->assertSame(1, count($responseBody['site']['entities']));
$this->assertSame(6, $responseBody['site']['entities'][0]);
$GLOBALS['login'] = 'bbain';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
$response = $issuingSiteController->getById($request, 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['login'] = 'superadmin';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
}
public function testUpdate()
{
$issuingSiteController = new \RegisteredMail\controllers\IssuingSiteController();
// UPDATE
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$body = [
'siteLabel' => 'Scranton - UP',
'postOfficeLabel' => 'Scranton Post Office',
'accountNumber' => 42,
'addressName' => 'Dunder Mifflin Scranton',
'addressStreet' => '1725',
'addressAdditional1' => null,
'addressAdditional2' => null,
'addressPostcode' => '18505',
'addressTown' => 'Scranton',
'addressCountry' => 'USA',
'entities' => [6, 7]
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $issuingSiteController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
$this->assertSame(204, $response->getStatusCode());
// READ
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $issuingSiteController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertNotEmpty($responseBody['site']);
$this->assertSame(self::$id, $responseBody['site']['id']);
$this->assertSame('Scranton - UP', $responseBody['site']['siteLabel']);
$this->assertSame('Scranton Post Office', $responseBody['site']['postOfficeLabel']);
$this->assertSame('42', $responseBody['site']['accountNumber']);
$this->assertSame('1725', $responseBody['site']['addressStreet']);
$this->assertEmpty($responseBody['site']['addressAdditional1']);
$this->assertEmpty($responseBody['site']['addressAdditional2']);
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
$this->assertSame('18505', $responseBody['site']['addressPostcode']);
$this->assertSame('Scranton', $responseBody['site']['addressTown']);
$this->assertSame('USA', $responseBody['site']['addressCountry']);
$this->assertNotEmpty($responseBody['site']['entities']);
$this->assertSame(2, count($responseBody['site']['entities']));
$this->assertSame(6, $responseBody['site']['entities'][0]);
$this->assertSame(7, $responseBody['site']['entities'][1]);
// fail
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $issuingSiteController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Body siteLabel is empty or not a string', $responseBody['errors']);
$body = [
'siteLabel' => 'Scranton',
'postOfficeLabel' => 'Scranton Post Office',
'accountNumber' => 42,
'addressStreet' => '1725',
'addressAdditional1' => null,
'addressAdditional2' => null,
'addressPostcode' => '18505',
'addressTown' => 'Scranton',
'addressCountry' => 'USA',
'entities' => 'toto'
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $issuingSiteController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Body entities is not an array', $responseBody['errors']);
$body = [
'siteLabel' => 'Scranton',
'postOfficeLabel' => 'Scranton Post Office',
'accountNumber' => 42,
'addressStreet' => '1725',
'addressAdditional1' => null,
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
'addressAdditional2' => null,
'addressPostcode' => '18505',
'addressTown' => 'Scranton',
'addressCountry' => 'USA',
'entities' => ['toto']
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $issuingSiteController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Body entities[0] is not an integer', $responseBody['errors']);
$response = $issuingSiteController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id * 1000]);
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Issuing site not found', $responseBody['errors']);
$GLOBALS['login'] = 'bbain';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $issuingSiteController->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['login'] = 'superadmin';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
}
public function testDelete()
{
$issuingSiteController = new \RegisteredMail\controllers\IssuingSiteController();
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
// DELETE
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $issuingSiteController->delete($request, new \Slim\Http\Response(), ['id' => self::$id]);
$this->assertSame(204, $response->getStatusCode());
$response = $issuingSiteController->delete($request, new \Slim\Http\Response(), ['id' => self::$id]);
$this->assertSame(204, $response->getStatusCode());
// READ
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $issuingSiteController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
$responseBody = json_decode((string)$response->getBody(), true);
$this->assertSame('Issuing site not found', $responseBody['errors']);
// Fail
$GLOBALS['login'] = 'bbain';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
$body = [
];
$fullRequest = \httpRequestCustom::addContentInBody($body, $request);
$response = $issuingSiteController->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['login'] = 'superadmin';
$userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
$GLOBALS['id'] = $userInfo['id'];
}
}