Skip to content
Snippets Groups Projects
RegisteredNumberRangeControllerTest.php 20.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 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 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 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 304 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 344 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 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426
    <?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 RegisteredNumberRangeControllerTest extends TestCase
    {
        private static $id = null;
        private static $siteId = null;
    
        public function testCreate()
        {
            $registeredNumberRangeController = new \RegisteredMail\controllers\RegisteredNumberRangeController();
            $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::$siteId = $responseBody['id'];
    
            $body = [
                'registeredMailType' => 'B01',
                'trackerNumber'      => 'AZPOKF30KDZP',
                'rangeStart'         => 1,
                'rangeEnd'           => 1000,
                'siteId'             => self::$siteId
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->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 = $registeredNumberRangeController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
            $this->assertSame(200, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
    
            $this->assertNotEmpty($responseBody['range']);
            $this->assertSame(self::$id, $responseBody['range']['id']);
            $this->assertSame('B01', $responseBody['range']['registeredMailType']);
            $this->assertSame('AZPOKF30KDZP', $responseBody['range']['trackerNumber']);
            $this->assertSame(1, $responseBody['range']['rangeStart']);
            $this->assertSame(1000, $responseBody['range']['rangeEnd']);
            $this->assertSame(self::$siteId, $responseBody['range']['siteId']);
            $this->assertSame($GLOBALS['id'], $responseBody['range']['creator']);
            $this->assertSame(1, $responseBody['range']['currentNumber']);
            $this->assertSame(0, $responseBody['range']['fullness']);
    
            // fail
            $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
            $request = \Slim\Http\Request::createFromEnvironment($environment);
    
            $body = [
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->create($fullRequest, new \Slim\Http\Response());
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body registeredMailType is empty or not a string', $responseBody['errors']);
    
            $body = [
                'registeredMailType' => 'B01'
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->create($fullRequest, new \Slim\Http\Response());
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body trackerNumber is empty or not a string', $responseBody['errors']);
    
            $body = [
                'registeredMailType' => 'B01',
                'trackerNumber'      => 'AZPOKF30KDZP',
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->create($fullRequest, new \Slim\Http\Response());
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body rangeStart is empty or not an integer', $responseBody['errors']);
    
            $body = [
                'registeredMailType' => 'B01',
                'trackerNumber'      => 'AZPOKF30KDZP',
                'rangeStart'         => 1,
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->create($fullRequest, new \Slim\Http\Response());
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body rangeEnd is empty or not an integer', $responseBody['errors']);
    
            $body = [
                'registeredMailType' => 'B01',
                'trackerNumber'      => 'AZPOKF30KDZP',
                'rangeStart'         => 1,
                'rangeEnd'           => 1000,
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->create($fullRequest, new \Slim\Http\Response());
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body siteId is empty or not an integer', $responseBody['errors']);
    
            $body = [
                'registeredMailType' => 'B01',
                'trackerNumber'      => 'AZPOKF30KDZP',
                'rangeStart'         => 1,
                'rangeEnd'           => 1000,
                'siteId'             => self::$siteId * 1000
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->create($fullRequest, new \Slim\Http\Response());
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body siteId does not exist', $responseBody['errors']);
    
            $GLOBALS['login'] = 'bbain';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
    
            $response = $registeredNumberRangeController->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()
        {
            $registeredNumberRangeController = new \RegisteredMail\controllers\RegisteredNumberRangeController();
    
            //  GET
            $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
            $request = \Slim\Http\Request::createFromEnvironment($environment);
            $response = $registeredNumberRangeController->get($request, new \Slim\Http\Response());
            $this->assertSame(200, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
    
            $this->assertIsArray($responseBody['ranges']);
            $this->assertNotEmpty($responseBody['ranges']);
    
            $this->assertIsArray($responseBody['ranges'][0]);
            $this->assertNotEmpty($responseBody['ranges'][0]);
    
            $this->assertNotEmpty($responseBody['ranges'][0]);
            $this->assertSame(self::$id, $responseBody['ranges'][0]['id']);
            $this->assertSame('B01', $responseBody['ranges'][0]['registeredMailType']);
            $this->assertSame('AZPOKF30KDZP', $responseBody['ranges'][0]['trackerNumber']);
            $this->assertSame(1, $responseBody['ranges'][0]['rangeStart']);
            $this->assertSame(1000, $responseBody['ranges'][0]['rangeEnd']);
            $this->assertSame(self::$siteId, $responseBody['ranges'][0]['siteId']);
            $this->assertSame($GLOBALS['id'], $responseBody['ranges'][0]['creator']);
            $this->assertSame(1, $responseBody['ranges'][0]['currentNumber']);
            $this->assertSame(0, $responseBody['ranges'][0]['fullness']);
    
            $GLOBALS['login'] = 'bbain';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
    
            $response = $registeredNumberRangeController->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()
        {
            $registeredNumberRangeController = new \RegisteredMail\controllers\RegisteredNumberRangeController();
    
            //  GET
            $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
            $request = \Slim\Http\Request::createFromEnvironment($environment);
            $response = $registeredNumberRangeController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
            $this->assertSame(200, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
    
            $this->assertNotEmpty($responseBody['range']);
            $this->assertSame(self::$id, $responseBody['range']['id']);
            $this->assertSame('B01', $responseBody['range']['registeredMailType']);
            $this->assertSame('AZPOKF30KDZP', $responseBody['range']['trackerNumber']);
            $this->assertSame(1, $responseBody['range']['rangeStart']);
            $this->assertSame(1000, $responseBody['range']['rangeEnd']);
            $this->assertSame(self::$siteId, $responseBody['range']['siteId']);
            $this->assertSame($GLOBALS['id'], $responseBody['range']['creator']);
            $this->assertSame(1, $responseBody['range']['currentNumber']);
            $this->assertSame(0, $responseBody['range']['fullness']);
    
            $GLOBALS['login'] = 'bbain';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
    
            $response = $registeredNumberRangeController->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()
        {
            $registeredNumberRangeController = new \RegisteredMail\controllers\RegisteredNumberRangeController();
    
            //  UPDATE
            $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
            $request = \Slim\Http\Request::createFromEnvironment($environment);
    
            $body = [
                'registeredMailType' => 'B01',
                'trackerNumber'      => 'AZPOKF30KDZP',
                'rangeStart'         => 1,
                'rangeEnd'           => 2000,
                'siteId'             => self::$siteId
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->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 = $registeredNumberRangeController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
            $responseBody = json_decode((string)$response->getBody(), true);
    
            $this->assertNotEmpty($responseBody['range']);
            $this->assertSame(self::$id, $responseBody['range']['id']);
            $this->assertSame('B01', $responseBody['range']['registeredMailType']);
            $this->assertSame('AZPOKF30KDZP', $responseBody['range']['trackerNumber']);
            $this->assertSame(1, $responseBody['range']['rangeStart']);
            $this->assertSame(2000, $responseBody['range']['rangeEnd']);
            $this->assertSame(self::$siteId, $responseBody['range']['siteId']);
            $this->assertSame($GLOBALS['id'], $responseBody['range']['creator']);
            $this->assertSame(1, $responseBody['range']['currentNumber']);
            $this->assertSame(0, $responseBody['range']['fullness']);
    
            // fail
            $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
            $request = \Slim\Http\Request::createFromEnvironment($environment);
    
            $body = [
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body registeredMailType is empty or not a string', $responseBody['errors']);
    
            $body = [
                'registeredMailType' => 'B01'
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body trackerNumber is empty or not a string', $responseBody['errors']);
    
            $body = [
                'registeredMailType' => 'B01',
                'trackerNumber'      => 'AZPOKF30KDZP',
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body rangeStart is empty or not an integer', $responseBody['errors']);
    
            $body = [
                'registeredMailType' => 'B01',
                'trackerNumber'      => 'AZPOKF30KDZP',
                'rangeStart'         => 1,
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body rangeEnd is empty or not an integer', $responseBody['errors']);
    
            $body = [
                'registeredMailType' => 'B01',
                'trackerNumber'      => 'AZPOKF30KDZP',
                'rangeStart'         => 1,
                'rangeEnd'           => 1000,
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body siteId is empty or not an integer', $responseBody['errors']);
    
            $body = [
                'registeredMailType' => 'B01',
                'trackerNumber'      => 'AZPOKF30KDZP',
                'rangeStart'         => 1,
                'rangeEnd'           => 1000,
                'siteId'             => self::$siteId * 1000
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
    
            $response = $registeredNumberRangeController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Body siteId does not exist', $responseBody['errors']);
    
            $response = $registeredNumberRangeController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id * 1000]);
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Range 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 = $registeredNumberRangeController->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()
        {
            $registeredNumberRangeController = new \RegisteredMail\controllers\RegisteredNumberRangeController();
            $issuingSiteController = new \RegisteredMail\controllers\IssuingSiteController();
    
            //  DELETE
            $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
            $request = \Slim\Http\Request::createFromEnvironment($environment);
    
            $response = $registeredNumberRangeController->delete($request, new \Slim\Http\Response(), ['id' => self::$id]);
            $this->assertSame(204, $response->getStatusCode());
    
            $response = $registeredNumberRangeController->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 = $registeredNumberRangeController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]);
            $responseBody = json_decode((string)$response->getBody(), true);
    
            $this->assertSame('Range 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 = $registeredNumberRangeController->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'];
    
            $response = $issuingSiteController->delete($request, new \Slim\Http\Response(), ['id' => self::$siteId]);
            $this->assertSame(204, $response->getStatusCode());
        }
    }