Remove default swiftmailer dependency (#448)

* replace swiftmailer references with generic interface references
* replace swiftmailer dependency with suggested symfonymailer (option to also use old swiftmailer)
* remove getSwiftMailer fro mtests
* adjuts config to skip yii2 coded swiftmailer
* dev and test only until php 7.4 (synphonymailer)
This commit is contained in:
Tõnis Ormisson
2022-08-11 09:13:10 +03:00
committed by GitHub
parent 78bfbd43b5
commit 8bef4d41cc
8 changed files with 32 additions and 26 deletions

View File

@ -11,7 +11,7 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
operating-system: ['ubuntu-latest'] operating-system: ['ubuntu-latest']
php-versions: ['8.1', '8.0','7.4','7.3', '7.2','7.1','7.0', '5.6'] php-versions: ['8.1', '8.0','7.4']
services: services:
mariadb: mariadb:

View File

@ -7,7 +7,6 @@ Yii 2 Usuario Extension
[![Latest Stable Version](https://poser.pugx.org/2amigos/yii2-usuario/version)](https://packagist.org/packages/2amigos/yii2-usuario) [![Latest Stable Version](https://poser.pugx.org/2amigos/yii2-usuario/version)](https://packagist.org/packages/2amigos/yii2-usuario)
[![Total Downloads](https://poser.pugx.org/2amigos/yii2-usuario/downloads)](https://packagist.org/packages/2amigos/yii2-usuario) [![Total Downloads](https://poser.pugx.org/2amigos/yii2-usuario/downloads)](https://packagist.org/packages/2amigos/yii2-usuario)
[![Build Status](https://github.com/2amigos/yii2-usuario/actions/workflows/php.yml/badge.svg)](https://github.com/2amigos/yii2-usuario/actions/) [![Build Status](https://github.com/2amigos/yii2-usuario/actions/workflows/php.yml/badge.svg)](https://github.com/2amigos/yii2-usuario/actions/)
[![Latest Unstable Version](https://poser.pugx.org/2amigos/yii2-usuario/v/unstable)](//packagist.org/packages/2amigos/yii2-usuario) [![Latest Unstable Version](https://poser.pugx.org/2amigos/yii2-usuario/v/unstable)](//packagist.org/packages/2amigos/yii2-usuario)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/2amigos/yii2-usuario/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/2amigos/yii2-usuario/?branch=master) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/2amigos/yii2-usuario/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/2amigos/yii2-usuario/?branch=master)

View File

@ -44,14 +44,17 @@
"2amigos/yii2-selectize-widget": "^1.1", "2amigos/yii2-selectize-widget": "^1.1",
"yiisoft/yii2-authclient": "^2.1", "yiisoft/yii2-authclient": "^2.1",
"yiisoft/yii2-httpclient": "^2.0", "yiisoft/yii2-httpclient": "^2.0",
"yiisoft/yii2-bootstrap": "^2.0", "yiisoft/yii2-bootstrap": "^2.0"
"yiisoft/yii2-swiftmailer": "^2.0"
}, },
"suggest": { "suggest": {
"yiisoft/yii2-symfonymailer": "A mailer driver is needed to send e-mails. Older versions use abandoned Swiftmailer which can be replaced with symfonymailer",
"2amigos/2fa-library": "Needed if you want to enable 2 Factor Authentication. Require version ^1.0", "2amigos/2fa-library": "Needed if you want to enable 2 Factor Authentication. Require version ^1.0",
"2amigos/qrcode-library": "Needed if you want to enable 2FA with QR Code generation. Require version ^1.1" "2amigos/qrcode-library": "Needed if you want to enable 2FA with QR Code generation. Require version ^1.1"
}, },
"require-dev": { "require-dev": {
"php": ">=7.4",
"yiisoft/yii2-symfonymailer": "~2.0.0",
"friendsofphp/php-cs-fixer": "^2.3", "friendsofphp/php-cs-fixer": "^2.3",
"squizlabs/php_codesniffer": "*", "squizlabs/php_codesniffer": "*",
"phpmd/phpmd": "@stable", "phpmd/phpmd": "@stable",

View File

@ -26,7 +26,11 @@ return [
], ],
'db' => require __DIR__ . '/db.php', 'db' => require __DIR__ . '/db.php',
'mailer' => [ 'mailer' => [
'useFileTransport' => true, 'messageClass' => \yii\symfonymailer\Message::class,
[
'class' => \yii\symfonymailer\Mailer::class,
],
'useFileTransport' => false
], ],
'urlManager' => [ 'urlManager' => [
'showScriptName' => true, 'showScriptName' => true,

View File

@ -97,12 +97,12 @@ class GdprCest
$I->amOnRoute('/user/registration/register'); $I->amOnRoute('/user/registration/register');
$this->register($I, 'tester@example.com', 'tester', 'tester'); $this->register($I, 'tester@example.com', 'tester', 'tester');
$I->see('Your account has been created and a message with further instructions has been sent to your email'); $I->see('Your account has been created and a message with further instructions has been sent to your email');
$user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']); $user = $I->grabRecord(User::class, ['email' => 'tester@example.com']);
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRMATION]); $token = $I->grabRecord(Token::class, ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRMATION]);
/** @var yii\swiftmailer\Message $message */ /** @var \yii\mail\MessageInterface $message */
$message = $I->grabLastSentEmail(); $message = $I->grabLastSentEmail();
$I->assertArrayHasKey($user->email, $message->getTo()); $I->assertArrayHasKey($user->email, $message->getTo());
$I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString()))); $I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->toString())));
$I->assertFalse($user->isConfirmed); $I->assertFalse($user->isConfirmed);
} }
@ -118,12 +118,12 @@ class GdprCest
$I->amOnRoute('/user/registration/register'); $I->amOnRoute('/user/registration/register');
$this->register($I, 'tester@example.com', 'tester'); $this->register($I, 'tester@example.com', 'tester');
$I->see('Your account has been created'); $I->see('Your account has been created');
$user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']); $user = $I->grabRecord(User::class, ['email' => 'tester@example.com']);
$I->assertEquals('tester', $user->username); $I->assertEquals('tester', $user->username);
/** @var yii\swiftmailer\Message $message */ /** @var \yii\mail\MessageInterface $message */
$message = $I->grabLastSentEmail(); $message = $I->grabLastSentEmail();
$I->assertArrayHasKey($user->email, $message->getTo()); $I->assertArrayHasKey($user->email, $message->getTo());
$I->assertStringContainsString('We have generated a password for you', utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString()))); $I->assertStringContainsString('We have generated a password for you', utf8_encode(quoted_printable_decode($message->toString())));
} }

View File

@ -36,14 +36,14 @@ $I->fillField('#recoveryform-email', $user->email);
$I->click('Continue'); $I->click('Continue');
$I->see('An email with instructions to create a new password has been sent to ' . $user->email); $I->see('An email with instructions to create a new password has been sent to ' . $user->email);
$user = $I->grabRecord(User::className(), ['email' => $user->email]); $user = $I->grabRecord(User::class, ['email' => $user->email]);
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_RECOVERY]); $token = $I->grabRecord(Token::class, ['user_id' => $user->id, 'type' => Token::TYPE_RECOVERY]);
/** @var yii\swiftmailer\Message $message */ /** @var \yii\mail\MessageInterface $message */
$message = $I->grabLastSentEmail(); $message = $I->grabLastSentEmail();
$I->assertArrayHasKey($user->email, $message->getTo()); $I->assertArrayHasKey($user->email, $message->getTo());
$I->assertStringContainsString( $I->assertStringContainsString(
Html::encode($token->getUrl()), Html::encode($token->getUrl()),
utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString())) utf8_encode(quoted_printable_decode($message->toString()))
); );
$I->amGoingTo('reset password with invalid token'); $I->amGoingTo('reset password with invalid token');

View File

@ -68,12 +68,12 @@ class RegistrationCest
$I->amOnRoute('/user/registration/register'); $I->amOnRoute('/user/registration/register');
$this->register($I, 'tester@example.com', 'tester', 'tester'); $this->register($I, 'tester@example.com', 'tester', 'tester');
$I->see('Your account has been created and a message with further instructions has been sent to your email'); $I->see('Your account has been created and a message with further instructions has been sent to your email');
$user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']); $user = $I->grabRecord(User::class, ['email' => 'tester@example.com']);
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRMATION]); $token = $I->grabRecord(Token::class, ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRMATION]);
/** @var yii\swiftmailer\Message $message */ /** @var \yii\mail\MessageInterface $message */
$message = $I->grabLastSentEmail(); $message = $I->grabLastSentEmail();
$I->assertArrayHasKey($user->email, $message->getTo()); $I->assertArrayHasKey($user->email, $message->getTo());
$I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString()))); $I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->toString())));
$I->assertFalse($user->isConfirmed); $I->assertFalse($user->isConfirmed);
} }
@ -91,10 +91,10 @@ class RegistrationCest
$I->see('Your account has been created'); $I->see('Your account has been created');
$user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']); $user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']);
$I->assertEquals('tester', $user->username); $I->assertEquals('tester', $user->username);
/** @var yii\swiftmailer\Message $message */ /** @var \yii\mail\MessageInterface $message */
$message = $I->grabLastSentEmail(); $message = $I->grabLastSentEmail();
$I->assertArrayHasKey($user->email, $message->getTo()); $I->assertArrayHasKey($user->email, $message->getTo());
$I->assertStringContainsString('We have generated a password for you', utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString()))); $I->assertStringContainsString('We have generated a password for you', utf8_encode(quoted_printable_decode($message->toString())));
} }
protected function register(FunctionalTester $I, $email, $username = null, $password = null) { protected function register(FunctionalTester $I, $email, $username = null, $password = null) {

View File

@ -34,12 +34,12 @@ $I->click('Save');
$I->seeRecord(User::className(), ['email' => $user->email, 'unconfirmed_email' => 'new_user@example.com']); $I->seeRecord(User::className(), ['email' => $user->email, 'unconfirmed_email' => 'new_user@example.com']);
$I->see('A confirmation message has been sent to your new email address'); $I->see('A confirmation message has been sent to your new email address');
$user = $I->grabRecord(User::className(), ['id' => $user->id]); $user = $I->grabRecord(User::class, ['id' => $user->id]);
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRM_NEW_EMAIL]); $token = $I->grabRecord(Token::class, ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRM_NEW_EMAIL]);
/** @var yii\swiftmailer\Message $message */ /** @var \yii\mail\MessageInterface $message */
$message = $I->grabLastSentEmail(); $message = $I->grabLastSentEmail();
$I->assertArrayHasKey($user->unconfirmed_email, $message->getTo()); $I->assertArrayHasKey($user->unconfirmed_email, $message->getTo());
$I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString()))); $I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->toString())));
Yii::$app->user->logout(); Yii::$app->user->logout();
$I->amGoingTo('log in using new email address before clicking the confirmation link'); $I->amGoingTo('log in using new email address before clicking the confirmation link');