From f5133da24569f42f8ff34d5745661dabf2bd6162 Mon Sep 17 00:00:00 2001 From: Damien Burel <damien.burel@maarch.org> Date: Wed, 2 Aug 2017 18:19:31 +0200 Subject: [PATCH] FEAT Add priority test + remove password check for a database connection --- composer.json | 1 - core/Controllers/PriorityController.php | 4 +- core/Models/DatabasePDO.php | 4 +- core/Test/PrioritiesControllerTest.php | 227 ------------------------ core/Test/PriorityControllerTest.php | 115 ++++++++++++ core/Test/StatusControllerTest.php | 1 - core/Test/UserControllerTest.php | 48 +++-- phpunit.xml | 2 + 8 files changed, 152 insertions(+), 250 deletions(-) delete mode 100644 core/Test/PrioritiesControllerTest.php create mode 100644 core/Test/PriorityControllerTest.php diff --git a/composer.json b/composer.json index c7b4faed3f2..3fcae26595e 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,6 @@ "require": { "slim/slim": "^3", "respect/validation": "^1.1", - "guzzlehttp/guzzle": "^6.2", "php-http/curl-client": "^1.7", "m4tthumphrey/php-gitlab-api": "dev-master" } diff --git a/core/Controllers/PriorityController.php b/core/Controllers/PriorityController.php index c86b9e24033..bbbf13b81f9 100644 --- a/core/Controllers/PriorityController.php +++ b/core/Controllers/PriorityController.php @@ -70,13 +70,13 @@ class PriorityController $check = Validator::stringType()->notEmpty()->validate($data['label']); $check = $check && Validator::stringType()->notEmpty()->validate($data['color']); $check = $check && Validator::intVal()->notEmpty()->validate($data['delays']); - $check = $check && Validator::boolType()->notEmpty()->validate($data['working_days']); + $check = $check && Validator::boolType()->validate($data['working_days']); if (!$check) { return $response->withStatus(400)->withJson(['errors' => 'Bad Request']); } $data['id'] = $aArgs['id']; - $data['working_days'] = $data['working_days'] ? 'true' : 'false'; + $data['working_days'] = empty($data['working_days']) ? 'false' : 'true'; PriorityModel::update($data); diff --git a/core/Models/DatabasePDO.php b/core/Models/DatabasePDO.php index 830082bddf4..003781915b5 100644 --- a/core/Models/DatabasePDO.php +++ b/core/Models/DatabasePDO.php @@ -61,11 +61,11 @@ class DatabasePDO } ValidatorModel::notEmpty( - ['driver' => $formattedDriver, 'server' => $server, 'port' => $port, 'name' => $name, 'user' => $user, 'password' => $password], + ['driver' => $formattedDriver, 'server' => $server, 'port' => $port, 'name' => $name, 'user' => $user], ['driver', 'server', 'port', 'name', 'user', 'password'] ); ValidatorModel::stringType( - ['driver' => $formattedDriver, 'server' => $server, 'name' => $name, 'user' => $user, 'password' => $password], + ['driver' => $formattedDriver, 'server' => $server, 'name' => $name, 'user' => $user], ['driver', 'server', 'name', 'user', 'password'] ); ValidatorModel::intVal(['port' => $port], ['port']); diff --git a/core/Test/PrioritiesControllerTest.php b/core/Test/PrioritiesControllerTest.php deleted file mode 100644 index 07e081d4ce0..00000000000 --- a/core/Test/PrioritiesControllerTest.php +++ /dev/null @@ -1,227 +0,0 @@ -<?php - -namespace MaarchTest; - -require_once __DIR__.'/define.php'; -require_once 'apps/maarch_entreprise/services/Table.php'; - -class PrioritiesControllerTest extends \PHPUnit_Framework_TestCase -{ - - public function testCreate() - { - $environment = \Slim\Http\Environment::mock([ - 'REQUEST_METHOD' => 'POST' - ]); - $priorities = new \Core\Controllers\PrioritiesController(); - $request = \Slim\Http\Request::createFromEnvironment($environment); - $table = new \Apps_Table_Service(); - - $aArgs = [ - 'color_priority' => '#ffffff', - 'label_priority' => 'priorityCreated', - 'delays' => "2", - 'working_days' =>'Y' - ]; - - $fullRequest = \httpRequestCustom::addContentInBody($aArgs,$request); - $response = $priorities->create($fullRequest, new \Slim\Http\Response(), $aArgs); - $tabPriorities = $table->select([ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], - 'table' => ['priorities'], - 'orderby' => 'id' - ]); - end($tabPriorities); - $key =key($tabPriorities); - $id = $tabPriorities[$key]['id']; - $compare = '[{"id":'.$id.',"label_priority":"priorityCreated","color_priority":"#ffffff","working_days":"Y","delays":"2"}]'; - - $this->assertSame($compare,(string)$response->getBody()); - - $aArgs = [ - 'color_priority' => '', - 'label_priority' => '', - 'delays' => '', - 'working_days' =>'' - ]; - $compare = '{"errors":["Valeur label vide","Aucune Couleur assign\u00e9e","Delai vide","jours vide"]}'; - - $fullRequest = \httpRequestCustom::addContentInBody($aArgs,$request); - $response = $priorities->create($fullRequest, new \Slim\Http\Response(), $aArgs); - $this->assertSame($compare,(string)$response->getBody()); - - // Delays non numérique - - $aArgs = [ - 'color_priority' => '#ffff', - 'label_priority' => 'ErrorColor', - 'delays' => 'abc', - 'working_days' =>'A' - ]; - - $compare = '{"errors":["Format couleur invalide","Valeur working_days invalide","Valeur delays non num\u00e9rique"]}'; - - $fullRequest = \httpRequestCustom::addContentInBody($aArgs,$request); - $response = $priorities->create($fullRequest, new \Slim\Http\Response(), $aArgs); - $this->assertSame($compare,(string)$response->getBody()); - - $aArgs = [ - 'color_priority' => '#ffff', - 'label_priority' => 'ErrorColor', - 'delays' => '-1', - 'working_days' =>'A' - ]; - - $compare = '{"errors":["Format couleur invalide","Valeur working_days invalide","Valeur delays non num\u00e9rique","Valeur n\u00e9gative"]}'; - - $fullRequest = \httpRequestCustom::addContentInBody($aArgs,$request); - $response = $priorities->create($fullRequest, new \Slim\Http\Response(), $aArgs); - $this->assertSame($compare,(string)$response->getBody()); - } - - public function testGetList(){ - $priorities = new \Core\Controllers\PrioritiesController(); - - $environment = \Slim\Http\Environment::mock([ - 'REQUEST_METHOD' => 'GET' - ]); - - $request = \Slim\Http\Request::createFromEnvironment($environment); - $response = $priorities->getList($request, new \Slim\Http\Response()); - $this->assertNotNull((string)$response->getBody()); - } - - public function testGetById(){ - $priorities = new \Core\Controllers\PrioritiesController(); - - $environment = \Slim\Http\Environment::mock([ - 'REQUEST_METHOD' => 'GET' - ]); - $request = \Slim\Http\Request::createFromEnvironment($environment); - - $aArgs = [ - 'id' =>'1' - ]; - $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - - - $response = $priorities->getById($fullRequest, new \Slim\Http\Response(), $aArgs); - $this->assertNotNull((string)$response->getBody()); - $compare = '[{"id":1,"label_priority":"priorityCreated","color_priority":"#ffffff","working_days":"Y","delays":"12"}]'; - $this->assertSame($compare,(string)$response->getBody()); - - - $aArgs = [ - 'id' => 187 - ]; - $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - - - $response = $priorities->getById($fullRequest, new \Slim\Http\Response(), $aArgs); - $this->assertNotNull((string)$response->getBody()); - $compare = '{"errors":"Aucune priorit\u00e9 trouv\u00e9e"}'; - $this->assertSame($compare,(string)$response->getBody()); - /*$query = 'id=0'; - - $environment = \Slim\Http\Environment::mock([ - 'REQUEST_METHOD' => 'GET', - 'QUERY_STRING' =>$query - ]); - $response = $priorities->getById(\Slim\Http\Request::createFromEnvironment($environment), new \Slim\Http\Response(), ['id' => 0]); - $this->assertNotNull((string)$response->getBody()); - $compare = '[{"id":1,"label_priority":"labelTest","color_priority":"#ffffff","working_days":"Y","delays":"12"}]'; - $this->assertSame($compare,(string)$response->getBody()); - */ - } - - public function testUpdate() - { - //TEST TOUT OK - $environment = \Slim\Http\Environment::mock([ - 'REQUEST_METHOD' => 'PUT' - ]); - $priorities = new \Core\Controllers\PrioritiesController(); - $request = \Slim\Http\Request::createFromEnvironment($environment); - $table = new \Apps_Table_Service(); - - $tabPriorities = $table->select([ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], - 'table' => ['priorities'], - 'orderby' => 'id' - ]); - end($tabPriorities); - $key =key($tabPriorities); - $id = $tabPriorities[$key]['id']; - - //TEST MAUVAIS FORMAT DE COULEUR - - $aArgs = [ - 'id' => $id, - 'color_priority' => '#ffffff', //Mauvais format de couleurs - 'label_priority' => 'labelTestUpdated', - 'delays' => "15", - 'working_days' =>'Y' - ]; - - $fullRequest = \httpRequestCustom::addContentInBody($aArgs,$request); - $response = $priorities->update($fullRequest, new \Slim\Http\Response(), $aArgs); - $compare = '[{"id":'.$id.',"label_priority":"labelTestUpdated","color_priority":"#ffffff","working_days":"Y","delays":"15"}]'; - - $this->assertSame($compare,(string)$response->getBody()); - - $aArgs = [ - 'id' => $id, - 'color_priority' => '#ffff', - 'label_priority' => 'labelTestUpdated', - 'delays' => "15", - 'working_days' =>'Y' - ]; - - $fullRequest = \httpRequestCustom::addContentInBody($aArgs,$request); - $response = $priorities->update($fullRequest, new \Slim\Http\Response(), $aArgs); - $compare = '{"errors":["Format couleur invalide"]}'; - - $this->assertSame($compare,(string)$response->getBody()); - - //TEST ID Non existant - $aArgs = [ - 'id' => '187', - 'color_priority' => '#ffffff', //Mauvais format de couleurs - 'label_priority' => 'labelTestUpdated', - 'delays' => "15", - 'working_days' =>'Y' - ]; - - $fullRequest = \httpRequestCustom::addContentInBody($aArgs,$request); - $response = $priorities->update($fullRequest, new \Slim\Http\Response(), $aArgs); - $compare = '{"errors":["Cette priorit\u00e9 n\'existe pas"]}'; - - $this->assertSame($compare,(string)$response->getBody()); - } - - public function testDelete(){ - $table = new \Apps_Table_Service(); - $tabPriorities = $table->select([ - 'select' => empty($aArgs['']) ? ['*'] : $aArgs['select'], - 'table' => ['priorities'], - 'orderby' => 'id' - ]); - - end($tabPriorities); - $key =key($tabPriorities); - $id = $tabPriorities[$key]['id']; - $query = 'id='.$id; - - $environment = \Slim\Http\Environment::mock([ - 'REQUEST_METHOD' => 'DELETE', - 'QUERY_STRING' => $query, - ]); - - $priorities = new \Core\Controllers\PrioritiesController(); - $response = $priorities->delete(\Slim\Http\Request::createFromEnvironment($environment), new \Slim\Http\Response(), ['id' => $id]); - $compare = 'true'; - $this->assertSame($compare,(string)$response->getBody()); - - } -} -?> \ No newline at end of file diff --git a/core/Test/PriorityControllerTest.php b/core/Test/PriorityControllerTest.php new file mode 100644 index 00000000000..f5aa6ac9d73 --- /dev/null +++ b/core/Test/PriorityControllerTest.php @@ -0,0 +1,115 @@ +<?php + +namespace MaarchTest; +use PHPUnit\Framework\TestCase; + +class PriorityControllerTest extends TestCase +{ + private static $id = null; + + + public function testCreate() + { + $priorityController = new \Core\Controllers\PriorityController(); + + // CREATE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + + $aArgs = [ + 'label' => 'TEST-OVER-URGENT', + 'color' => '#ffffff', + 'working_days' => true, + 'delays' => '2' + ]; + $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); + + $response = $priorityController->create($fullRequest, new \Slim\Http\Response()); + $responseBody = json_decode((string)$response->getBody()); + + self::$id = $responseBody->priority; + + $this->assertInternalType('string', self::$id); + + // READ + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $response = $priorityController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame(self::$id, $responseBody->priority->id); + $this->assertSame('TEST-OVER-URGENT', $responseBody->priority->label); + $this->assertSame('#ffffff', $responseBody->priority->color); + $this->assertSame(true, $responseBody->priority->working_days); + $this->assertSame(2, $responseBody->priority->delays); + } + + public function testGet() + { + $priorityController = new \Core\Controllers\PriorityController(); + + // GET + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $response = $priorityController->get($request, new \Slim\Http\Response()); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertInternalType('array', $responseBody->priorities); + $this->assertNotNull($responseBody->priorities); + } + + public function testUpdate() + { + $priorityController = new \Core\Controllers\PriorityController(); + + // UPDATE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + + $aArgs = [ + 'label' => 'TEST-OVER-URGENT-UPDATED', + 'color' => '#f2f2f2', + 'working_days' => false, + 'delays' => '4' + ]; + $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); + + $response = $priorityController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame(_UPDATED_PRIORITY, $responseBody->success); + + // READ + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $response = $priorityController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame(self::$id, $responseBody->priority->id); + $this->assertSame('TEST-OVER-URGENT-UPDATED', $responseBody->priority->label); + $this->assertSame('#f2f2f2', $responseBody->priority->color); + $this->assertSame(false, $responseBody->priority->working_days); + $this->assertSame(4, $responseBody->priority->delays); + } + + public function testDelete() + { + $priorityController = new \Core\Controllers\PriorityController(); + + // DELETE + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $response = $priorityController->delete($request, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame(_DELETED_PRIORITY, $responseBody->success); + + // READ + $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); + $request = \Slim\Http\Request::createFromEnvironment($environment); + $response = $priorityController->getById($request, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); + + $this->assertSame('Priority not found', $responseBody->errors); + } +} diff --git a/core/Test/StatusControllerTest.php b/core/Test/StatusControllerTest.php index ace8cb8379d..236b9fab859 100644 --- a/core/Test/StatusControllerTest.php +++ b/core/Test/StatusControllerTest.php @@ -9,7 +9,6 @@ namespace MaarchTest; use PHPUnit\Framework\TestCase; -//require_once __DIR__.'/define.php'; class StatusControllerTest extends TestCase { diff --git a/core/Test/UserControllerTest.php b/core/Test/UserControllerTest.php index 1cf3334066c..9b750c4002f 100644 --- a/core/Test/UserControllerTest.php +++ b/core/Test/UserControllerTest.php @@ -8,14 +8,16 @@ */ namespace MaarchTest; +use PHPUnit\Framework\TestCase; use Core\Models\DatabaseModel; -require_once __DIR__.'/define.php'; - -class UserControllerTest extends \PHPUnit_Framework_TestCase +class UserControllerTest extends TestCase { - public function testCRUD() + private static $id = null; + + + public function testCreate() { $userController = new \Core\Controllers\UserController(); @@ -33,16 +35,17 @@ class UserControllerTest extends \PHPUnit_Framework_TestCase $response = $userController->create($fullRequest, new \Slim\Http\Response()); $responseBody = json_decode((string)$response->getBody()); - $id = $responseBody->user->id; - $this->assertInternalType('int', $id); + self::$id = $responseBody->user->id; + + $this->assertInternalType('int', self::$id); // READ $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); $request = \Slim\Http\Request::createFromEnvironment($environment); - $response = $userController->getUserForAdministration($request, new \Slim\Http\Response(), ['id' => $id]); + $response = $userController->getUserForAdministration($request, new \Slim\Http\Response(), ['id' => self::$id]); $responseBody = json_decode((string)$response->getBody()); - $this->assertSame($id, $responseBody->id); + $this->assertSame(self::$id, $responseBody->id); $this->assertSame('TEST-CKENT', $responseBody->user_id); $this->assertSame('TEST-CLARK', $responseBody->firstname); $this->assertSame('TEST-KENT', $responseBody->lastname); @@ -52,6 +55,11 @@ class UserControllerTest extends \PHPUnit_Framework_TestCase $this->assertSame(null, $responseBody->mail); $this->assertSame(null, $responseBody->initials); $this->assertSame(null, $responseBody->thumbprint); + } + + public function testUpdate() + { + $userController = new \Core\Controllers\UserController(); // UPDATE $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']); @@ -67,7 +75,7 @@ class UserControllerTest extends \PHPUnit_Framework_TestCase ]; $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request); - $response = $userController->update($fullRequest, new \Slim\Http\Response(), ['id' => $id]); + $response = $userController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]); $responseBody = json_decode((string)$response->getBody()); $this->assertSame(_USER_UPDATED, $responseBody->success); @@ -75,10 +83,10 @@ class UserControllerTest extends \PHPUnit_Framework_TestCase // READ $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); $request = \Slim\Http\Request::createFromEnvironment($environment); - $response = $userController->getUserForAdministration($request, new \Slim\Http\Response(), ['id' => $id]); + $response = $userController->getUserForAdministration($request, new \Slim\Http\Response(), ['id' => self::$id]); $responseBody = json_decode((string)$response->getBody()); - $this->assertSame($id, $responseBody->id); + $this->assertSame(self::$id, $responseBody->id); $this->assertSame('TEST-CKENT', $responseBody->user_id); $this->assertSame('TEST-CLARK2', $responseBody->firstname); $this->assertSame('TEST-KENT2', $responseBody->lastname); @@ -88,22 +96,27 @@ class UserControllerTest extends \PHPUnit_Framework_TestCase $this->assertSame('ck@dailyP.com', $responseBody->mail); $this->assertSame('CK', $responseBody->initials); $this->assertSame(null, $responseBody->thumbprint); + } + + public function testDelete() + { + $userController = new \Core\Controllers\UserController(); // DELETE $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']); $request = \Slim\Http\Request::createFromEnvironment($environment); - $response = $userController->delete($request, new \Slim\Http\Response(), ['id' => $id]); - $responseBody = json_decode((string)$response->getBody()); + $response = $userController->delete($request, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); $this->assertSame(_DELETED_USER, $responseBody->success); // READ $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']); $request = \Slim\Http\Request::createFromEnvironment($environment); - $response = $userController->getUserForAdministration($request, new \Slim\Http\Response(), ['id' => $id]); - $responseBody = json_decode((string)$response->getBody()); + $response = $userController->getUserForAdministration($request, new \Slim\Http\Response(), ['id' => self::$id]); + $responseBody = json_decode((string)$response->getBody()); - $this->assertSame($id, $responseBody->id); + $this->assertSame(self::$id, $responseBody->id); $this->assertSame('TEST-CKENT', $responseBody->user_id); $this->assertSame('TEST-CLARK2', $responseBody->firstname); $this->assertSame('TEST-KENT2', $responseBody->lastname); @@ -118,7 +131,8 @@ class UserControllerTest extends \PHPUnit_Framework_TestCase DatabaseModel::delete([ 'table' => 'users', 'where' => ['id = ?'], - 'data' => [$id] + 'data' => [self::$id] ]); } + } diff --git a/phpunit.xml b/phpunit.xml index f4458f53b4b..22fa45e8893 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -3,7 +3,9 @@ <testsuites> <testsuite name="Maarch Core Test Suite"> <!--directory>core/Test</directory--> + <file>core/Test/UserControllerTest.php</file> <file>core/Test/StatusControllerTest.php</file> + <file>core/Test/PriorityControllerTest.php</file> </testsuite> </testsuites> <filter> -- GitLab