accounts/api/tests/unit/modules/authserver/models/AuthenticationFormTest.php

64 lines
2.4 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
namespace codeception\api\unit\modules\authserver\models;
use api\modules\authserver\exceptions\ForbiddenOperationException;
use api\modules\authserver\models\AuthenticationForm;
2019-02-23 04:41:57 +05:30
use api\tests\unit\TestCase;
use common\tests\fixtures\AccountFixture;
2019-02-23 04:41:57 +05:30
use Ramsey\Uuid\Uuid;
class AuthenticationFormTest extends TestCase {
public function _fixtures(): array {
return [
'accounts' => AccountFixture::class,
];
}
2019-12-05 03:22:27 +05:30
public function testAuthenticateByValidCredentials() {
$authForm = new AuthenticationForm();
$authForm->username = 'admin';
$authForm->password = 'password_0';
$authForm->clientToken = Uuid::uuid4()->toString();
$result = $authForm->authenticate()->getResponseData();
$this->assertRegExp('/^[\w=-]+\.[\w=-]+\.[\w=-]+$/', $result['accessToken']);
$this->assertSame($authForm->clientToken, $result['clientToken']);
$this->assertSame('df936908-b2e1-544d-96f8-2977ec213022', $result['selectedProfile']['id']);
$this->assertSame('Admin', $result['selectedProfile']['name']);
$this->assertFalse($result['selectedProfile']['legacy']);
}
/**
* @dataProvider getInvalidCredentialsCases
*/
public function testAuthenticateByWrongNicknamePass(string $expectedFieldError, string $login, string $password) {
$this->expectException(ForbiddenOperationException::class);
2019-12-05 03:22:27 +05:30
$this->expectExceptionMessage("Invalid credentials. Invalid {$expectedFieldError} or password.");
2019-12-05 03:22:27 +05:30
$authForm = new AuthenticationForm();
$authForm->username = $login;
$authForm->password = $password;
$authForm->clientToken = Uuid::uuid4()->toString();
$authForm->authenticate();
}
2019-12-05 03:22:27 +05:30
public function getInvalidCredentialsCases() {
yield ['nickname', 'wrong-username', 'wrong-password'];
yield ['email', 'wrong-email@ely.by', 'wrong-password'];
}
public function testAuthenticateByValidCredentialsIntoBlockedAccount() {
$this->expectException(ForbiddenOperationException::class);
$this->expectExceptionMessage('This account has been suspended.');
2019-12-05 03:22:27 +05:30
$authForm = new AuthenticationForm();
$authForm->username = 'Banned';
$authForm->password = 'password_0';
2019-12-05 03:22:27 +05:30
$authForm->clientToken = Uuid::uuid4()->toString();
$authForm->authenticate();
}
}