Skip to content
Snippets Groups Projects
ResControllerTest.php 57.1 KiB
Newer Older
  • Learn to ignore specific revisions
  •         $response     = $resController->getProcessingData($request, new \Slim\Http\Response(), ['groupId' => 'wrong format']);
            $this->assertSame(403, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('groupId param is not an integer', $responseBody['errors']);
    
            $response     = $resController->getProcessingData($request, new \Slim\Http\Response(), ['groupId' => 2, 'userId' => 'wrong format']);
            $this->assertSame(403, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('userId param is not an integer', $responseBody['errors']);
    
            $response     = $resController->getProcessingData($request, new \Slim\Http\Response(), ['groupId' => 2, 'userId' => $GLOBALS['id'], 'basketId' => 'wrong format']);
            $this->assertSame(403, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('basketId param is not an integer', $responseBody['errors']);
    
            $response     = $resController->getProcessingData($request, new \Slim\Http\Response(), ['groupId' => 2, 'userId' => $GLOBALS['id'], 'basketId' => 2, 'resId' => 'wrong format']);
            $this->assertSame(403, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('resId param is not an integer', $responseBody['errors']);
    
            $response     = $resController->getProcessingData($request, new \Slim\Http\Response(), ['groupId' => 2, 'userId' => $GLOBALS['id'], 'basketId' => 2, 'resId' => self::$id]);
            $this->assertSame(403, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Group is not linked to this user', $responseBody['errors']);
    
            $GLOBALS['login'] = 'bbain';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
    
            $response     = $resController->getProcessingData($request, new \Slim\Http\Response(), ['groupId' => 2, 'userId' => $GLOBALS['id'], 'basketId' => 2, 'resId' => self::$id]);
            $this->assertSame(403, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Group is not linked to this basket', $responseBody['errors']);
    
            // Success
            $response     = $resController->getProcessingData($request, new \Slim\Http\Response(), ['groupId' => 2, 'userId' => $GLOBALS['id'], 'basketId' => 4, 'resId' => self::$id]);
            $this->assertSame(200, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
    
            $this->assertIsArray($responseBody['listEventData']);
            $this->assertNotEmpty($responseBody['listEventData']);
            $this->assertSame('dashboard', $responseBody['listEventData']['defaultTab']);
            $this->assertSame(false, $responseBody['listEventData']['canUpdate']);
    
            $GLOBALS['login'] = 'superadmin';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
        }
    
        public function testGetResourceFileInformation()
        {
            $resController = new \Resource\controllers\ResController();
    
            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
            $request        = \Slim\Http\Request::createFromEnvironment($environment);
    
            $GLOBALS['login'] = 'bbain';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
    
            $response     = $resController->getResourceFileInformation($request, new \Slim\Http\Response(), ['resId' => self::$id]);
            $this->assertSame(403, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Document out of perimeter', $responseBody['errors']);
    
            $GLOBALS['login'] = 'superadmin';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
    
            // Success
            $response     = $resController->getResourceFileInformation($request, new \Slim\Http\Response(), ['resId' => self::$id]);
            $this->assertSame(200, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
    
            $this->assertIsArray($responseBody['information']);
            $this->assertNotEmpty($responseBody['information']);
            $this->assertSame('txt', $responseBody['information']['format']);
            $this->assertIsString($responseBody['information']['fingerprint']);
            $this->assertNotEmpty($responseBody['information']['fingerprint']);
            $this->assertSame(46, $responseBody['information']['filesize']);
    
            $this->assertSame('SUCCESS', $responseBody['information']['fulltext_result']);
    
            $this->assertSame(true, $responseBody['information']['canConvert']);
        }
    
        public function testGetVersionsInformations()
        {
            $resController = new \Resource\controllers\ResController();
    
            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
            $request        = \Slim\Http\Request::createFromEnvironment($environment);
    
            $GLOBALS['login'] = 'bbain';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
    
            $response     = $resController->getVersionsInformations($request, new \Slim\Http\Response(), ['resId' => self::$id]);
            $this->assertSame(403, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Document out of perimeter', $responseBody['errors']);
    
            $GLOBALS['login'] = 'superadmin';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
    
            // Success
            $response     = $resController->getVersionsInformations($request, new \Slim\Http\Response(), ['resId' => self::$id]);
            $this->assertSame(200, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
    
            $this->assertIsArray($responseBody['DOC']);
            $this->assertNotEmpty($responseBody['DOC']);
            $this->assertSame(1, $responseBody['DOC'][0]);
            $this->assertSame(2, $responseBody['DOC'][1]);
            $this->assertSame(3, $responseBody['DOC'][2]);
    
            $this->assertIsArray($responseBody['PDF']);
            $this->assertNotEmpty($responseBody['PDF']);
            $this->assertSame(1, $responseBody['PDF'][0]);
            $this->assertSame(2, $responseBody['PDF'][1]);
            $this->assertSame(3, $responseBody['PDF'][2]);
    
            $this->assertIsArray($responseBody['SIGN']);
            $this->assertEmpty($responseBody['SIGN']);
    
            $this->assertIsArray($responseBody['NOTE']);
            $this->assertEmpty($responseBody['NOTE']);
    
            $this->assertSame(true, $responseBody['convert']);
    
            $response     = $resController->getVersionsInformations($request, new \Slim\Http\Response(), ['resId' => self::$id2]);
            $this->assertSame(200, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
    
            $this->assertIsArray($responseBody['DOC']);
            $this->assertEmpty($responseBody['DOC']);
            $this->assertIsArray($responseBody['PDF']);
            $this->assertEmpty($responseBody['PDF']);
            $this->assertIsArray($responseBody['SIGN']);
            $this->assertEmpty($responseBody['SIGN']);
            $this->assertIsArray($responseBody['NOTE']);
            $this->assertEmpty($responseBody['NOTE']);
        }
    
        public function testGetVersionFileContent()
        {
            $resController = new \Resource\controllers\ResController();
    
            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
            $request        = \Slim\Http\Request::createFromEnvironment($environment);
    
            $GLOBALS['login'] = 'bbain';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
    
            $response     = $resController->getVersionFileContent($request, new \Slim\Http\Response(), ['resId' => self::$id]);
            $this->assertSame(403, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Document out of perimeter', $responseBody['errors']);
    
            $GLOBALS['login'] = 'superadmin';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
            $GLOBALS['id'] = $userInfo['id'];
    
            $response     = $resController->getVersionFileContent($request, new \Slim\Http\Response(), ['resId' => self::$id, 'version' => 1000]);
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Incorrect version', $responseBody['errors']);
    
            $response     = $resController->getVersionFileContent($request, new \Slim\Http\Response(), ['resId' => self::$id2, 'version' => 1]);
            $this->assertSame(400, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
            $this->assertSame('Document has no file', $responseBody['errors']);
    
            // Success
            $response     = $resController->getVersionFileContent($request, new \Slim\Http\Response(), ['resId' => self::$id, 'version' => 1]);
            $this->assertSame(200, $response->getStatusCode());
            $responseBody = json_decode((string)$response->getBody(), true);
    
            $this->assertIsString($responseBody['encodedDocument']);
            $this->assertNotEmpty($responseBody['encodedDocument']);
    
    Florian Azizian's avatar
    Florian Azizian committed
    
        public function testDelete()
        {
            //  DELETE
    
            \Resource\models\ResModel::update(['set' => ['status' => 'DEL'], 'where' => ['res_id = ?'], 'data' => [self::$id]]);
    
            $res = \Resource\models\ResModel::getById(['resId' => self::$id, 'select' => ['*']]);
    
            $this->assertIsArray($res);
    
    Florian Azizian's avatar
    Florian Azizian committed
            $this->assertSame('DEL', $res['status']);
    
    
            \Resource\models\ResModel::delete([
                'where' => ['res_id = ?'],
                'data' => [self::$id2]
            ]);
    
            $res = \Resource\models\ResModel::getById(['resId' => self::$id2, 'select' => ['*']]);
            $this->assertIsArray($res);
            $this->assertEmpty($res);
    
    
        public function testCreateMultipleDocument()
        {
    
            $GLOBALS['login'] = 'cchaplin';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
    
            $GLOBALS['id'] = $userInfo['id'];
    
    
            $resController = new \Resource\controllers\ResController();
    
            $aNewDocument = [
                1 => [
                    102,
                    'poiuytre1357nbvc',
                    'NEW'
                ],
                2 => [
                    103,
                    'poiuytre1379nbvc',
                    'COU'
                ],
                3 => [
                    104,
                    'poiuytre1391nbvc',
                    'ENVDONE'
                ]
            ];
    
    
            $entity = \Entity\models\EntityModel::getByEntityId(['entityId' => 'PJS', 'select' => ['id']]);
    
            $this->assertIsInt($entity['id']);
    
            foreach ($aNewDocument as $key => $value) {
                $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
                $request        = \Slim\Http\Request::createFromEnvironment($environment);
    
    Damien's avatar
    Damien committed
                $fileContent = file_get_contents('test/unitTests/samples/test.txt');
    
                $encodedFile = base64_encode($fileContent);
                $aArgs = [
    
                    'modelId'       => 1,
    
                    'status'        => $value[2],
                    'encodedFile'   => $encodedFile,
    
                    'confidentiality'   => false,
    
                    'documentDate'  => '2019-01-01 17:18:47',
                    'arrivalDate'   => '2019-01-01 17:18:47',
                    'doctype'       => $value[0],
    
                    'destination'   => $entity['id'],
                    'initiator'     => $entity['id'],
    
                    'subject'       => $key .' Breaking News : 12345 Superman is alive - PHP unit',
    
                    'typist'        => 19,
    
                    'priority'      => $value[1],
    
                    'diffusionList' => [['id' => 19, 'type' => 'user', 'mode' => 'dest'], ['id' => 20, 'type' => 'user', 'mode' => 'cc']],
                    'senders'       => [['type' => 'contact', 'id' => 1], ['type' => 'user', 'id' => 21], ['type' => 'entity', 'id' => 1]],
                    'recipients'    => [['type' => 'contact', 'id' => 2], ['type' => 'user', 'id' => 19], ['type' => 'entity', 'id' => 2]],
                    'tags'          => [1, 2],
                    'folders'       => [1, 2],
                    'customFields'  => [4 => 'référence externe']
    
                $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
    
                $response     = $resController->create($fullRequest, new \Slim\Http\Response());
    
                $responseBody = json_decode((string)$response->getBody());
                $newId = $responseBody->resId;
    
                $this->assertIsInt($newId);
    
                $GLOBALS['resources'][] = $newId;
    
            $GLOBALS['login'] = 'superadmin';
            $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
    
            $GLOBALS['id'] = $userInfo['id'];