From 4588d77129ddd9ac2ec0c87317edf08ebe8e64e0 Mon Sep 17 00:00:00 2001 From: Antonio Ramirez Date: Sun, 11 Dec 2016 13:33:40 +0100 Subject: [PATCH] fix test configuration --- lib/User/Bootstrap.php | 147 +++++++++--------- lib/User/Controller/AdminController.php | 2 +- lib/User/Controller/ProfileController.php | 2 +- lib/User/Controller/RecoveryController.php | 8 +- .../Controller/RegistrationController.php | 6 +- lib/User/Controller/SecurityController.php | 2 +- lib/User/Controller/SettingsController.php | 2 +- lib/User/Form/RegistrationForm.php | 2 +- lib/User/Model/Profile.php | 2 +- lib/User/Model/SocialNetworkAccount.php | 2 +- lib/User/Model/Token.php | 2 +- lib/User/Model/User.php | 2 +- lib/User/Module.php | 6 + .../Service/AccountConfirmationService.php | 6 +- .../resources/views/admin/_assignments.php | 4 +- lib/User/resources/views/shared/_alert.php | 11 +- lib/User/resources/views/shared/message.php | 2 +- tests/_app/assets/.gitignore | 2 + tests/_app/config/test.php | 3 + tests/_fixtures/data/user.php | 76 ++++----- 20 files changed, 152 insertions(+), 137 deletions(-) create mode 100644 tests/_app/assets/.gitignore diff --git a/lib/User/Bootstrap.php b/lib/User/Bootstrap.php index 64203de..9dbcadd 100644 --- a/lib/User/Bootstrap.php +++ b/lib/User/Bootstrap.php @@ -3,6 +3,7 @@ namespace Da\User; use Da\User\Helper\ClassMapHelper; +use Da\User\Model\User; use Da\User\Validator\TimeZoneValidator; use Yii; use yii\authclient\Collection; @@ -23,7 +24,7 @@ class Bootstrap implements BootstrapInterface if ($app->hasModule('user') && $app->getModule('user') instanceof Module) { $map = $this->buildClassMap($app->getModule('user')->classMap); - $this->initContainer($map); + $this->initContainer($app,$map); $this->initTranslations($app); $this->initMailServiceConfiguration($app, $app->getModule('user')); @@ -41,88 +42,93 @@ class Bootstrap implements BootstrapInterface /** * Initialize container with module classes * + * @param \yii\base\Application $app * @param array $map the previously built class map list */ - protected function initContainer($map) + protected function initContainer($app, $map) { $di = Yii::$container; -try{ + try { - // events - $di->set(Event\FormEvent::class); - $di->set(Event\ProfileEvent::class); - $di->set(Event\ResetPasswordEvent::class); - $di->set(Event\SocialNetworkAuthEvent::class); - $di->set(Event\SocialNetworkConnectEvent::class); - $di->set(Event\UserEvent::class); + // events + $di->set(Event\FormEvent::class); + $di->set(Event\ProfileEvent::class); + $di->set(Event\ResetPasswordEvent::class); + $di->set(Event\SocialNetworkAuthEvent::class); + $di->set(Event\SocialNetworkConnectEvent::class); + $di->set(Event\UserEvent::class); - // forms - $di->set(Form\LoginForm::class); - $di->set(Form\RecoveryForm::class); - $di->set(Form\RegistrationForm::class); - $di->set(Form\ResendForm::class); - $di->set(Form\SettingsForm::class); + // forms + $di->set(Form\LoginForm::class); + $di->set(Form\RecoveryForm::class); + $di->set(Form\RegistrationForm::class); + $di->set(Form\ResendForm::class); + $di->set(Form\SettingsForm::class); - // helpers - $di->set(Helper\AuthHelper::class); - $di->set(Helper\GravatarHelper::class); - $di->set(Helper\SecurityHelper::class); + // helpers + $di->set(Helper\AuthHelper::class); + $di->set(Helper\GravatarHelper::class); + $di->set(Helper\SecurityHelper::class); - // services - $di->set(Service\AccountConfirmationService::class); - $di->set(Service\EmailChangeService::class); - $di->set(Service\PasswordRecoveryService::class); - $di->set(Service\ResendConfirmationService::class); - $di->set(Service\ResetPasswordService::class); - $di->set(Service\SocialNetworkAccountConnectService::class); - $di->set(Service\SocialNetworkAuthenticateService::class); - $di->set(Service\UserBlockService::class); - $di->set(Service\UserCreateService::class); - $di->set(Service\UserRegisterService::class); - $di->set(Service\UserConfirmationService::class); + // services + $di->set(Service\AccountConfirmationService::class); + $di->set(Service\EmailChangeService::class); + $di->set(Service\PasswordRecoveryService::class); + $di->set(Service\ResendConfirmationService::class); + $di->set(Service\ResetPasswordService::class); + $di->set(Service\SocialNetworkAccountConnectService::class); + $di->set(Service\SocialNetworkAuthenticateService::class); + $di->set(Service\UserBlockService::class); + $di->set(Service\UserCreateService::class); + $di->set(Service\UserRegisterService::class); + $di->set(Service\UserConfirmationService::class); - // email change strategy - $di->set(Strategy\DefaultEmailChangeStrategy::class); - $di->set(Strategy\InsecureEmailChangeStrategy::class); - $di->set(Strategy\SecureEmailChangeStrategy::class); + // email change strategy + $di->set(Strategy\DefaultEmailChangeStrategy::class); + $di->set(Strategy\InsecureEmailChangeStrategy::class); + $di->set(Strategy\SecureEmailChangeStrategy::class); - // validators - $di->set(Validator\AjaxRequestModelValidator::class); - $di->set(TimeZoneValidator::class); + // validators + $di->set(Validator\AjaxRequestModelValidator::class); + $di->set(TimeZoneValidator::class); - // class map models + query classes - $modelClassMap = []; - foreach ($map as $class => $definition) { - $di->set($class, $definition); - $model = is_array($definition) ? $definition['class'] : $definition; - $name = (substr($class, strrpos($class, '\\') + 1)); - $modelClassMap[$class] = $model; - if(in_array($name, ['User', 'Profile', 'Token', 'SocialNetworkAccount'])) { - $di->set("Da\\User\\Query\\{$name}Query", function() use ($model) { - return $model::find(); - }); + // class map models + query classes + $modelClassMap = []; + foreach ($map as $class => $definition) { + $di->set($class, $definition); + $model = is_array($definition) ? $definition['class'] : $definition; + $name = (substr($class, strrpos($class, '\\') + 1)); + $modelClassMap[$class] = $model; + if (in_array($name, ['User', 'Profile', 'Token', 'SocialNetworkAccount'])) { + $di->set( + "Da\\User\\Query\\{$name}Query", + function () use ($model) { + return $model::find(); + } + ); + } } - } - $di->setSingleton(ClassMapHelper::class, ClassMapHelper::class, [$modelClassMap]); + $di->setSingleton(ClassMapHelper::class, ClassMapHelper::class, [$modelClassMap]); - // search class - $di->set(Search\UserSearch::class, [$di->get(Query\UserQuery::class)]); + // search class + $di->set(Search\UserSearch::class, [$di->get(Query\UserQuery::class)]); - if (php_sapi_name() !== 'cli') { - // override Yii - $di->set( - 'yii\web\User', - [ - 'enableAutoLogin' => true, - 'loginUrl' => ['/user/auth/login'], - 'identityClass' => $di->get(ClassMapHelper::class)->get('User') - ] - ); + if ($app instanceof WebApplication) { + + // override Yii + $di->set( + 'yii\web\User', + [ + 'enableAutoLogin' => true, + 'loginUrl' => ['/user/auth/login'], + 'identityClass' => $di->get(ClassMapHelper::class)->get(User::class) + ] + ); + } + } catch (Exception $e) { + die($e); } -}catch(Exception $e) { - die($e); -} } /** @@ -213,6 +219,7 @@ try{ protected function initControllerNamespace(WebApplication $app) { $app->getModule('user')->controllerNamespace = 'Da\User\Controller'; + $app->getModule('user')->setViewPath('@Da/User/resources/views'); } /** @@ -229,7 +236,7 @@ try{ $defaults = [ // --- models 'User' => 'Da\User\Model\User', - 'Account' => 'Da\User\Model\Account', + 'SocialNetworkAccount' => 'Da\User\Model\SocialNetworkAccount', 'Profile' => 'Da\User\Model\Profile', 'Token' => 'Da\User\Model\Token', // --- search @@ -245,7 +252,7 @@ try{ $routes = [ 'Da\User\Model' => [ 'User', - 'Account', + 'SocialNetworkAccount', 'Profile', 'Token' ], @@ -286,7 +293,7 @@ try{ return $route; } } - throw new Exception('Unknown configuration class name'); + throw new Exception("Unknown configuration class name '{$name}'"); } } diff --git a/lib/User/Controller/AdminController.php b/lib/User/Controller/AdminController.php index 3f50115..0f4cedc 100644 --- a/lib/User/Controller/AdminController.php +++ b/lib/User/Controller/AdminController.php @@ -39,7 +39,7 @@ class AdminController extends Controller * @param UserQuery $userQuery * @param array $config */ - public function __construct($id, Module $module, UserQuery $userQuery, array $config) + public function __construct($id, Module $module, UserQuery $userQuery, array $config = []) { $this->userQuery = $userQuery; parent::__construct($id, $module, $config); diff --git a/lib/User/Controller/ProfileController.php b/lib/User/Controller/ProfileController.php index 7b972f8..ddcf0bf 100644 --- a/lib/User/Controller/ProfileController.php +++ b/lib/User/Controller/ProfileController.php @@ -20,7 +20,7 @@ class ProfileController extends Controller * @param ProfileQuery $profileQuery * @param array $config */ - public function __construct($id, Module $module, ProfileQuery $profileQuery, array $config) + public function __construct($id, Module $module, ProfileQuery $profileQuery, array $config = []) { $this->profileQuery = $profileQuery; parent::__construct($id, $module, $config); diff --git a/lib/User/Controller/RecoveryController.php b/lib/User/Controller/RecoveryController.php index d7436b4..1fa3e38 100644 --- a/lib/User/Controller/RecoveryController.php +++ b/lib/User/Controller/RecoveryController.php @@ -34,7 +34,7 @@ class RecoveryController extends Controller * @param TokenQuery $tokenQuery * @param array $config */ - public function __construct($id, Module $module, UserQuery $userQuery, TokenQuery $tokenQuery, array $config) + public function __construct($id, Module $module, UserQuery $userQuery, TokenQuery $tokenQuery, array $config = []) { $this->userQuery = $userQuery; $this->tokenQuery = $tokenQuery; @@ -90,7 +90,7 @@ class RecoveryController extends Controller $this->trigger(FormEvent::EVENT_AFTER_REQUEST, $event); return $this->render( - '/user/shared/message', + '/shared/message', [ 'title' => Yii::t('user', 'Recovery message sent'), 'module' => $this->module, @@ -130,7 +130,7 @@ class RecoveryController extends Controller ); return $this->render( - '/user/shared/message', + '/shared/message', [ 'title' => Yii::t('user', 'Invalid or expired link'), 'module' => $this->module, @@ -149,7 +149,7 @@ class RecoveryController extends Controller $this->trigger(ResetPasswordEvent::EVENT_AFTER_RESET, $event); return $this->render( - '/user/shared/message', + '/shared/message', [ 'title' => Yii::t('user', 'Password has been changed'), 'module' => $this->module, diff --git a/lib/User/Controller/RegistrationController.php b/lib/User/Controller/RegistrationController.php index f84b702..412020c 100644 --- a/lib/User/Controller/RegistrationController.php +++ b/lib/User/Controller/RegistrationController.php @@ -47,7 +47,7 @@ class RegistrationController extends Controller Module $module, UserQuery $userQuery, SocialNetworkAccountQuery $socialNetworkAccountQuery, - array $config + array $config = [] ) { $this->userQuery = $userQuery; @@ -106,7 +106,7 @@ class RegistrationController extends Controller 'Your account has been created and a message with further instructions has been sent to your email' ) ); - return $this->render('/user/shared/message', [ + return $this->render('/shared/message', [ 'title' => Yii::t('user', 'Your account has been created') ]); } @@ -186,7 +186,7 @@ class RegistrationController extends Controller } return $this->render( - '/user/shared/message', + '/shared/message', [ 'title' => Yii::t('user', 'Account confirmation'), 'module' => $this->module, diff --git a/lib/User/Controller/SecurityController.php b/lib/User/Controller/SecurityController.php index 589d4c5..e4b0678 100644 --- a/lib/User/Controller/SecurityController.php +++ b/lib/User/Controller/SecurityController.php @@ -36,7 +36,7 @@ class SecurityController extends Controller $id, Module $module, SocialNetworkAccountQuery $socialNetworkAccountQuery, - array $config + array $config = [] ) { $this->socialNetworkAccountQuery = $socialNetworkAccountQuery; parent::__construct($id, $module, $config); diff --git a/lib/User/Controller/SettingsController.php b/lib/User/Controller/SettingsController.php index 2eaba88..61b57b7 100644 --- a/lib/User/Controller/SettingsController.php +++ b/lib/User/Controller/SettingsController.php @@ -54,7 +54,7 @@ class SettingsController extends Controller ProfileQuery $profileQuery, UserQuery $userQuery, SocialNetworkAccountQuery $socialNetworkAccountQuery, - array $config + array $config = [] ) { $this->profileQuery = $profileQuery; $this->userQuery = $userQuery; diff --git a/lib/User/Form/RegistrationForm.php b/lib/User/Form/RegistrationForm.php index 08c4428..331a6e1 100644 --- a/lib/User/Form/RegistrationForm.php +++ b/lib/User/Form/RegistrationForm.php @@ -33,7 +33,7 @@ class RegistrationForm extends Model public function rules() { /** @var User $user */ - $user = $this->getClassMap()->get('User'); + $user = $this->getClassMap()->get(User::class); return [ // username rules diff --git a/lib/User/Model/Profile.php b/lib/User/Model/Profile.php index 2509b50..43c6202 100644 --- a/lib/User/Model/Profile.php +++ b/lib/User/Model/Profile.php @@ -138,7 +138,7 @@ class Profile extends ActiveRecord */ public function getUser() { - return $this->hasOne($this->getClassMap()->get('User'), ['id' => 'user_id']); + return $this->hasOne($this->getClassMap()->get(User::class), ['id' => 'user_id']); } /** diff --git a/lib/User/Model/SocialNetworkAccount.php b/lib/User/Model/SocialNetworkAccount.php index 5738956..37efba1 100644 --- a/lib/User/Model/SocialNetworkAccount.php +++ b/lib/User/Model/SocialNetworkAccount.php @@ -96,7 +96,7 @@ class SocialNetworkAccount extends ActiveRecord */ public function getUser() { - return $this->hasOne($this->getClassMap()->get('User'), ['id' => 'user_id']); + return $this->hasOne($this->getClassMap()->get(User::class), ['id' => 'user_id']); } /** diff --git a/lib/User/Model/Token.php b/lib/User/Model/Token.php index 99d9fbe..feec772 100644 --- a/lib/User/Model/Token.php +++ b/lib/User/Model/Token.php @@ -74,7 +74,7 @@ class Token extends ActiveRecord */ public function getUser() { - return $this->hasOne($this->getClassMap()->get('User'), ['id' => 'user_id']); + return $this->hasOne($this->getClassMap()->get(User::class), ['id' => 'user_id']); } /** diff --git a/lib/User/Model/User.php b/lib/User/Model/User.php index 5253f01..0210aae 100644 --- a/lib/User/Model/User.php +++ b/lib/User/Model/User.php @@ -238,7 +238,7 @@ class User extends ActiveRecord implements IdentityInterface */ public function getProfile() { - return $this->hasOne($this->getClassMap()->get('Profile'), ['user_id' => 'id']); + return $this->hasOne($this->getClassMap()->get(Profile::class), ['user_id' => 'id']); } /** diff --git a/lib/User/Module.php b/lib/User/Module.php index da417b1..f9415f3 100644 --- a/lib/User/Module.php +++ b/lib/User/Module.php @@ -14,6 +14,10 @@ class Module extends \yii\base\Module * @var bool whether to force email confirmation to. */ public $enableEmailConfirmation = true; + /** + * @var bool whether to display flash messages or not + */ + public $enableFlashMessages = true; /** * @var bool whether to generate passwords automatically and remove the password field from the registration form. */ @@ -88,4 +92,6 @@ class Module extends \yii\base\Module 'recover//' => 'recovery/reset', 'settings/' => 'settings/' ]; + + public $viewPath = '@Da/User/resources/views'; } diff --git a/lib/User/Service/AccountConfirmationService.php b/lib/User/Service/AccountConfirmationService.php index f05338e..9491675 100644 --- a/lib/User/Service/AccountConfirmationService.php +++ b/lib/User/Service/AccountConfirmationService.php @@ -18,13 +18,13 @@ class AccountConfirmationService implements ServiceInterface public function __construct( $code, User $model, - TokenQuery $tokenQuery, - UserConfirmationService $userConfirmationService + UserConfirmationService $userConfirmationService, + TokenQuery $tokenQuery ) { $this->code = $code; $this->model = $model; - $this->tokenQuery = $tokenQuery; $this->userConfirmationService = $userConfirmationService; + $this->tokenQuery = $tokenQuery; } public function run() diff --git a/lib/User/resources/views/admin/_assignments.php b/lib/User/resources/views/admin/_assignments.php index c0c0d9f..1c09fda 100644 --- a/lib/User/resources/views/admin/_assignments.php +++ b/lib/User/resources/views/admin/_assignments.php @@ -1,6 +1,6 @@ - $user->id]) ?> + $user->id]) ?> endContent() ?> diff --git a/lib/User/resources/views/shared/_alert.php b/lib/User/resources/views/shared/_alert.php index e31ca24..82c0fe2 100644 --- a/lib/User/resources/views/shared/_alert.php +++ b/lib/User/resources/views/shared/_alert.php @@ -1,18 +1,9 @@ - * - * For the full copyright and license information, please view the LICENSE.md - * file that was distributed with this source code. - */ - use yii\bootstrap\Alert; /** - * @var dektrium\user\Module $module + * @var \Da\User\Module $module */ ?> diff --git a/lib/User/resources/views/shared/message.php b/lib/User/resources/views/shared/message.php index 6162e7b..4a36bfd 100644 --- a/lib/User/resources/views/shared/message.php +++ b/lib/User/resources/views/shared/message.php @@ -10,6 +10,6 @@ $this->title = $title; ?> -render('/_alert', [ +render('_alert', [ 'module' => $module, ]); diff --git a/tests/_app/assets/.gitignore b/tests/_app/assets/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/tests/_app/assets/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/tests/_app/config/test.php b/tests/_app/config/test.php index 871f3dc..30b589a 100644 --- a/tests/_app/config/test.php +++ b/tests/_app/config/test.php @@ -18,6 +18,9 @@ return [ ], ], 'components' => [ + 'assetManager' => [ + 'basePath' => __DIR__ . '/../assets' + ], 'db' => require __DIR__ . '/db.php', 'mailer' => [ 'useFileTransport' => true, diff --git a/tests/_fixtures/data/user.php b/tests/_fixtures/data/user.php index 6c9e98d..9d2ebf3 100644 --- a/tests/_fixtures/data/user.php +++ b/tests/_fixtures/data/user.php @@ -4,56 +4,62 @@ $time = time(); return [ 'user' => [ - 'username' => 'user', - 'email' => 'user@example.com', + 'id' => 1, + 'username' => 'user', + 'email' => 'user@example.com', 'password_hash' => '$2y$13$qY.ImaYBppt66qez6B31QO92jc5DYVRzo5NxM1ivItkW74WsSG6Ui', - 'auth_key' => '39HU0m5lpjWtqstFVGFjj6lFb7UZDeRq', - 'created_at' => $time, - 'updated_at' => $time, - 'confirmed_at' => $time, + 'auth_key' => '39HU0m5lpjWtqstFVGFjj6lFb7UZDeRq', + 'created_at' => $time, + 'updated_at' => $time, + 'confirmed_at' => $time, ], 'unconfirmed' => [ - 'username' => 'joe', - 'email' => 'joe@example.com', + 'id' => 2, + 'username' => 'joe', + 'email' => 'joe@example.com', 'password_hash' => '$2y$13$CIH1LSMPzU9xDCywt3QO8uovAu2axp8hwuXVa72oI.1G/USsGyMBS', - 'auth_key' => 'mhh1A6KfqQLmHP-MiWN0WB0M90Q2u5OE', - 'created_at' => $time, - 'updated_at' => $time, + 'auth_key' => 'mhh1A6KfqQLmHP-MiWN0WB0M90Q2u5OE', + 'created_at' => $time, + 'updated_at' => $time, ], 'unconfirmed_with_expired_token' => [ - 'username' => 'john', - 'email' => 'john@example.com', + 'id' => 3, + 'username' => 'john', + 'email' => 'john@example.com', 'password_hash' => '$2y$13$qY.ImaYBppt66qez6B31QO92jc5DYVRzo5NxM1ivItkW74WsSG6Ui', - 'auth_key' => 'h6OS9csJbZEOW59ZILmJxU6bCiqVno9A', - 'created_at' => $time - 86401, - 'updated_at' => $time - 86401, + 'auth_key' => 'h6OS9csJbZEOW59ZILmJxU6bCiqVno9A', + 'created_at' => $time - 86401, + 'updated_at' => $time - 86401, ], 'blocked' => [ - 'username' => 'steven', - 'email' => 'steven@example.com', + 'id' => 4, + 'username' => 'steven', + 'email' => 'steven@example.com', 'password_hash' => '$2y$13$qY.ImaYBppt66qez6B31QO92jc5DYVRzo5NxM1ivItkW74WsSG6Ui', - 'auth_key' => 'TnXTrtLdj-YJBlG2A6jFHJreKgbsLYCa', - 'created_at' => $time, - 'updated_at' => $time, - 'blocked_at' => $time, - 'confirmed_at' => $time, + 'auth_key' => 'TnXTrtLdj-YJBlG2A6jFHJreKgbsLYCa', + 'created_at' => $time, + 'updated_at' => $time, + 'blocked_at' => $time, + 'confirmed_at' => $time, ], 'user_with_expired_recovery_token' => [ - 'username' => 'andrew', - 'email' => 'andrew@example.com', + 'id' => 5, + 'username' => 'andrew', + 'email' => 'andrew@example.com', 'password_hash' => '$2y$13$qY.ImaYBppt66qez6B31QO92jc5DYVRzo5NxM1ivItkW74WsSG6Ui', - 'auth_key' => 'qxYa315rqRgCOjYGk82GFHMEAV3T82AX', - 'created_at' => $time - 21601, - 'updated_at' => $time - 21601, - 'confirmed_at' => $time - 21601, + 'auth_key' => 'qxYa315rqRgCOjYGk82GFHMEAV3T82AX', + 'created_at' => $time - 21601, + 'updated_at' => $time - 21601, + 'confirmed_at' => $time - 21601, ], 'user_with_recovery_token' => [ - 'username' => 'alex', - 'email' => 'alex@example.com', + 'id' => 6, + 'username' => 'alex', + 'email' => 'alex@example.com', 'password_hash' => '$2y$13$qY.ImaYBppt66qez6B31QO92jc5DYVRzo5NxM1ivItkW74WsSG6Ui', - 'auth_key' => 'zQh1A65We0AmHPOMiWN0WB0M90Q24ziU', - 'created_at' => $time, - 'updated_at' => $time, - 'confirmed_at' => $time, + 'auth_key' => 'zQh1A65We0AmHPOMiWN0WB0M90Q24ziU', + 'created_at' => $time, + 'updated_at' => $time, + 'confirmed_at' => $time, ], ];