From c3162cdaf7a1b19d6b1321112bf6f11b3df436b2 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Mon, 4 Jun 2018 12:20:14 +0200 Subject: [PATCH] FEAT #7731 Unit Tests + Refactoring --- apps/maarch_entreprise/actions/sendFileWS.php | 2 +- core/Test/DocserverControllerTest.php | 132 ++++++++++++------ modules/visa/sign_file.php | 2 +- phpunit.xml | 1 + .../controllers/DocserverTypeController.php | 17 --- .../models/DocserverModelAbstract.php | 34 +---- .../models/DocserverTypeModelAbstract.php | 43 ------ src/app/group/models/GroupModelAbstract.php | 2 +- .../controllers/SignatureBookController.php | 4 +- .../controllers/TemplateController.php | 2 +- src/app/user/controllers/UserController.php | 4 +- 11 files changed, 106 insertions(+), 137 deletions(-) diff --git a/apps/maarch_entreprise/actions/sendFileWS.php b/apps/maarch_entreprise/actions/sendFileWS.php index e2e8ff84c59..a75fe2dd663 100644 --- a/apps/maarch_entreprise/actions/sendFileWS.php +++ b/apps/maarch_entreprise/actions/sendFileWS.php @@ -10,7 +10,7 @@ function manage_send($aId) foreach ($aId as $resId) { $document = \Resource\models\ResModel::getById(['resId' => $resId, 'select' => ['res_id', 'format', 'path', 'filename']]); - $docserver = \Docserver\models\DocserverModel::getByCollId(['collId' => 'letterbox_coll', 'priority' => true, 'select' => ['path_template']]); + $docserver = \Docserver\models\DocserverModel::getFirstByTypeId(['typeId' => 'DOC', 'select' => ['path_template']]); $file = file_get_contents($docserver['path_template'] . str_replace('#', '/', $document['path']) . $document['filename']); $encodedFile = base64_encode($file); diff --git a/core/Test/DocserverControllerTest.php b/core/Test/DocserverControllerTest.php index 9974b39b783..8a30d15acef 100644 --- a/core/Test/DocserverControllerTest.php +++ b/core/Test/DocserverControllerTest.php @@ -9,44 +9,62 @@ use PHPUnit\Framework\TestCase; -class DocserverControllerTest extends TestCase { - +class DocserverControllerTest extends TestCase +{ private static $id = null; - public function testGet(){ + + public function testGet() + { $docserverController = new \Docserver\controllers\DocserverController(); + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); $request = \Slim\Http\Request::createFromEnvironment($environment); - $aArgs = []; - $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - $response = $docserverController->get($fullRequest, new \Slim\Http\Response()); + + $response = $docserverController->get($request, new \Slim\Http\Response()); $responseBody = json_decode((string)$response->getBody()); - $this->assertNotNull($responseBody); - } - public function testCreate(){ + $this->assertNotEmpty($responseBody->docservers); + $this->assertNotEmpty($responseBody->types); + } + + public function testCreate() + { $docserverController = new \Docserver\controllers\DocserverController(); + + // CREATE $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']); $request = \Slim\Http\Request::createFromEnvironment($environment); + $aArgs = [ 'docserver_id' => 'NEW_DOCSERVER', 'docserver_type_id' => 'DOC', 'device_label' => 'new docserver', 'size_limit_number' => 50000000000, - 'path_template' => '/var/docserversDEV/dev1804/archive_transfer/', + 'path_template' => '/tmp/', 'coll_id' => 'letterbox_coll', 'priority_number' => 99, 'adr_priority_number' => 99 ]; $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - $response = $docserverController->create($fullRequest, new \Slim\Http\Response(),$aArgs); + + $response = $docserverController->create($fullRequest, new \Slim\Http\Response()); $responseBody = json_decode((string)$response->getBody()); + self::$id = $responseBody->docserver; $this->assertInternalType('int', self::$id); - $response = $docserverController->getById($fullRequest, new \Slim\Http\Response(),['id' => self::$id]); - $responseBody = json_decode((string)$response->getBody()); + // READ + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $response = $docserverController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); + $this->assertSame('NEW_DOCSERVER', $responseBody->docserver_id); + // CREATE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $aArgs = [ 'docserver_id' => 'WRONG_PATH', 'docserver_type_id' => 'DOC', @@ -58,11 +76,15 @@ class DocserverControllerTest extends TestCase { 'adr_priority_number' => 99 ]; $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - $response = $docserverController->create($fullRequest, new \Slim\Http\Response(),$aArgs); + $response = $docserverController->create($fullRequest, new \Slim\Http\Response()); $responseBody = json_decode((string)$response->getBody()); $this->assertSame(_PATH_OF_DOCSERVER_UNAPPROACHABLE, $responseBody->errors); + // CREATE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $aArgs = [ 'docserver_id' => 'BAD_REQUEST', 'docserver_type_id' => 'DOC', @@ -74,11 +96,15 @@ class DocserverControllerTest extends TestCase { 'adr_priority_number' => 99 ]; $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - $response = $docserverController->create($fullRequest, new \Slim\Http\Response(),$aArgs); + $response = $docserverController->create($fullRequest, new \Slim\Http\Response()); $responseBody = json_decode((string)$response->getBody()); $this->assertSame('Bad Request', $responseBody->errors); + // CREATE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $aArgs = [ 'docserver_id' => 'NEW_DOCSERVER', 'docserver_type_id' => 'DOC', @@ -90,29 +116,45 @@ class DocserverControllerTest extends TestCase { 'adr_priority_number' => 99 ]; $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - $response = $docserverController->create($fullRequest, new \Slim\Http\Response(),$aArgs); + $response = $docserverController->create($fullRequest, new \Slim\Http\Response()); $responseBody = json_decode((string)$response->getBody()); $this->assertSame(_ID. ' ' . _ALREADY_EXISTS, $responseBody->errors); } - public function testUpdate(){ + public function testUpdate() + { $docserverController = new \Docserver\controllers\DocserverController(); + + // UPDATE $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']); $request = \Slim\Http\Request::createFromEnvironment($environment); $aArgs = [ 'docserver_type_id' => 'DOC', 'device_label' => 'updated docserver', 'size_limit_number' => 50000000000, - 'path_template' => '/var/docserversDEV/dev1804/archive_transfer/', + 'path_template' => '/tmp/', 'priority_number' => 99, 'adr_priority_number' => 99 ]; $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - $response = $docserverController->update($fullRequest, new \Slim\Http\Response(),['id' => self::$id]); + $response = $docserverController->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 = $docserverController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame('updated docserver', $responseBody->device_label); + + // UPDATE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $aArgs = [ 'docserver_type_id' => 'DOC', 'device_label' => 'updated docserver', @@ -122,48 +164,56 @@ class DocserverControllerTest extends TestCase { 'adr_priority_number' => 99 ]; $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - $response = $docserverController->update($fullRequest, new \Slim\Http\Response(),['id' => self::$id]); + $response = $docserverController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]); $responseBody = json_decode((string)$response->getBody()); + $this->assertSame(_PATH_OF_DOCSERVER_UNAPPROACHABLE, $responseBody->errors); + // UPDATE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $aArgs = [ 'docserver_type_id' => 'DOC', 'device_label' => 'updated docserver', 'size_limit_number' => 50000000000, - 'path_template' => '/var/docserversDEV/dev1804/archive_transfer/', + 'path_template' => '/tmp/', 'priority_number' => 99, 'adr_priority_number' => 99 ]; $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - $response = $docserverController->update($fullRequest, new \Slim\Http\Response(),['id' => 12345]); + $response = $docserverController->update($fullRequest, new \Slim\Http\Response(), ['id' => 12345]); $responseBody = json_decode((string)$response->getBody()); + $this->assertSame('Docserver not found', $responseBody->errors); } - public function testDelete(){ + public function testDelete() + { $docserverController = new \Docserver\controllers\DocserverController(); + + // DELETE $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']); $request = \Slim\Http\Request::createFromEnvironment($environment); - $aArgs = [ - 'id' => self::$id - ]; - $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - $response = $docserverController->delete($fullRequest, new \Slim\Http\Response(),$aArgs); - $responseBody = json_decode((string)$response->getBody()); - $this->assertsame('success',$responseBody->success); + $response = $docserverController->delete($request, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); - $aArgs = [ - 'id' => self::$id - ]; - $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - $response = $docserverController->delete($fullRequest, new \Slim\Http\Response(),$aArgs); - $responseBody = json_decode((string)$response->getBody()); - $this->assertSame('Docserver does not exist', $responseBody->errors); - } + $this->assertsame('success', $responseBody->success); - + // READ + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $response = $docserverController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); - + $this->assertSame('Docserver not found', $responseBody->errors); + // DELETE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $response = $docserverController->delete($request, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); -} \ No newline at end of file + $this->assertSame('Docserver does not exist', $responseBody->errors); + } +} diff --git a/modules/visa/sign_file.php b/modules/visa/sign_file.php index 99f6d74f51e..87fa9be01f5 100755 --- a/modules/visa/sign_file.php +++ b/modules/visa/sign_file.php @@ -48,7 +48,7 @@ if (!empty($_REQUEST['id']) && !empty($_REQUEST['collId'])) { exit; } - $docserver = \Docserver\models\DocserverModel::getByTypeId(['docserver_type_id' => 'TEMPLATES', 'select' => ['path_template']]); + $docserver = \Docserver\models\DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]); $pathToWantedSignature = $docserver['path_template'] . str_replace('#', '/', $signature->signature_path) . $signature->signature_file_name; } else { $pathToWantedSignature = $_SESSION['user']['pathToSignature'][0]; diff --git a/phpunit.xml b/phpunit.xml index 8204ef76f6a..3c6aabdd704 100755 --- a/phpunit.xml +++ b/phpunit.xml @@ -9,6 +9,7 @@ <file>core/Test/ContactControllerTest.php</file> <file>core/Test/ContactGroupControllerTest.php</file> <file>core/Test/ContactTypeControllerTest.php</file> + <file>core/Test/DocserverControllerTest.php</file> <file>core/Test/DoctypeControllerTest.php</file> <file>core/Test/EntityControllerTest.php</file> <file>core/Test/GroupControllerTest.php</file> diff --git a/src/app/docserver/controllers/DocserverTypeController.php b/src/app/docserver/controllers/DocserverTypeController.php index 0766d2ab446..158c7685c41 100644 --- a/src/app/docserver/controllers/DocserverTypeController.php +++ b/src/app/docserver/controllers/DocserverTypeController.php @@ -44,21 +44,4 @@ class DocserverTypeController return $response->withJson($docserverType); } - - public function delete(Request $request, Response $response, array $aArgs) - { - if (!ServiceModel::hasService(['id' => 'admin_docservers', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) { - return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); - } - - $docserverType = DocserverTypeModel::getById(['id' => $aArgs['id']]); - - if(empty($docserverType)){ - return $response->withStatus(400)->withJson(['errors' => 'Docserver Type does not exist']); - } - - DocserverTypeModel::delete(['id' => $aArgs['id']]); - - return $response->withJson(['docserverTypes' => DocserverTypeModel::get()]); - } } diff --git a/src/app/docserver/models/DocserverModelAbstract.php b/src/app/docserver/models/DocserverModelAbstract.php index d6dd85f0d3f..2314732c1eb 100644 --- a/src/app/docserver/models/DocserverModelAbstract.php +++ b/src/app/docserver/models/DocserverModelAbstract.php @@ -72,17 +72,19 @@ class DocserverModelAbstract return $aDocserver[0]; } - public static function getByTypeId(array $aArgs) + public static function getFirstByTypeId(array $aArgs) { - ValidatorModel::notEmpty($aArgs, ['docserver_type_id']); - ValidatorModel::stringType($aArgs, ['docserver_type_id']); + ValidatorModel::notEmpty($aArgs, ['typeId']); + ValidatorModel::stringType($aArgs, ['typeId']); ValidatorModel::arrayType($aArgs, ['select']); $aDocserver = DatabaseModel::select([ 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], 'table' => ['docservers'], 'where' => ['docserver_type_id = ?'], - 'data' => [$aArgs['docserver_type_id']] + 'data' => [$aArgs['typeId']], + 'order_by' => ['priority_number'], + 'limit' => 1 ]); if (empty($aDocserver[0])) { @@ -92,30 +94,6 @@ class DocserverModelAbstract return $aDocserver[0]; } - public static function getByCollId(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['collId']); - ValidatorModel::stringType($aArgs, ['collId']); - ValidatorModel::boolType($aArgs, ['priority']); - - $data = [ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], - 'table' => ['docservers'], - 'where' => ['coll_id = ?'], - 'data' => [$aArgs['collId']] - ]; - if (!empty($aArgs['priority'])) { - $data['order_by'] = ['priority_number']; - } - $aReturn = DatabaseModel::select($data); - - if (!empty($aArgs['priority'])) { - return $aReturn[0]; - } - - return $aReturn; - } - public static function create(array $aArgs) { ValidatorModel::notEmpty($aArgs, ['docserver_id', 'docserver_type_id', 'device_label', 'path_template', 'coll_id', 'size_limit_number', 'priority_number', 'adr_priority_number', 'is_readonly']); diff --git a/src/app/docserver/models/DocserverTypeModelAbstract.php b/src/app/docserver/models/DocserverTypeModelAbstract.php index 61831cfb0bf..1f5cc38bcae 100644 --- a/src/app/docserver/models/DocserverTypeModelAbstract.php +++ b/src/app/docserver/models/DocserverTypeModelAbstract.php @@ -10,7 +10,6 @@ /** * @brief DocserverType Model * @author dev@maarch.org -* @ingroup core */ namespace Docserver\models; @@ -50,46 +49,4 @@ class DocserverTypeModelAbstract return $aDocserverType[0]; } - - public static function create(array $aArgs = []) - { - ValidatorModel::notEmpty($aArgs, ['docserver_type_id']); - ValidatorModel::stringType($aArgs, ['docserver_type_id']); - - DatabaseModel::insert([ - 'table' => 'docserver_types', - 'columnsValues' => $aArgs - ]); - - return true; - } - - public static function update(array $aArgs = []) - { - ValidatorModel::notEmpty($aArgs, ['docserver_type_id']); - ValidatorModel::stringType($aArgs, ['docserver_type_id']); - - DatabaseModel::update([ - 'table' => 'docserver_types', - 'set' => $aArgs, - 'where' => ['docserver_type_id = ?'], - 'data' => [$aArgs['docserver_type_id']] - ]); - - return true; - } - - public static function delete(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['id']); - ValidatorModel::stringType($aArgs, ['id']); - - DatabaseModel::delete([ - 'table' => 'docserver_types', - 'where' => ['docserver_type_id = ?'], - 'data' => [$aArgs['id']] - ]); - - return true; - } } diff --git a/src/app/group/models/GroupModelAbstract.php b/src/app/group/models/GroupModelAbstract.php index 0cc8eb78ae9..f1850ef3125 100644 --- a/src/app/group/models/GroupModelAbstract.php +++ b/src/app/group/models/GroupModelAbstract.php @@ -359,7 +359,7 @@ abstract class GroupModelAbstract 'group_id' => $aArgs['newGroupId'] ], 'where' => $where, - 'data' => [$aArgs['groupId'], $aArgs['ignoredUsers']] + 'data' => $data ]); return true; diff --git a/src/app/signatureBook/controllers/SignatureBookController.php b/src/app/signatureBook/controllers/SignatureBookController.php index a92f25b7172..47f53aea24b 100644 --- a/src/app/signatureBook/controllers/SignatureBookController.php +++ b/src/app/signatureBook/controllers/SignatureBookController.php @@ -43,8 +43,8 @@ class SignatureBookController if (!ResController::hasRightByResId(['resId' => $resId, 'userId' => $GLOBALS['userId']])) { return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); } - $docserver = DocserverModel::getByTypeId(['docserver_type_id' => 'TEMPLATES', 'select' => ['path_template']]); - if (!file_exists($docserver['path_template'])) { + $docserver = DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]); + if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) { return $response->withStatus(500)->withJson(['errors' => _UNREACHABLE_DOCSERVER]); } diff --git a/src/app/template/controllers/TemplateController.php b/src/app/template/controllers/TemplateController.php index 97e8b19321c..354e78a52f9 100644 --- a/src/app/template/controllers/TemplateController.php +++ b/src/app/template/controllers/TemplateController.php @@ -32,7 +32,7 @@ class TemplateController } if ($template['template_type'] == 'OFFICE') { - $docserver = DocserverModel::getByTypeId(['docserver_type_id' => 'TEMPLATES', 'select' => ['path_template']]); + $docserver = DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]); $pathOnDocserver = DocserverController::createPathOnDocServer(['path' => $docserver['path_template']]); $docinfo = DocserverController::getNextFileNameInDocServer(['pathOnDocserver' => $pathOnDocserver['pathToDocServer']]); diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php index 0cca9a0e255..df8f174f624 100644 --- a/src/app/user/controllers/UserController.php +++ b/src/app/user/controllers/UserController.php @@ -472,8 +472,8 @@ class UserController return $response->withStatus(400)->withJson(['errors' => 'Signature does not exist']); } - $docserver = DocserverModel::getByTypeId(['docserver_type_id' => 'TEMPLATES', 'select' => ['path_template']]); - if (!file_exists($docserver['path_template'])) { + $docserver = DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]); + if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) { return []; } -- GitLab