Get rid of mockery library. Still have some troubles with functional tests for api

This commit is contained in:
ErickSkrauch
2019-12-14 00:16:05 +03:00
parent d9ef27b745
commit e8b71d33d0
37 changed files with 217 additions and 374 deletions

View File

@@ -4,19 +4,13 @@ declare(strict_types=1);
namespace api\tests\unit;
use Codeception\Test\Unit;
use Mockery;
use common\tests\helpers\ExtendedPHPMock;
/**
* @property \api\tests\UnitTester $tester
*/
class TestCase extends Unit {
/**
* @var \api\tests\UnitTester
*/
protected $tester;
protected function tearDown(): void {
parent::tearDown();
Mockery::close();
}
use ExtendedPHPMock;
/**
* A list of fixtures that will be loaded before the test, but after the database is cleaned up

View File

@@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
namespace codeception\api\unit\components\ReCaptcha;
use api\components\ReCaptcha\Validator;
@@ -12,14 +14,14 @@ use ReflectionClass;
class ValidatorTest extends TestCase {
public function testValidateEmptyValue() {
$validator = new Validator(mock(ClientInterface::class));
$validator = new Validator($this->createMock(ClientInterface::class));
$this->assertFalse($validator->validate('', $error));
$this->assertSame('error.captcha_required', $error, 'Get error.captcha_required, if passed empty value');
}
public function testValidateInvalidValue() {
$mockClient = mock(ClientInterface::class);
$mockClient->shouldReceive('request')->andReturn(new Response(200, [], json_encode([
$mockClient = $this->createMock(ClientInterface::class);
$mockClient->method('request')->willReturn(new Response(200, [], json_encode([
'success' => false,
'error-codes' => [
'invalid-input-response', // The response parameter is invalid or malformed.
@@ -32,14 +34,16 @@ class ValidatorTest extends TestCase {
}
public function testValidateWithNetworkTroubles() {
$mockClient = mock(ClientInterface::class);
$mockClient->shouldReceive('request')->andThrow(mock(ConnectException::class))->once();
$mockClient->shouldReceive('request')->andReturn(new Response(200, [], json_encode([
'success' => true,
'error-codes' => [
'invalid-input-response', // The response parameter is invalid or malformed.
],
])))->once();
$mockClient = $this->createMock(ClientInterface::class);
$mockClient->expects($this->exactly(2))->method('request')->willReturnOnConsecutiveCalls(
$this->throwException($this->createMock(ConnectException::class)),
$this->returnValue(new Response(200, [], json_encode([
'success' => true,
'error-codes' => [
'invalid-input-response', // The response parameter is invalid or malformed.
],
])))
);
PHPMockery::mock($this->getClassNamespace(Validator::class), 'sleep')->once();
$validator = new Validator($mockClient);
@@ -48,8 +52,8 @@ class ValidatorTest extends TestCase {
}
public function testValidateWithHugeNetworkTroubles() {
$mockClient = mock(ClientInterface::class);
$mockClient->shouldReceive('request')->andThrow(mock(ConnectException::class))->times(3);
$mockClient = $this->createMock(ClientInterface::class);
$mockClient->expects($this->exactly(3))->method('request')->willThrowException($this->createMock(ConnectException::class));
PHPMockery::mock($this->getClassNamespace(Validator::class), 'sleep')->times(2);
$validator = new Validator($mockClient);
@@ -58,8 +62,8 @@ class ValidatorTest extends TestCase {
}
public function testValidateValidValue() {
$mockClient = mock(ClientInterface::class);
$mockClient->shouldReceive('request')->andReturn(new Response(200, [], json_encode([
$mockClient = $this->createMock(ClientInterface::class);
$mockClient->method('request')->willReturn(new Response(200, [], json_encode([
'success' => true,
])));
$validator = new Validator($mockClient);

View File

@@ -46,27 +46,24 @@ class ComponentTest extends TestCase {
$this->assertNull($component->getActiveSession());
// Identity is a Oauth2Identity
$component->setIdentity(mock(LegacyOAuth2Identity::class));
$component->setIdentity($this->createMock(LegacyOAuth2Identity::class));
$this->assertNull($component->getActiveSession());
// Identity is correct, but have no jti claim
/** @var JwtIdentity|\Mockery\MockInterface $identity */
$identity = mock(JwtIdentity::class);
$identity->shouldReceive('getToken')->andReturn(new Token());
$identity = $this->createMock(JwtIdentity::class);
$identity->method('getToken')->willReturn(new Token());
$component->setIdentity($identity);
$this->assertNull($component->getActiveSession());
// Identity is correct and has jti claim, but there is no associated session
/** @var JwtIdentity|\Mockery\MockInterface $identity */
$identity = mock(JwtIdentity::class);
$identity->shouldReceive('getToken')->andReturn(new Token([], ['jti' => new Basic('jti', 999999)]));
$identity = $this->createMock(JwtIdentity::class);
$identity->method('getToken')->willReturn(new Token([], ['jti' => new Basic('jti', 999999)]));
$component->setIdentity($identity);
$this->assertNull($component->getActiveSession());
// Identity is correct, has jti claim and associated session exists
/** @var JwtIdentity|\Mockery\MockInterface $identity */
$identity = mock(JwtIdentity::class);
$identity->shouldReceive('getToken')->andReturn(new Token([], ['jti' => new Basic('jti', 1)]));
$identity = $this->createMock(JwtIdentity::class);
$identity->method('getToken')->willReturn(new Token([], ['jti' => new Basic('jti', 1)]));
$component->setIdentity($identity);
$session = $component->getActiveSession();
$this->assertNotNull($session);
@@ -77,9 +74,8 @@ class ComponentTest extends TestCase {
/** @var AccountSession $session */
$session = $this->tester->grabFixture('sessions', 'admin2');
/** @var Component|\Mockery\MockInterface $component */
$component = mock(Component::class . '[getActiveSession]')->makePartial();
$component->shouldReceive('getActiveSession')->times(1)->andReturn($session);
$component = $this->createPartialMock(Component::class, ['getActiveSession']);
$component->expects($this->once())->method('getActiveSession')->willReturn($session);
/** @var Account $account */
$account = $this->tester->grabFixture('accounts', 'admin');

View File

@@ -18,7 +18,7 @@ class ForgotPasswordFormTest extends TestCase {
protected function setUp(): void {
parent::setUp();
Yii::$container->set(ReCaptchaValidator::class, new class(mock(ClientInterface::class)) extends ReCaptchaValidator {
Yii::$container->set(ReCaptchaValidator::class, new class($this->createMock(ClientInterface::class)) extends ReCaptchaValidator {
public function validateValue($value) {
return null;
}

View File

@@ -13,7 +13,6 @@ use common\tasks\SendRegistrationEmail;
use common\tests\fixtures\AccountFixture;
use common\tests\fixtures\EmailActivationFixture;
use common\tests\fixtures\UsernameHistoryFixture;
use common\tests\helpers\Mock;
use GuzzleHttp\ClientInterface;
use Yii;
use yii\validators\EmailValidator;
@@ -25,7 +24,7 @@ class RegistrationFormTest extends TestCase {
protected function setUp(): void {
parent::setUp();
$this->mockRequest();
Yii::$container->set(ReCaptchaValidator::class, new class(mock(ClientInterface::class)) extends ReCaptchaValidator {
Yii::$container->set(ReCaptchaValidator::class, new class($this->createMock(ClientInterface::class)) extends ReCaptchaValidator {
public function validateValue($value) {
return null;
}
@@ -57,8 +56,8 @@ class RegistrationFormTest extends TestCase {
}
public function testSignup() {
Mock::func(EmailValidator::class, 'checkdnsrr')->andReturn(true);
Mock::func(EmailValidator::class, 'dns_get_record')->andReturn(['']);
$this->getFunctionMock(EmailValidator::class, 'checkdnsrr')->expects($this->any())->willReturn(true);
$this->getFunctionMock(EmailValidator::class, 'dns_get_record')->expects($this->any())->willReturn(['']);
$model = new RegistrationForm([
'username' => 'some_username',
'email' => 'some_email@example.com',
@@ -75,8 +74,8 @@ class RegistrationFormTest extends TestCase {
}
public function testSignupWithDefaultLanguage() {
Mock::func(EmailValidator::class, 'checkdnsrr')->andReturn(true);
Mock::func(EmailValidator::class, 'dns_get_record')->andReturn(['']);
$this->getFunctionMock(EmailValidator::class, 'checkdnsrr')->expects($this->any())->willReturn(true);
$this->getFunctionMock(EmailValidator::class, 'dns_get_record')->expects($this->any())->willReturn(['']);
$model = new RegistrationForm([
'username' => 'some_username',
'email' => 'some_email@example.com',

View File

@@ -19,7 +19,7 @@ class RepeatAccountActivationFormTest extends TestCase {
protected function setUp(): void {
parent::setUp();
Yii::$container->set(ReCaptchaValidator::class, new class(mock(ClientInterface::class)) extends ReCaptchaValidator {
Yii::$container->set(ReCaptchaValidator::class, new class($this->createMock(ClientInterface::class)) extends ReCaptchaValidator {
public function validateValue($value) {
return null;
}

View File

@@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
namespace api\tests\unit\modules\accounts\models;
use api\modules\accounts\models\AcceptRulesForm;
@@ -9,9 +11,8 @@ use const common\LATEST_RULES_VERSION;
class AcceptRulesFormTest extends TestCase {
public function testAgreeWithLatestRules() {
/** @var Account|\Mockery\MockInterface $account */
$account = mock(Account::class . '[save]');
$account->shouldReceive('save')->andReturn(true);
$account = $this->createPartialMock(Account::class, ['save']);
$account->method('save')->willReturn(true);
$account->rules_agreement_version = LATEST_RULES_VERSION - 1;
$model = new AcceptRulesForm($account);

View File

@@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
namespace api\tests\unit\modules\accounts\models;
use api\modules\accounts\models\ChangeLanguageForm;
@@ -8,9 +10,8 @@ use common\models\Account;
class ChangeLanguageFormTest extends TestCase {
public function testApplyLanguage() {
/** @var Account|\Mockery\MockInterface $account */
$account = mock(Account::class . '[save]');
$account->shouldReceive('save')->andReturn(true);
$account = $this->createPartialMock(Account::class, ['save']);
$account->method('save')->willReturn(true);
$model = new ChangeLanguageForm($account);
$model->lang = 'ru';

View File

@@ -10,7 +10,6 @@ use common\components\UserPass;
use common\helpers\Error as E;
use common\models\Account;
use Yii;
use yii\db\Transaction;
class ChangePasswordFormTest extends TestCase {
@@ -57,21 +56,13 @@ class ChangePasswordFormTest extends TestCase {
}
public function testPerformAction() {
$component = mock(Component::class . '[terminateSessions]');
$component->shouldNotReceive('terminateSessions');
$component = $this->createPartialMock(Component::class, ['terminateSessions']);
$component->expects($this->never())->method('terminateSessions');
Yii::$app->set('user', $component);
$transaction = mock(Transaction::class . '[commit]');
$transaction->shouldReceive('commit');
$connection = mock(Yii::$app->db);
$connection->shouldReceive('beginTransaction')->andReturn($transaction);
Yii::$app->set('db', $connection);
/** @var Account|\Mockery\MockInterface $account */
$account = mock(Account::class . '[save]');
$account->shouldReceive('save')->andReturn(true);
$account = $this->createPartialMock(Account::class, ['save']);
$account->method('save')->willReturn(true);
$account->setPassword('password_0');
$model = new ChangePasswordForm($account, [
@@ -85,9 +76,8 @@ class ChangePasswordFormTest extends TestCase {
$this->assertTrue($account->validatePassword('my-new-password'), 'new password should be successfully stored into account');
$this->assertGreaterThanOrEqual($callTime, $account->password_changed_at, 'password change time updated');
/** @var Account|\Mockery\MockInterface $account */
$account = mock(Account::class . '[save]');
$account->shouldReceive('save')->andReturn(true);
$account = $this->createPartialMock(Account::class, ['save']);
$account->method('save')->willReturn(true);
$account->email = 'mock@ely.by';
$account->password_hash_strategy = Account::PASS_HASH_STRATEGY_OLD_ELY;
$account->password_hash = UserPass::make($account->email, '12345678');
@@ -106,14 +96,12 @@ class ChangePasswordFormTest extends TestCase {
}
public function testPerformActionWithLogout() {
/** @var Account|\Mockery\MockInterface $account */
$account = mock(Account::class . '[save]');
$account->shouldReceive('save')->andReturn(true);
$account = $this->createPartialMock(Account::class, ['save']);
$account->method('save')->willReturn(true);
$account->setPassword('password_0');
/** @var Component|\Mockery\MockInterface $component */
$component = mock(Component::class . '[terminateSessions]');
$component->shouldReceive('terminateSessions')->once()->withArgs([$account, Component::KEEP_CURRENT_SESSION]);
$component = $this->createPartialMock(Component::class, ['terminateSessions']);
$component->expects($this->once())->method('terminateSessions')->with($account, Component::KEEP_CURRENT_SESSION);
Yii::$app->set('user', $component);

View File

@@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
namespace api\tests\unit\modules\accounts\models;
use api\modules\accounts\models\DisableTwoFactorAuthForm;
@@ -9,16 +11,15 @@ use common\models\Account;
class DisableTwoFactorAuthFormTest extends TestCase {
public function testPerformAction() {
/** @var Account|\Mockery\MockInterface $account */
$account = mock(Account::class)->makePartial();
$account->shouldReceive('save')->once()->andReturn(true);
$account = $this->createPartialMock(Account::class, ['save']);
$account->expects($this->once())->method('save')->willReturn(true);
$account->is_otp_enabled = true;
$account->otp_secret = 'mock secret';
/** @var DisableTwoFactorAuthForm|\Mockery\MockInterface $model */
$model = mock(DisableTwoFactorAuthForm::class . '[validate]', [$account]);
$model->shouldReceive('validate')->once()->andReturn(true);
$model = $this->createPartialMock(DisableTwoFactorAuthForm::class, ['getAccount', 'validate']);
$model->method('getAccount')->willReturn($account);
$model->expects($this->once())->method('validate')->willReturn(true);
$this->assertTrue($model->performAction());
$this->assertNull($account->otp_secret);

View File

@@ -13,21 +13,18 @@ use Yii;
class EnableTwoFactorAuthFormTest extends TestCase {
public function testPerformAction() {
/** @var Account|\Mockery\MockInterface $account */
$account = mock(Account::class . '[save]');
$account->shouldReceive('save')->andReturn(true);
$account = $this->createPartialMock(Account::class, ['save']);
$account->method('save')->willReturn(true);
$account->is_otp_enabled = false;
$account->otp_secret = 'mock secret';
/** @var Component|\Mockery\MockInterface $component */
$component = mock(Component::class . '[terminateSessions]');
$component->shouldReceive('terminateSessions')->withArgs([$account, Component::KEEP_CURRENT_SESSION]);
$component = $this->createPartialMock(Component::class, ['terminateSessions']);
$component->method('terminateSessions')->with($account, Component::KEEP_CURRENT_SESSION);
Yii::$app->set('user', $component);
/** @var EnableTwoFactorAuthForm|\Mockery\MockInterface $model */
$model = mock(EnableTwoFactorAuthForm::class . '[validate]', [$account]);
$model->shouldReceive('validate')->andReturn(true);
$model = $this->createPartialMock(EnableTwoFactorAuthForm::class, ['getAccount', 'validate']);
$model->method('getAccount')->willReturn($account);
$model->expects($this->once())->method('validate')->willReturn(true);
$this->assertTrue($model->performAction());
$this->assertTrue($account->is_otp_enabled);

View File

@@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
namespace api\tests\unit\modules\accounts\models;
use api\modules\accounts\models\SendNewEmailVerificationForm;
@@ -9,7 +11,6 @@ use common\models\EmailActivation;
use common\tasks\SendNewEmailConfirmation;
use common\tests\fixtures\AccountFixture;
use common\tests\fixtures\EmailActivationFixture;
use common\tests\helpers\Mock;
use yii\validators\EmailValidator;
class SendNewEmailVerificationFormTest extends TestCase {
@@ -42,7 +43,7 @@ class SendNewEmailVerificationFormTest extends TestCase {
'key' => $key,
'email' => 'my-new-email@ely.by',
]);
Mock::func(EmailValidator::class, 'checkdnsrr')->andReturn(true);
$this->getFunctionMock(EmailValidator::class, 'checkdnsrr')->expects($this->any())->willReturn(true);
$this->assertTrue($model->performAction());
$this->assertNull(EmailActivation::findOne($key));
/** @var EmailActivation $activation */

View File

@@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
namespace api\tests\unit\modules\accounts\models;
use api\modules\accounts\models\TwoFactorAuthInfo;
@@ -8,9 +10,8 @@ use common\models\Account;
class TwoFactorAuthInfoTest extends TestCase {
public function testGetCredentials() {
/** @var Account|\Mockery\MockInterface $account */
$account = mock(Account::class . '[save]');
$account->shouldReceive('save')->andReturn(true);
$account = $this->createPartialMock(Account::class, ['save']);
$account->method('save')->willReturn(true);
$account->email = 'mock@email.com';
$account->otp_secret = null;
@@ -18,7 +19,7 @@ class TwoFactorAuthInfoTest extends TestCase {
$model = new TwoFactorAuthInfo($account);
$result = $model->getCredentials();
$this->assertTrue(is_array($result));
$this->assertIsArray($result);
$this->assertArrayHasKey('qr', $result);
$this->assertArrayHasKey('uri', $result);
$this->assertArrayHasKey('secret', $result);
@@ -31,9 +32,8 @@ class TwoFactorAuthInfoTest extends TestCase {
libxml_use_internal_errors($previous);
$this->assertEmpty(libxml_get_errors());
/** @var Account|\Mockery\MockInterface $account */
$account = mock(Account::class . '[save]');
$account->shouldReceive('save')->andReturn(true);
$account = $this->createPartialMock(Account::class, ['save']);
$account->method('save')->willReturn(true);
$account->email = 'mock@email.com';
$account->otp_secret = 'AAAA';

View File

@@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
namespace api\tests\unit\modules\oauth\models;
use api\modules\oauth\models\BaseOauthClientType;
@@ -10,9 +12,7 @@ class BaseOauthClientTypeTest extends TestCase {
public function testApplyTyClient(): void {
$client = new OauthClient();
/** @var BaseOauthClientType|\Mockery\MockInterface $form */
$form = mock(BaseOauthClientType::class);
$form->makePartial();
$form = $this->getMockForAbstractClass(BaseOauthClientType::class);
$form->name = 'Application name';
$form->websiteUrl = 'http://example.com';

View File

@@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
namespace api\tests\unit\modules\oauth\models;
use api\modules\oauth\models\OauthClientForm;
@@ -10,24 +12,19 @@ use common\tasks\ClearOauthSessions;
class OauthClientFormTest extends TestCase {
public function testSave() {
/** @var OauthClient|\Mockery\MockInterface $client */
$client = mock(OauthClient::class . '[save]');
$client->shouldReceive('save')->andReturn(true);
$client = $this->createPartialMock(OauthClient::class, ['save']);
$client->method('save')->willReturn(true);
$client->account_id = 1;
$client->type = OauthClient::TYPE_APPLICATION;
$client->name = 'Test application';
/** @var OauthClientForm|\Mockery\MockInterface $form */
$form = mock(OauthClientForm::class . '[isClientExists]', [$client]);
$form->shouldAllowMockingProtectedMethods();
$form->shouldReceive('isClientExists')
->times(3)
->andReturnValues([true, true, false]);
$form = $this->createPartialMock(OauthClientForm::class, ['getClient', 'isClientExists']);
$form->method('getClient')->willReturn($client);
$form->expects($this->exactly(3))->method('isClientExists')->willReturnOnConsecutiveCalls(true, true, false);
/** @var OauthClientTypeForm|\Mockery\MockInterface $requestType */
$requestType = mock(OauthClientTypeForm::class);
$requestType->shouldReceive('validate')->once()->andReturn(true);
$requestType->shouldReceive('applyToClient')->once()->withArgs([$client]);
$requestType = $this->createMock(OauthClientTypeForm::class);
$requestType->expects($this->once())->method('validate')->willReturn(true);
$requestType->expects($this->once())->method('applyToClient')->with($client);
$this->assertTrue($form->save($requestType));
$this->assertSame('test-application2', $client->id);
@@ -36,9 +33,8 @@ class OauthClientFormTest extends TestCase {
}
public function testSaveUpdateExistsModel() {
/** @var OauthClient|\Mockery\MockInterface $client */
$client = mock(OauthClient::class . '[save]');
$client->shouldReceive('save')->andReturn(true);
$client = $this->createPartialMock(OauthClient::class, ['save']);
$client->method('save')->willReturn(true);
$client->setIsNewRecord(false);
$client->id = 'application-id';
$client->secret = 'application_secret';
@@ -49,10 +45,9 @@ class OauthClientFormTest extends TestCase {
$client->redirect_uri = 'http://example.com/oauth/ely';
$client->website_url = 'http://example.com';
/** @var OauthClientForm|\Mockery\MockInterface $form */
$form = mock(OauthClientForm::class . '[isClientExists]', [$client]);
$form->shouldAllowMockingProtectedMethods();
$form->shouldReceive('isClientExists')->andReturn(false);
$form = $this->createPartialMock(OauthClientForm::class, ['getClient', 'isClientExists']);
$form->method('getClient')->willReturn($client);
$form->method('isClientExists')->willReturn(false);
$request = new class implements OauthClientTypeForm {
public function load($data): bool {
@@ -83,11 +78,10 @@ class OauthClientFormTest extends TestCase {
}
public function testDelete() {
/** @var OauthClient|\Mockery\MockInterface $client */
$client = mock(OauthClient::class . '[save]');
$client = $this->createPartialMock(OauthClient::class, ['save']);
$client->method('save')->willReturn(true);
$client->id = 'mocked-id';
$client->type = OauthClient::TYPE_APPLICATION;
$client->shouldReceive('save')->andReturn(true);
$form = new OauthClientForm($client);
$this->assertTrue($form->delete());
@@ -100,12 +94,11 @@ class OauthClientFormTest extends TestCase {
}
public function testReset() {
/** @var OauthClient|\Mockery\MockInterface $client */
$client = mock(OauthClient::class . '[save]');
$client = $this->createPartialMock(OauthClient::class, ['save']);
$client->method('save')->willReturn(true);
$client->id = 'mocked-id';
$client->secret = 'initial_secret';
$client->type = OauthClient::TYPE_APPLICATION;
$client->shouldReceive('save')->andReturn(true);
$form = new OauthClientForm($client);
$this->assertTrue($form->reset());
@@ -118,12 +111,11 @@ class OauthClientFormTest extends TestCase {
}
public function testResetWithSecret() {
/** @var OauthClient|\Mockery\MockInterface $client */
$client = mock(OauthClient::class . '[save]');
$client = $this->createPartialMock(OauthClient::class, ['save']);
$client->method('save')->willReturn(true);
$client->id = 'mocked-id';
$client->secret = 'initial_secret';
$client->type = OauthClient::TYPE_APPLICATION;
$client->shouldReceive('save')->andReturn(true);
$form = new OauthClientForm($client);
$this->assertTrue($form->reset(true));

View File

@@ -22,9 +22,8 @@ class AccountOwnerTest extends TestCase {
$this->assertFalse($rule->execute('some token', $item, ['accountId' => 123]));
// Identity presented, but have no account
/** @var IdentityInterface|\Mockery\MockInterface $identity */
$identity = mock(IdentityInterface::class);
$identity->shouldReceive('getAccount')->andReturn(null);
$identity = $this->createMock(IdentityInterface::class);
$identity->method('getAccount')->willReturn(null);
Yii::$app->user->setIdentity($identity);
$this->assertFalse($rule->execute('some token', $item, ['accountId' => 123]));
@@ -35,9 +34,8 @@ class AccountOwnerTest extends TestCase {
$account->status = Account::STATUS_ACTIVE;
$account->rules_agreement_version = LATEST_RULES_VERSION;
/** @var IdentityInterface|\Mockery\MockInterface $identity */
$identity = mock(IdentityInterface::class);
$identity->shouldReceive('getAccount')->andReturn($account);
$identity = $this->createMock(IdentityInterface::class);
$identity->method('getAccount')->willReturn($account);
Yii::$app->user->setIdentity($identity);

View File

@@ -33,9 +33,8 @@ class OauthClientOwnerTest extends TestCase {
$this->assertFalse($rule->execute('some token', $item, ['clientId' => 'ely']));
// Client exists, identity presented, but have no account
/** @var IdentityInterface|\Mockery\MockInterface $identity */
$identity = mock(IdentityInterface::class);
$identity->shouldReceive('getAccount')->andReturn(null);
$identity = $this->createMock(IdentityInterface::class);
$identity->method('getAccount')->willReturn(null);
Yii::$app->user->setIdentity($identity);
$this->assertFalse($rule->execute('some token', $item, ['clientId' => 'ely']));
@@ -46,9 +45,8 @@ class OauthClientOwnerTest extends TestCase {
$account->status = Account::STATUS_ACTIVE;
$account->rules_agreement_version = LATEST_RULES_VERSION;
/** @var IdentityInterface|\Mockery\MockInterface $identity */
$identity = mock(IdentityInterface::class);
$identity->shouldReceive('getAccount')->andReturn($account);
$identity = $this->createMock(IdentityInterface::class);
$identity->method('getAccount')->willReturn($account);
Yii::$app->user->setIdentity($identity);
$this->assertTrue($rule->execute('token', $item, ['clientId' => 'admin-oauth-client']));

View File

@@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
namespace codeception\api\unit\validators;
use api\rbac\Permissions as P;
@@ -26,9 +28,8 @@ class PasswordRequiredValidatorTest extends TestCase {
$this->assertNull($this->callProtected($model, 'validateValue', '12345678'));
// Skip validation if user can skip identity verification
/** @var User|\Mockery\MockInterface $component */
$component = mock(User::class . '[can]', [['identityClass' => '']]);
$component->shouldReceive('can')->withArgs([P::ESCAPE_IDENTITY_VERIFICATION])->andReturn(true);
$component = $this->createPartialMock(User::class, ['can']);
$component->method('can')->with(P::ESCAPE_IDENTITY_VERIFICATION)->willReturn(true);
$model->user = $component;
$this->assertNull($this->callProtected($model, 'validateValue', ''));
}