use hipstercreative\user\tests\_pages\LoginPage; use yii\helpers\Html; use yii\helpers\Url; use hipstercreative\user\models\User; $I = new TestGuy($scenario); $I->wantTo('ensure that password recovery works'); $page = RecoveryPage::openBy($I); $I->amGoingTo('try to request recovery token for unconfirmed account'); $user = $I->getFixture('user')->getModel('unconfirmed'); $page->recover($user->email); $I->see('You need to confirm your email address'); $I->amGoingTo('try to request recovery token'); $user = $I->getFixture('user')->getModel('user'); $page->recover($user->email); $I->see('You have been sent an email with instructions on how to reset your password.'); $user = $I->grabRecord(User::className(), ['email' => $user->email]); $I->seeInEmail(Html::encode($user->getRecoveryUrl())); $I->seeInEmailRecipients($user->email); $I->amGoingTo('reset password with invalid token'); $user = $I->getFixture('user')->getModel('user_with_expired_recovery_token'); $I->amOnPage(Url::toRoute(['/user/recovery/reset', 'id' => $user->id, 'token' => $user->recovery_token])); $I->see('Recovery token is invalid'); $I->amGoingTo('reset password'); $user = $I->getFixture('user')->getModel('user_with_recovery_token'); $I->amOnPage(Url::toRoute(['/user/recovery/reset', 'id' => $user->id, 'token' => $user->recovery_token])); $I->fillField('#recovery-form-password', 'newpass'); $I->click('Finish'); $I->see('Password recovery finished'); $page = LoginPage::openBy($I); $page->login($user->email, 'qwerty'); $I->see('Invalid login or password');
<?php use hipstercreative\user\tests\_pages\ResendPage; use hipstercreative\user\models\User; $I = new TestGuy($scenario); $I->wantTo('ensure that resending of confirmation tokens works'); $page = ResendPage::openBy($I); $I->amGoingTo('try to resend token to non-existent user'); $page->resend('*****@*****.**'); $I->see('Email is invalid'); $I->amGoingTo('try to resend token to already confirmed user'); $user = $I->getFixture('user')->getModel('user'); $page->resend($user->email); $I->see('This account has already been confirmed'); $I->amGoingTo('try to resend token to unconfirmed user'); $user = $I->getFixture('user')->getModel('unconfirmed'); $I->seeRecord(User::className(), ['confirmation_token' => $user->confirmation_token]); $page->resend($user->email); $I->see('Awesome, almost there! We need to confirm your email address'); $I->dontSeeRecord(User::className(), ['confirmation_token' => $user->confirmation_token]);
<?php use yii\helpers\Url; use hipstercreative\user\models\User; $I = new TestGuy($scenario); $I->wantTo('ensure that confirmation works'); $I->amGoingTo('check that error is showed when token expired'); $user = $I->getFixture('user')->getModel('unconfirmed_with_expired_token'); $I->amOnPage(Url::toRoute(['/user/registration/confirm', 'id' => $user->id, 'token' => $user->confirmation_token])); $I->see('Confirmation token is invalid'); $I->amGoingTo('check that user get confirmed'); $user = $I->getFixture('user')->getModel('unconfirmed'); $I->amOnPage(Url::toRoute(['/user/registration/confirm', 'id' => $user->id, 'token' => $user->confirmation_token])); $I->see('Your account has been confirmed'); $I->seeRecord(User::className(), ['id' => $user->id, 'confirmation_token' => null, 'confirmation_sent_at' => null]);
use hipstercreative\user\tests\_pages\LoginPage; use hipstercreative\user\models\User; use yii\helpers\Html; $I = new TestGuy($scenario); $I->wantTo('ensure that email settings works'); $loginPage = LoginPage::openBy($I); $user = $I->getFixture('user')->getModel('user'); $loginPage->login($user->email, 'qwerty'); $I->amGoingTo('update email'); $page = EmailSettingsPage::openBy($I); $page->updateEmail('wrong', '*****@*****.**'); $I->see('Current password is not valid'); $page->updateEmail('qwerty', '*****@*****.**'); $I->see('Before your email will be changed we need you to confirm your new email address'); $I->seeRecord(User::className(), ['id' => $user->id, 'email' => '*****@*****.**', 'unconfirmed_email' => '*****@*****.**']); $user = $I->grabRecord(User::className(), ['id' => $user->id]); $I->seeInEmail(Html::encode($user->getConfirmationUrl())); $I->seeInEmailRecipients($user->unconfirmed_email); Yii::$app->getUser()->logout(); $I->amGoingTo('login with new email'); $loginPage = LoginPage::openBy($I); $loginPage->login('*****@*****.**', 'qwerty'); $I->see('Invalid login or password'); $user->confirm(false); $loginPage = LoginPage::openBy($I); $loginPage->login('*****@*****.**', 'qwerty'); $I->see('Invalid login or password'); $loginPage->login('*****@*****.**', 'qwerty'); $I->see('Logout'); $I->seeRecord(User::className(), ['id' => 1, 'email' => '*****@*****.**', 'unconfirmed_email' => null]);
<?php use hipstercreative\user\tests\_pages\RegisterPage; use yii\helpers\Html; use hipstercreative\user\models\User; $I = new TestGuy($scenario); $I->wantTo('ensure that registration works'); $page = RegisterPage::openBy($I); $I->amGoingTo('try to register with empty credentials'); $page->register('', '', ''); $I->see('Username cannot be blank'); $I->see('Email cannot be blank'); $I->see('Password cannot be blank'); $I->amGoingTo('try to register with already used email and username'); $page->register('user', '*****@*****.**', 'qwerty'); $I->see(Html::encode('Username "user" has already been taken')); $I->see(Html::encode('Email "*****@*****.**" has already been taken')); $I->amGoingTo('try to register with enabled confirmation'); $page->register('tester', '*****@*****.**', 'tester'); $I->see('Awesome, almost there! We need to confirm your email address'); $user = $I->grabRecord(User::className(), ['email' => '*****@*****.**']); $I->seeInEmail(Html::encode($user->getConfirmationUrl()));