Skip to content
Snippets Groups Projects
UserControllerTest.php 5.54 KiB
Newer Older
  • Learn to ignore specific revisions
  • Damien's avatar
    Damien committed
    <?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 UserControllerTest extends TestCase
    
        private static $id = null;
    
    
        public function testCreate()
    
    Damien's avatar
    Damien committed
        {
            $userController = new \Core\Controllers\UserController();
    
            //  CREATE
            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
            $request        = \Slim\Http\Request::createFromEnvironment($environment);
    
            $aArgs = [
                'userId'    => 'TEST-CKENT',
                'firstname' => 'TEST-CLARK',
                'lastname'  => 'TEST-KENT'
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
    
            $response     = $userController->create($fullRequest, new \Slim\Http\Response());
            $responseBody = json_decode((string)$response->getBody());
    
    
            self::$id = $responseBody->user->id;
    
            $this->assertInternalType('int', self::$id);
    
    Damien's avatar
    Damien committed
    
            //  READ
            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
            $request        = \Slim\Http\Request::createFromEnvironment($environment);
    
            $response     = $userController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
    
    Damien's avatar
    Damien committed
            $responseBody = json_decode((string)$response->getBody());
    
    
            $this->assertSame(self::$id, $responseBody->id);
    
    Damien's avatar
    Damien committed
            $this->assertSame('TEST-CKENT', $responseBody->user_id);
            $this->assertSame('TEST-CLARK', $responseBody->firstname);
            $this->assertSame('TEST-KENT', $responseBody->lastname);
            $this->assertSame('OK', $responseBody->status);
            $this->assertSame('Y', $responseBody->enabled);
            $this->assertSame(null, $responseBody->phone);
            $this->assertSame(null, $responseBody->mail);
            $this->assertSame(null, $responseBody->initials);
            $this->assertSame(null, $responseBody->thumbprint);
    
        }
    
        public function testUpdate()
        {
            $userController = new \Core\Controllers\UserController();
    
    Damien's avatar
    Damien committed
    
            //  UPDATE
            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
            $request        = \Slim\Http\Request::createFromEnvironment($environment);
            $aArgs = [
                'user_id'    => 'TEST-CKENT',
                'firstname' => 'TEST-CLARK2',
                'lastname'  => 'TEST-KENT2',
                'mail'      => 'ck@dailyP.com',
                'phone'     => '0122334455',
                'initials'  => 'CK',
                'enabled'   => 'N',
            ];
            $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
    
    
            $response     = $userController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
    
    Damien's avatar
    Damien committed
            $responseBody = json_decode((string)$response->getBody());
    
            $this->assertSame(_USER_UPDATED, $responseBody->success);
    
            //  READ
            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
            $request        = \Slim\Http\Request::createFromEnvironment($environment);
    
            $response     = $userController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
    
    Damien's avatar
    Damien committed
            $responseBody = json_decode((string)$response->getBody());
    
    
            $this->assertSame(self::$id, $responseBody->id);
    
    Damien's avatar
    Damien committed
            $this->assertSame('TEST-CKENT', $responseBody->user_id);
            $this->assertSame('TEST-CLARK2', $responseBody->firstname);
            $this->assertSame('TEST-KENT2', $responseBody->lastname);
            $this->assertSame('OK', $responseBody->status);
            $this->assertSame('N', $responseBody->enabled);
            $this->assertSame('0122334455', $responseBody->phone);
            $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();
    
    Damien's avatar
    Damien committed
    
            //  DELETE
            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
            $request        = \Slim\Http\Request::createFromEnvironment($environment);
    
            $response       = $userController->delete($request, new \Slim\Http\Response(), ['id' => self::$id]);
            $responseBody   = json_decode((string)$response->getBody());
    
    Damien's avatar
    Damien committed
    
            $this->assertSame(_DELETED_USER, $responseBody->success);
    
            //  READ
            $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
            $request        = \Slim\Http\Request::createFromEnvironment($environment);
    
            $response       = $userController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
    
            $responseBody   = json_decode((string)$response->getBody());
    
            $this->assertSame(self::$id, $responseBody->id);
    
    Damien's avatar
    Damien committed
            $this->assertSame('TEST-CKENT', $responseBody->user_id);
            $this->assertSame('TEST-CLARK2', $responseBody->firstname);
            $this->assertSame('TEST-KENT2', $responseBody->lastname);
            $this->assertSame('DEL', $responseBody->status);
            $this->assertSame('N', $responseBody->enabled);
            $this->assertSame('0122334455', $responseBody->phone);
            $this->assertSame('ck@dailyP.com', $responseBody->mail);
            $this->assertSame('CK', $responseBody->initials);
            $this->assertSame(null, $responseBody->thumbprint);
    
            //  REAL DELETE
    
            \SrcCore\models\DatabaseModel::delete([
    
    Damien's avatar
    Damien committed
                'table' => 'users',
                'where' => ['id = ?'],