Skip to content
Snippets Groups Projects
DatasourceControllerTest.php 18.7 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
    <?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 DatasourceControllerTest extends TestCase
    {
        private static $noteId = null;
        private static $resId = null;
    
        public function testInit()
        {
            $resController = new \Resource\controllers\ResController();
    
            //  CREATE
            $GLOBALS['login'] = 'cchaplin';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
    
            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
            $request        = \Slim\Http\Request::createFromEnvironment($environment);
    
            $fileContent = file_get_contents('test/unitTests/samples/test.txt');
            $encodedFile = base64_encode($fileContent);
    
            $argsMailNew = [
                'modelId'          => 1,
                'status'           => 'NEW',
                'encodedFile'      => $encodedFile,
                'format'           => 'txt',
                'confidentiality'  => false,
                'documentDate'     => '2019-01-01 17:18:47',
                'arrivalDate'      => '2019-01-01 17:18:47',
                'processLimitDate' => '2029-01-01',
                'doctype'          => 102,
                'destination'      => 15,
                'initiator'        => 15,
                'subject'          => 'Breaking News : Superman is dead again - PHP unit',
                'typist'           => 19,
                'priority'         => 'poiuytre1357nbvc',
                'followed'         => true,
                'diffusionList'    => [
                    [
                        'id'   => 11,
                        'type' => 'user',
                        'mode' => 'dest'
                    ]
                ]
            ];
    
            $fullRequest = httpRequestCustom::addContentInBody($argsMailNew, $request);
    
            $response     = $resController->create($fullRequest, new \Slim\Http\Response());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertIsInt($responseBody['resId']);
            self::$resId = $responseBody['resId'];
    
            $noteController = new \Note\controllers\NoteController();
    
            // CREATE Note
            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
            $request        = \Slim\Http\Request::createFromEnvironment($environment);
    
            $aArgs = [
                'value'     => "NOTE TEST",
                'entities'  => [],
                'resId'     => self::$resId
            ];
    
            $fullRequest = httpRequestCustom::addContentInBody($aArgs, $request);
    
            $response     = $noteController->create($fullRequest, new \Slim\Http\Response());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertIsInt($responseBody['noteId']);
    
            self::$noteId = $responseBody['noteId'];
        }
    
        public function testNotifEvents()
        {
            $dataSourceController   = new \Template\controllers\DatasourceController();
    
            $args = [
                'params' => [
                    'notification' => 'testNotification',
                    'recipient'    => 'testRecipient',
                    'events'       => ['event1', 'event2']
                ]
            ];
    
            $result = $dataSourceController::notifEvents($args);
    
            $this->assertIsArray($result);
            $this->assertNotEmpty($result);
    
    
            $this->assertIsArray($result['notification']);
            $this->assertNotEmpty($result['notification']);
            $this->assertIsString($result['notification'][0]);
            $this->assertSame('testNotification', $result['notification'][0]);
    
            $this->assertIsArray($result['recipient']);
            $this->assertNotEmpty($result['recipient']);
            $this->assertIsString($result['recipient'][0]);
            $this->assertSame('testRecipient', $result['recipient'][0]);
    
            $this->assertIsArray($result['events']);
            $this->assertNotEmpty($result['events']);
            $this->assertIsString($result['events'][0]);
            $this->assertSame('event1', $result['events'][0]);
            $this->assertIsString($result['events'][1]);
            $this->assertSame('event2', $result['events'][1]);
        }
    
        public function testLetterboxEvents()
        {
            $dataSourceController   = new \Template\controllers\DatasourceController();
    
            $args = [
                'params' => [
                    'notification' => 'testNotification',
                    'recipient'    => [
                        'id' => 19
                    ],
                    'res_view'     => 'res_view_letterbox',
                    'events'       => [
                        [
                            'table_name' => 'notes',
                            'record_id'  => self::$noteId
                        ]
                    ],
                    'maarchUrl'    => 'http://localhost/'
                ]
            ];
    
            $result = $dataSourceController::letterboxEvents($args);
    
            $this->assertIsArray($result);
            $this->assertNotEmpty($result);
    
            $this->assertIsArray($result['contact']);
            $this->assertEmpty($result['contact']);
    
            $this->assertIsArray($result['recipient']);
            $this->assertNotEmpty($result['recipient']);
            $this->assertIsArray($result['recipient'][0]);
            $this->assertNotEmpty($result['recipient'][0]);
            $this->assertIsInt($result['recipient'][0]['id']);
            $this->assertSame(19, $result['recipient'][0]['id']);
    
            $this->assertIsArray($result['res_letterbox']);
            $this->assertNotEmpty($result['res_letterbox']);
            $this->assertIsArray($result['res_letterbox'][0]);
            $this->assertNotEmpty($result['res_letterbox'][0]);
    
            $this->assertSame(self::$resId, $result['res_letterbox'][0]['res_id']);
            $this->assertSame(102, $result['res_letterbox'][0]['type_id']);
            $this->assertEmpty($result['res_letterbox'][0]['policy_id']);
            $this->assertEmpty($result['res_letterbox'][0]['cycle_id']);
    
            $this->assertSame('Convocation', $result['res_letterbox'][0]['type_label']);
            $this->assertSame(1, $result['res_letterbox'][0]['doctypes_first_level_id']);
            $this->assertSame('COURRIERS', $result['res_letterbox'][0]['doctypes_first_level_label']);
            $this->assertSame('#000000', $result['res_letterbox'][0]['doctype_first_level_style']);
            $this->assertSame(1, $result['res_letterbox'][0]['doctypes_second_level_id']);
            $this->assertSame('01. Correspondances', $result['res_letterbox'][0]['doctypes_second_level_label']);
            $this->assertSame('#000000', $result['res_letterbox'][0]['doctype_second_level_style']);
    
            $this->assertSame('txt', $result['res_letterbox'][0]['format']);
            $this->assertSame(19, $result['res_letterbox'][0]['typist']);
            $this->assertNotEmpty($result['res_letterbox'][0]['creation_date']);
            $this->assertNotEmpty($result['res_letterbox'][0]['modification_date']);
    
            $this->assertSame('FASTHD_MAN', $result['res_letterbox'][0]['docserver_id']);
            $this->assertIsString($result['res_letterbox'][0]['path']);
            $this->assertIsString($result['res_letterbox'][0]['filename']);
            $this->assertIsString($result['res_letterbox'][0]['fingerprint']);
            $this->assertIsInt($result['res_letterbox'][0]['filesize']);
    
            $this->assertSame('NEW', $result['res_letterbox'][0]['status']);
            $this->assertEmpty($result['res_letterbox'][0]['work_batch']);
            $this->assertNotEmpty($result['res_letterbox'][0]['doc_date']);
            $this->assertSame('{}', $result['res_letterbox'][0]['external_id']);
            $this->assertEmpty($result['res_letterbox'][0]['departure_date']);
            $this->assertEmpty($result['res_letterbox'][0]['opinion_limit_date']);
            $this->assertEmpty($result['res_letterbox'][0]['barcode']);
            $this->assertSame('PSF', $result['res_letterbox'][0]['initiator']);
            $this->assertSame('PSF', $result['res_letterbox'][0]['destination']);
            $this->assertSame(11, $result['res_letterbox'][0]['dest_user']);
            $this->assertSame('N', $result['res_letterbox'][0]['confidentiality']);
            $this->assertSame('incoming', $result['res_letterbox'][0]['category_id']);
            $this->assertEmpty($result['res_letterbox'][0]['alt_identifier']);
            $this->assertIsString($result['res_letterbox'][0]['admission_date']);
            $this->assertIsString($result['res_letterbox'][0]['process_limit_date']);
            $this->assertEmpty($result['res_letterbox'][0]['closing_date']);
            $this->assertEmpty($result['res_letterbox'][0]['alarm1_date']);
            $this->assertEmpty($result['res_letterbox'][0]['alarm2_date']);
            $this->assertSame('N', $result['res_letterbox'][0]['flag_alarm1']);
            $this->assertSame('N', $result['res_letterbox'][0]['flag_alarm2']);
            $this->assertSame('Breaking News : Superman is dead again - PHP unit', $result['res_letterbox'][0]['subject']);
            $this->assertSame('poiuytre1357nbvc', $result['res_letterbox'][0]['priority']);
            $this->assertEmpty($result['res_letterbox'][0]['locker_user_id']);
            $this->assertEmpty($result['res_letterbox'][0]['locker_time']);
            $this->assertEmpty($result['res_letterbox'][0]['custom_fields']);
            $this->assertSame('Pôle des Services Fonctionnels', $result['res_letterbox'][0]['entity_label']);
            $this->assertSame('Service', $result['res_letterbox'][0]['entitytype']);
            $this->assertSame('http://localhost/rest/resources/'.self::$resId.'/content?mode=view', $result['res_letterbox'][0]['linktodoc']);
            $this->assertSame('http://localhost/dist/index.html#/resources/' . self::$resId, $result['res_letterbox'][0]['linktodetail']);
            $this->assertSame('http://localhost/dist/index.html#/process/users/19/groups/2/baskets/4/resId/' . self::$resId, $result['res_letterbox'][0]['linktoprocess']);
    
    
            // Test view res_letterbox table
            $args = [
                'params' => [
                    'notification' => 'testNotification',
                    'recipient'    => [
                        'id' => 19
                    ],
                    'res_view'     => 'res_view_letterbox',
                    'events'       => [
                        [
                            'table_name' => 'res_letterbox',
                            'record_id'  => self::$resId
                        ]
                    ],
                    'maarchUrl'    => 'http://localhost/'
                ]
            ];
    
            $result = $dataSourceController::letterboxEvents($args);
    
            $this->assertIsArray($result);
            $this->assertNotEmpty($result);
    
            $this->assertIsArray($result['contact']);
            $this->assertEmpty($result['contact']);
    
            $this->assertIsArray($result['recipient']);
            $this->assertNotEmpty($result['recipient']);
            $this->assertIsArray($result['recipient'][0]);
            $this->assertNotEmpty($result['recipient'][0]);
            $this->assertIsInt($result['recipient'][0]['id']);
            $this->assertSame(19, $result['recipient'][0]['id']);
    
            $this->assertIsArray($result['res_letterbox']);
            $this->assertNotEmpty($result['res_letterbox']);
            $this->assertIsArray($result['res_letterbox'][0]);
            $this->assertNotEmpty($result['res_letterbox'][0]);
    
            $this->assertSame(self::$resId, $result['res_letterbox'][0]['res_id']);
            $this->assertSame(102, $result['res_letterbox'][0]['type_id']);
            $this->assertEmpty($result['res_letterbox'][0]['policy_id']);
            $this->assertEmpty($result['res_letterbox'][0]['cycle_id']);
    
            $this->assertSame('NEW', $result['res_letterbox'][0]['status']);
            $this->assertSame('Breaking News : Superman is dead again - PHP unit', $result['res_letterbox'][0]['subject']);
            $this->assertSame('Pôle des Services Fonctionnels', $result['res_letterbox'][0]['entity_label']);
            $this->assertSame('Service', $result['res_letterbox'][0]['entitytype']);
            $this->assertSame('http://localhost/rest/resources/'.self::$resId.'/content?mode=view', $result['res_letterbox'][0]['linktodoc']);
            $this->assertSame('http://localhost/dist/index.html#/resources/' . self::$resId, $result['res_letterbox'][0]['linktodetail']);
            $this->assertSame('http://localhost/dist/index.html#/process/users/19/groups/2/baskets/4/resId/' . self::$resId, $result['res_letterbox'][0]['linktoprocess']);
        }
    
        public function testNoteEvents()
        {
            $dataSourceController   = new \Template\controllers\DatasourceController();
    
            $args = [
                'params' => [
                    'notification' => 'testNotification',
                    'recipient'    => [
                        'id' => 19
                    ],
                    'res_view'     => 'res_view_letterbox',
                    'events'       => [
                        [
                            'table_name' => 'notes',
                            'record_id'  => self::$noteId
                        ]
                    ],
                    'maarchUrl'    => 'http://localhost/'
                ]
            ];
    
            $result = $dataSourceController::noteEvents($args);
    
            $this->assertIsArray($result);
            $this->assertNotEmpty($result);
    
            $this->assertIsString($result['notes']);
    
            $this->assertIsArray($result['recipient']);
            $this->assertNotEmpty($result['recipient']);
            $this->assertIsArray($result['recipient'][0]);
            $this->assertNotEmpty($result['recipient'][0]);
            $this->assertIsInt($result['recipient'][0]['id']);
            $this->assertSame(19, $result['recipient'][0]['id']);
    
            $this->assertIsArray($result['res_letterbox']);
            $this->assertNotEmpty($result['res_letterbox']);
            $this->assertIsArray($result['res_letterbox'][0]);
            $this->assertNotEmpty($result['res_letterbox'][0]);
    
            $this->assertSame(self::$resId, $result['res_letterbox'][0]['res_id']);
            $this->assertSame(102, $result['res_letterbox'][0]['type_id']);
    
            $this->assertSame('txt', $result['res_letterbox'][0]['format']);
            $this->assertSame(19, $result['res_letterbox'][0]['typist']);
            $this->assertNotEmpty($result['res_letterbox'][0]['creation_date']);
            $this->assertNotEmpty($result['res_letterbox'][0]['modification_date']);
    
            $this->assertSame('FASTHD_MAN', $result['res_letterbox'][0]['docserver_id']);
            $this->assertIsString($result['res_letterbox'][0]['path']);
            $this->assertIsString($result['res_letterbox'][0]['filename']);
            $this->assertIsString($result['res_letterbox'][0]['fingerprint']);
            $this->assertIsInt($result['res_letterbox'][0]['filesize']);
    
            $this->assertSame('NEW', $result['res_letterbox'][0]['status']);
            $this->assertEmpty($result['res_letterbox'][0]['work_batch']);
            $this->assertNotEmpty($result['res_letterbox'][0]['doc_date']);
            $this->assertSame('{}', $result['res_letterbox'][0]['external_id']);
            $this->assertEmpty($result['res_letterbox'][0]['departure_date']);
            $this->assertEmpty($result['res_letterbox'][0]['opinion_limit_date']);
            $this->assertEmpty($result['res_letterbox'][0]['barcode']);
            $this->assertSame('PSF', $result['res_letterbox'][0]['initiator']);
            $this->assertSame('PSF', $result['res_letterbox'][0]['destination']);
            $this->assertSame(11, $result['res_letterbox'][0]['dest_user']);
            $this->assertSame('N', $result['res_letterbox'][0]['confidentiality']);
            $this->assertSame('incoming', $result['res_letterbox'][0]['category_id']);
            $this->assertEmpty($result['res_letterbox'][0]['alt_identifier']);
            $this->assertIsString($result['res_letterbox'][0]['admission_date']);
            $this->assertIsString($result['res_letterbox'][0]['process_limit_date']);
            $this->assertEmpty($result['res_letterbox'][0]['closing_date']);
            $this->assertEmpty($result['res_letterbox'][0]['alarm1_date']);
            $this->assertEmpty($result['res_letterbox'][0]['alarm2_date']);
            $this->assertSame('N', $result['res_letterbox'][0]['flag_alarm1']);
            $this->assertSame('N', $result['res_letterbox'][0]['flag_alarm2']);
            $this->assertSame('Breaking News : Superman is dead again - PHP unit', $result['res_letterbox'][0]['subject']);
            $this->assertSame('poiuytre1357nbvc', $result['res_letterbox'][0]['priority']);
            $this->assertEmpty($result['res_letterbox'][0]['custom_fields']);
            $this->assertSame('http://localhost/rest/resources/'.self::$resId.'/content?mode=view', $result['res_letterbox'][0]['linktodoc']);
            $this->assertSame('http://localhost/dist/index.html#/resources/' . self::$resId, $result['res_letterbox'][0]['linktodetail']);
            $this->assertSame('http://localhost/rest/resources/'.self::$resId.'/content?mode=view', $result['res_letterbox'][0]['linktoprocess']);
    
    
            // Test view res_letterbox table
            $args = [
                'params' => [
                    'notification' => 'testNotification',
                    'recipient'    => [
                        'id' => 19
                    ],
                    'res_view'     => 'res_view_letterbox',
                    'events'       => [
                        [
                            'table_name' => 'res_letterbox',
                            'record_id'  => self::$resId
                        ]
                    ],
                    'maarchUrl'    => 'http://localhost/'
                ]
            ];
    
            $result = $dataSourceController::noteEvents($args);
    
            $this->assertIsArray($result);
            $this->assertNotEmpty($result);
    
    
            $this->assertIsArray($result['recipient']);
            $this->assertNotEmpty($result['recipient']);
            $this->assertIsArray($result['recipient'][0]);
            $this->assertNotEmpty($result['recipient'][0]);
            $this->assertIsInt($result['recipient'][0]['id']);
            $this->assertSame(19, $result['recipient'][0]['id']);
    
            $this->assertIsArray($result['notes']);
    
            $this->assertIsString($result['notes']['linktodoc']);
            $this->assertIsString($result['notes']['linktodetail']);
        }
    
        public function testClean()
        {
            $environment  = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
            $request      = \Slim\Http\Request::createFromEnvironment($environment);
    
            $noteController = new \Note\controllers\NoteController();
            $response         = $noteController->delete($request, new \Slim\Http\Response(), ['id' => self::$noteId]);
    
            $this->assertSame(204, $response->getStatusCode());
    
            // Delete resource
            \Resource\models\ResModel::delete([
                'where' => ['res_id = ?'],
                'data' => [self::$resId]
            ]);
    
            $res = \Resource\models\ResModel::getById(['resId' => self::$resId, 'select' => ['*']]);
            $this->assertIsArray($res);
            $this->assertEmpty($res);
    
            $GLOBALS['login'] = 'superadmin';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
        }
    }