Update Yii2 framework to the latest version

This commit is contained in:
ErickSkrauch
2019-06-18 02:33:20 +03:00
parent e4804e0cdd
commit 31069562b3
7 changed files with 75 additions and 29 deletions

View File

@@ -6,6 +6,7 @@ namespace api\modules\authserver;
use Yii; use Yii;
use yii\base\BootstrapInterface; use yii\base\BootstrapInterface;
use yii\web\NotFoundHttpException; use yii\web\NotFoundHttpException;
use yii\web\Response;
class Module extends \yii\base\Module implements BootstrapInterface { class Module extends \yii\base\Module implements BootstrapInterface {
@@ -13,7 +14,7 @@ class Module extends \yii\base\Module implements BootstrapInterface {
public $defaultRoute = 'index'; public $defaultRoute = 'index';
public function beforeAction($action) { public function beforeAction($action): bool {
if (!parent::beforeAction($action)) { if (!parent::beforeAction($action)) {
return false; return false;
} }
@@ -23,10 +24,18 @@ class Module extends \yii\base\Module implements BootstrapInterface {
return true; return true;
} }
public function afterAction($action, $result) {
if ($result === null) {
Yii::$app->response->format = Response::FORMAT_RAW;
}
return parent::afterAction($action, $result);
}
/** /**
* @param \yii\base\Application $app * @param \yii\base\Application $app
*/ */
public function bootstrap($app) { public function bootstrap($app): void {
$legacyHost = $app->params['authserverHost']; $legacyHost = $app->params['authserverHost'];
$app->getUrlManager()->addRules([ $app->getUrlManager()->addRules([
"//{$legacyHost}/authserver/auth/<action>" => "{$this->id}/authentication/<action>", "//{$legacyHost}/authserver/auth/<action>" => "{$this->id}/authentication/<action>",

View File

@@ -1,4 +1,6 @@
<?php <?php
declare(strict_types=1);
namespace api\tests\functional\authserver; namespace api\tests\functional\authserver;
use api\tests\_pages\AuthserverRoute; use api\tests\_pages\AuthserverRoute;

View File

@@ -1,4 +1,6 @@
<?php <?php
declare(strict_types=1);
namespace api\tests\_support\models\authentication; namespace api\tests\_support\models\authentication;
use api\components\ReCaptcha\Validator as ReCaptchaValidator; use api\components\ReCaptcha\Validator as ReCaptchaValidator;
@@ -55,7 +57,8 @@ class RegistrationFormTest extends TestCase {
} }
public function testSignup() { public function testSignup() {
Mock::func(EmailValidator::class, 'checkdnsrr')->andReturnTrue(); Mock::func(EmailValidator::class, 'checkdnsrr')->andReturn(true);
Mock::func(EmailValidator::class, 'dns_get_record')->andReturn(['']);
$model = new RegistrationForm([ $model = new RegistrationForm([
'username' => 'some_username', 'username' => 'some_username',
'email' => 'some_email@example.com', 'email' => 'some_email@example.com',
@@ -72,7 +75,8 @@ class RegistrationFormTest extends TestCase {
} }
public function testSignupWithDefaultLanguage() { public function testSignupWithDefaultLanguage() {
Mock::func(EmailValidator::class, 'checkdnsrr')->andReturnTrue(); Mock::func(EmailValidator::class, 'checkdnsrr')->andReturn(true);
Mock::func(EmailValidator::class, 'dns_get_record')->andReturn(['']);
$model = new RegistrationForm([ $model = new RegistrationForm([
'username' => 'some_username', 'username' => 'some_username',
'email' => 'some_email@example.com', 'email' => 'some_email@example.com',

View File

@@ -1,5 +1,6 @@
<?php <?php
declare(strict_types=1); declare(strict_types=1);
namespace common\tests\helpers; namespace common\tests\helpers;
use phpmock\mockery\PHPMockery; use phpmock\mockery\PHPMockery;
@@ -17,6 +18,10 @@ class Mock {
return PHPMockery::mock(self::getClassNamespace($className), $function); return PHPMockery::mock(self::getClassNamespace($className), $function);
} }
public static function define(string $className, string $function): void {
PHPMockery::define(self::getClassNamespace($className), $function);
}
private static function getClassNamespace(string $className): string { private static function getClassNamespace(string $className): string {
return (new ReflectionClass($className))->getNamespaceName(); return (new ReflectionClass($className))->getNamespaceName();
} }

View File

@@ -1,4 +1,6 @@
<?php <?php
declare(strict_types=1);
namespace common\tests\unit\validators; namespace common\tests\unit\validators;
use common\tests\fixtures\AccountFixture; use common\tests\fixtures\AccountFixture;
@@ -17,6 +19,10 @@ class EmailValidatorTest extends TestCase {
public function _before() { public function _before() {
parent::_before(); parent::_before();
Mock::define(YiiEmailValidator::class, 'checkdnsrr');
Mock::define(YiiEmailValidator::class, 'dns_get_record');
$this->validator = new EmailValidator(); $this->validator = new EmailValidator();
} }
@@ -41,7 +47,8 @@ class EmailValidatorTest extends TestCase {
} }
public function testValidateAttributeLength() { public function testValidateAttributeLength() {
Mock::func(YiiEmailValidator::class, 'checkdnsrr')->andReturnTrue(); Mock::func(YiiEmailValidator::class, 'checkdnsrr')->andReturn(false);
$model = $this->createModel( $model = $this->createModel(
'emailemailemailemailemailemailemailemailemailemailemailemailemailemailemailemailemail' . 'emailemailemailemailemailemailemailemailemailemailemailemailemailemailemailemailemail' .
'emailemailemailemailemailemailemailemailemailemailemailemailemailemailemailemailemail' . 'emailemailemailemailemailemailemailemailemailemailemailemailemailemailemailemailemail' .
@@ -56,16 +63,27 @@ class EmailValidatorTest extends TestCase {
$this->assertNotSame(['error.email_too_long'], $model->getErrors('field')); $this->assertNotSame(['error.email_too_long'], $model->getErrors('field'));
} }
public function testValidateAttributeEmail() { public function testValidateAttributeEmailCaseNotExistsDomain() {
Mock::func(YiiEmailValidator::class, 'checkdnsrr')->times(3)->andReturnValues([false, false, true]); Mock::func(YiiEmailValidator::class, 'checkdnsrr')->andReturn(false);
Mock::func(YiiEmailValidator::class, 'dns_get_record')->times(0);
$model = $this->createModel('non-email'); $model = $this->createModel('non-email@this-domain-does-not-exists.de');
$this->validator->validateAttribute($model, 'field'); $this->validator->validateAttribute($model, 'field');
$this->assertSame(['error.email_invalid'], $model->getErrors('field')); $this->assertSame(['error.email_invalid'], $model->getErrors('field'));
}
$model = $this->createModel('non-email@etot-domen-ne-suschestrvyet.de'); public function testValidateAttributeEmailCaseExistsDomainButWithoutMXRecord() {
Mock::func(YiiEmailValidator::class, 'checkdnsrr')->andReturnValues([false, true]);
Mock::func(YiiEmailValidator::class, 'dns_get_record')->andReturn(['127.0.0.1']);
$model = $this->createModel('non-email@this-domain-has-no-mx-record.de');
$this->validator->validateAttribute($model, 'field'); $this->validator->validateAttribute($model, 'field');
$this->assertSame(['error.email_invalid'], $model->getErrors('field')); $this->assertNotSame(['error.email_invalid'], $model->getErrors('field'));
}
public function testValidateAttributeEmailCaseExistsDomainWithMXRecord() {
Mock::func(YiiEmailValidator::class, 'checkdnsrr')->andReturn(true);
Mock::func(YiiEmailValidator::class, 'dns_get_record')->andReturn(['mx.google.com']);
$model = $this->createModel('valid-email@gmail.com'); $model = $this->createModel('valid-email@gmail.com');
$this->validator->validateAttribute($model, 'field'); $this->validator->validateAttribute($model, 'field');
@@ -73,7 +91,8 @@ class EmailValidatorTest extends TestCase {
} }
public function testValidateAttributeTempmail() { public function testValidateAttributeTempmail() {
Mock::func(YiiEmailValidator::class, 'checkdnsrr')->times(2)->andReturnTrue(); Mock::func(YiiEmailValidator::class, 'checkdnsrr')->andReturn(true);
Mock::func(YiiEmailValidator::class, 'dns_get_record')->andReturn(['127.0.0.1']);
$model = $this->createModel('ibrpycwyjdnt@dropmail.me'); $model = $this->createModel('ibrpycwyjdnt@dropmail.me');
$this->validator->validateAttribute($model, 'field'); $this->validator->validateAttribute($model, 'field');
@@ -85,7 +104,8 @@ class EmailValidatorTest extends TestCase {
} }
public function testValidateAttributeIdna() { public function testValidateAttributeIdna() {
Mock::func(YiiEmailValidator::class, 'checkdnsrr')->times(2)->andReturnTrue(); Mock::func(YiiEmailValidator::class, 'checkdnsrr')->andReturn(true);
Mock::func(YiiEmailValidator::class, 'dns_get_record')->andReturn(['127.0.0.1']);
$model = $this->createModel('qdushyantasunassm@❕.gq'); $model = $this->createModel('qdushyantasunassm@❕.gq');
$this->validator->validateAttribute($model, 'field'); $this->validator->validateAttribute($model, 'field');
@@ -97,7 +117,8 @@ class EmailValidatorTest extends TestCase {
} }
public function testValidateAttributeUnique() { public function testValidateAttributeUnique() {
Mock::func(YiiEmailValidator::class, 'checkdnsrr')->times(3)->andReturnTrue(); Mock::func(YiiEmailValidator::class, 'checkdnsrr')->andReturn(true);
Mock::func(YiiEmailValidator::class, 'dns_get_record')->andReturn(['127.0.0.1']);
$this->tester->haveFixtures([ $this->tester->haveFixtures([
'accounts' => AccountFixture::class, 'accounts' => AccountFixture::class,

View File

@@ -6,6 +6,7 @@
"minimum-stability": "stable", "minimum-stability": "stable",
"require": { "require": {
"php": "^7.2", "php": "^7.2",
"ext-intl": "*",
"ext-json": "*", "ext-json": "*",
"ext-libxml": "*", "ext-libxml": "*",
"ext-mbstring": "*", "ext-mbstring": "*",
@@ -24,7 +25,7 @@
"ramsey/uuid": "^3.5", "ramsey/uuid": "^3.5",
"spomky-labs/otphp": "^9.0.2", "spomky-labs/otphp": "^9.0.2",
"webmozart/assert": "^1.2.0", "webmozart/assert": "^1.2.0",
"yiisoft/yii2": "2.0.15.1", "yiisoft/yii2": "~2.0.20",
"yiisoft/yii2-queue": "^2.2.0", "yiisoft/yii2-queue": "^2.2.0",
"yiisoft/yii2-redis": "~2.0.0", "yiisoft/yii2-redis": "~2.0.0",
"yiisoft/yii2-swiftmailer": "~2.1.0" "yiisoft/yii2-swiftmailer": "~2.1.0"

34
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "752322170e3433ba42cb90c1dd6122a2", "content-hash": "80ccf8b828493911307a9daa95021dfc",
"packages": [ "packages": [
{ {
"name": "bacon/bacon-qr-code", "name": "bacon/bacon-qr-code",
@@ -1988,24 +1988,24 @@
}, },
{ {
"name": "yiisoft/yii2", "name": "yiisoft/yii2",
"version": "2.0.15.1", "version": "2.0.20",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/yiisoft/yii2-framework.git", "url": "https://github.com/yiisoft/yii2-framework.git",
"reference": "ed3a9e1c4abe206e1c3ce48a6b3624119b79850d" "reference": "bd05e0e0ac353cb239997da78f459d0960a1fe9f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/ed3a9e1c4abe206e1c3ce48a6b3624119b79850d", "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/bd05e0e0ac353cb239997da78f459d0960a1fe9f",
"reference": "ed3a9e1c4abe206e1c3ce48a6b3624119b79850d", "reference": "bd05e0e0ac353cb239997da78f459d0960a1fe9f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"bower-asset/inputmask": "~3.2.2 | ~3.3.5", "bower-asset/inputmask": "~3.2.2 | ~3.3.5",
"bower-asset/jquery": "3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", "bower-asset/jquery": "3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable",
"bower-asset/punycode": "1.3.*", "bower-asset/punycode": "1.3.*",
"bower-asset/yii2-pjax": "~2.0.1", "bower-asset/yii2-pjax": "~2.0.1",
"cebe/markdown": "~1.0.0 | ~1.1.0", "cebe/markdown": "~1.0.0 | ~1.1.0 | ~1.2.0",
"ext-ctype": "*", "ext-ctype": "*",
"ext-mbstring": "*", "ext-mbstring": "*",
"ezyang/htmlpurifier": "~4.6", "ezyang/htmlpurifier": "~4.6",
@@ -2084,7 +2084,7 @@
"framework", "framework",
"yii2" "yii2"
], ],
"time": "2018-03-21T18:36:53+00:00" "time": "2019-06-04T19:10:59+00:00"
}, },
{ {
"name": "yiisoft/yii2-composer", "name": "yiisoft/yii2-composer",
@@ -2142,16 +2142,16 @@
}, },
{ {
"name": "yiisoft/yii2-queue", "name": "yiisoft/yii2-queue",
"version": "2.2.0", "version": "2.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/yiisoft/yii2-queue.git", "url": "https://github.com/yiisoft/yii2-queue.git",
"reference": "d365e6f3222a0fdb150b1ea9f17bda2a4ddac61d" "reference": "25c1142558768ec0e835171c972a4edc2fb59cf0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/d365e6f3222a0fdb150b1ea9f17bda2a4ddac61d", "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/25c1142558768ec0e835171c972a4edc2fb59cf0",
"reference": "d365e6f3222a0fdb150b1ea9f17bda2a4ddac61d", "reference": "25c1142558768ec0e835171c972a4edc2fb59cf0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2161,7 +2161,8 @@
}, },
"require-dev": { "require-dev": {
"aws/aws-sdk-php": ">=2.4", "aws/aws-sdk-php": ">=2.4",
"enqueue/amqp-lib": "^0.8", "enqueue/amqp-lib": "^0.8||^0.9.10",
"enqueue/stomp": "^0.8.39",
"jeremeamia/superclosure": "*", "jeremeamia/superclosure": "*",
"pda/pheanstalk": "v3.*", "pda/pheanstalk": "v3.*",
"php-amqplib/php-amqplib": "*", "php-amqplib/php-amqplib": "*",
@@ -2173,6 +2174,7 @@
"suggest": { "suggest": {
"aws/aws-sdk-php": "Need for aws SQS.", "aws/aws-sdk-php": "Need for aws SQS.",
"enqueue/amqp-lib": "Need for AMQP interop queue.", "enqueue/amqp-lib": "Need for AMQP interop queue.",
"enqueue/stomp": "Need for Stomp queue.",
"ext-gearman": "Need for Gearman queue.", "ext-gearman": "Need for Gearman queue.",
"ext-pcntl": "Need for process signals.", "ext-pcntl": "Need for process signals.",
"pda/pheanstalk": "Need for Beanstalk queue.", "pda/pheanstalk": "Need for Beanstalk queue.",
@@ -2196,7 +2198,8 @@
"yii\\queue\\gearman\\": "src/drivers/gearman", "yii\\queue\\gearman\\": "src/drivers/gearman",
"yii\\queue\\redis\\": "src/drivers/redis", "yii\\queue\\redis\\": "src/drivers/redis",
"yii\\queue\\sync\\": "src/drivers/sync", "yii\\queue\\sync\\": "src/drivers/sync",
"yii\\queue\\sqs\\": "src/drivers/sqs" "yii\\queue\\sqs\\": "src/drivers/sqs",
"yii\\queue\\stomp\\": "src/drivers/stomp"
} }
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
@@ -2222,7 +2225,7 @@
"sqs", "sqs",
"yii" "yii"
], ],
"time": "2019-03-19T22:36:41+00:00" "time": "2019-06-04T18:58:40+00:00"
}, },
{ {
"name": "yiisoft/yii2-redis", "name": "yiisoft/yii2-redis",
@@ -6146,6 +6149,7 @@
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": "^7.2", "php": "^7.2",
"ext-intl": "*",
"ext-json": "*", "ext-json": "*",
"ext-libxml": "*", "ext-libxml": "*",
"ext-mbstring": "*", "ext-mbstring": "*",