Newer
Older
* Copyright Maarch since 2008 under license.
* See LICENSE.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 $signatureId = null;
private static $userId = null;
public function testCreateUser()
{
$userController = new \User\controllers\UserController();
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$aArgs = [
'login' => 'emailLogin',
'firstname' => 'Prénom',
'lastname' => 'Nom',
Jean-Laurent DUZANT
committed
'email' => 'email@test.fr'
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $userController->create($fullRequest, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody());

Quentin Ribac
committed
'firstname' => 'Prénom',
'lastname' => 'Nom'
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $userController->create($fullRequest, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('Body email is empty or not a valid email', $responseBody->errors);
'firstname' => 'Prénom',
'lastname' => 'Nom',
'email' => 'emailtest.fr'
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $userController->create($fullRequest, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('Body email is empty or not a valid email', $responseBody->errors);
{
$userController = new \User\controllers\UserController();
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
'currentPassword' => 'maarch@',
'newPassword' => 'maarch2',
'passwordConfirmation' => 'maarch2'
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $userController->updatePassword($fullRequest, new \Slim\Http\Response(), ['id' => $GLOBALS['id']]);
$responseBody = json_decode((string)$response->getBody());

Quentin Ribac
committed
//Error
$aArgs = [
'currentPassword' => 'maarch3',
'newPassword' => 'maarch',
'passwordConfirmation' => 'maarch'
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $userController->updatePassword($fullRequest, new \Slim\Http\Response(), ['id' => $GLOBALS['id']]);
$responseBody = json_decode((string)$response->getBody());

Quentin Ribac
committed
$this->assertSame('Wrong Password', $responseBody->errors);
//Error
$aArgs = [
'currentPassword' => 'maarch2',
'newPassword' => 'maa',
'passwordConfirmation' => 'maa'
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $userController->updatePassword($fullRequest, new \Slim\Http\Response(), ['id' => $GLOBALS['id']]);

Quentin Ribac
committed
$this->assertSame('Password does not match security criteria', $responseBody->errors);
//Error
$aArgs = [
'currentPassword' => 'maarch2',
'newPassword' => 'maarch1',
'passwordConfirmation' => 'maarch'
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $userController->updatePassword($fullRequest, new \Slim\Http\Response(), ['id' => $GLOBALS['id']]);
$responseBody = json_decode((string)$response->getBody());

Quentin Ribac
committed

Florian Azizian
committed
$this->assertSame('Body newPassword and passwordConfirmation must be identical', $responseBody->errors);
$aArgs = [
'currentPassword' => 'maarch2',
'newPassword' => 'maarch@',
'passwordConfirmation' => 'maarch@'
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $userController->updatePassword($fullRequest, new \Slim\Http\Response(), ['id' => $GLOBALS['id']]);
$responseBody = json_decode((string)$response->getBody());

Quentin Ribac
committed
public function testGet()
{
$userController = new \User\controllers\UserController();
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $userController->get($request, new \Slim\Http\Response());
$responseBody = json_decode((string)$response->getBody());
$this->assertIsArray($responseBody->users);
$this->assertNotEmpty($responseBody->users);
}
public function testGetById()
{
$userController = new \User\controllers\UserController();
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $userController->getById($request, new \Slim\Http\Response(), ['id' => self::$userId]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame(self::$userId, $responseBody->user->id);
$this->assertSame('email@test.fr', $responseBody->user->email);
$this->assertSame('Prénom', $responseBody->user->firstname);
$this->assertSame('Nom', $responseBody->user->lastname);
$response = $userController->getById($request, new \Slim\Http\Response(), ['id' => -1]);
$this->assertSame(400, $response->getStatusCode());
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('User does not exist', $responseBody->errors);
}
public function testUpdate()
{
$userController = new \User\controllers\UserController();
// UPDATE PREFERENCE
$previousUserId = $GLOBALS['id'];
$GLOBALS['id'] = self::$userId;
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$aArgs = [
'writingMode' => 'stylus',
'writingSize' => 2,
'writingColor' => '#F1F1F1',
'lang' => 'fr',
'signatureScaling' => false,
'notifications' => [
'instant' => true,
'summaries' => [],

Quentin Ribac
committed
],
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $userController->updatePreferences($fullRequest, new \Slim\Http\Response(), ['id' => self::$userId]);
$responseBodyPreferences = json_decode((string)$response->getBody());
$GLOBALS['id'] = $previousUserId;
$this->assertEmpty($responseBodyPreferences);
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
'firstname' => 'Jolly',
'lastname' => 'Jumper',
Jean-Laurent DUZANT
committed
'email' => 'email@test.fr'
];
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $userController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$userId]);
$responseBody = json_decode((string)$response->getBody());
$this->assertIsObject($responseBody->user);
$response = $userController->getById($request, new \Slim\Http\Response(), ['id' => self::$userId]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('Jolly', $responseBody->user->firstname);
$this->assertSame('Jumper', $responseBody->user->lastname);
$preferences = json_decode($responseBody->user->preferences, true);
$this->assertSame('stylus', $preferences['writingMode']);
$this->assertSame(2, $preferences['writingSize']);
$this->assertSame('#F1F1F1', $preferences['writingColor']);
$this->assertSame('fr', $preferences['lang']);
$this->assertIsArray($preferences['notifications']);
$this->assertSame(true, $preferences['notifications']['instant']);
$this->assertSame([], $preferences['notifications']['summaries']);
}
public function testCreateSignature()
{
$previousUserId = $GLOBALS['id'];
$GLOBALS['id'] = self::$userId;
$signatureController = new \User\controllers\SignatureController();
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$aArgs = [
'encodedSignature' => base64_encode(file_get_contents('test/unitTests/samples/signature.jpg')),
'format' => 'jpg'
$fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
$response = $signatureController->create($fullRequest, new \Slim\Http\Response(), ['id' => self::$userId]);
$responseBody = json_decode((string)$response->getBody());
$this->assertIsInt($responseBody->signatureId);
$previousUserId = $GLOBALS['id'];
$GLOBALS['id'] = self::$userId;
$signatureController = new \User\controllers\SignatureController();
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $signatureController->get($request, new \Slim\Http\Response(), ['id' => self::$userId]);
$responseBody = json_decode((string)$response->getBody());
$this->assertIsArray($responseBody->signatures);
}
public function testDeleteSignature()
{
$previousUserId = $GLOBALS['id'];
$GLOBALS['id'] = self::$userId;
$signatureController = new \User\controllers\SignatureController();
$environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
$request = \Slim\Http\Request::createFromEnvironment($environment);
$response = $signatureController->delete($request, new \Slim\Http\Response(), ['id' => self::$userId, 'signatureId' => self::$signatureId]);
$responseBody = json_decode((string)$response->getBody());
$this->assertSame('success', $responseBody->success);
\SrcCore\models\DatabaseModel::delete([
'table' => 'users',
'where' => ['id = ?'],
'data' => [self::$userId]