X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/2af0021c2bda81d72bff13d4516b0de6d75a6c11..ac80723058ab4c86e6bf024e0c75b60ab6c59624:/tests/Auth/AuthTest.php diff --git a/tests/Auth/AuthTest.php b/tests/Auth/AuthTest.php index 99885d552..0d2e4ac17 100644 --- a/tests/Auth/AuthTest.php +++ b/tests/Auth/AuthTest.php @@ -1,6 +1,7 @@ setSettings(['registration-enabled' => 'true', 'registration-confirmation' => 'true']); $user = factory(\BookStack\User::class)->make(); - // Mock Mailer to ensure mail is being sent - $mockMailer = Mockery::mock('Illuminate\Contracts\Mail\Mailer'); - $mockMailer->shouldReceive('send')->with('emails/email-confirmation', Mockery::type('array'), Mockery::type('callable'))->twice(); - $this->app->instance('mailer', $mockMailer); - // Go through registration process $this->visit('/register') ->see('Sign Up') @@ -76,6 +75,10 @@ class AuthTest extends TestCase ->seePageIs('/register/confirm') ->seeInDatabase('users', ['name' => $user->name, 'email' => $user->email, 'email_confirmed' => false]); + // Ensure notification sent + $dbUser = \BookStack\User::where('email', '=', $user->email)->first(); + Notification::assertSentTo($dbUser, ConfirmEmail::class); + // Test access and resend confirmation email $this->login($user->email, $user->password) ->seePageIs('/register/confirm/awaiting') @@ -84,19 +87,18 @@ class AuthTest extends TestCase ->seePageIs('/register/confirm/awaiting') ->press('Resend Confirmation Email'); - // Get confirmation - $user = $user->where('email', '=', $user->email)->first(); - $emailConfirmation = EmailConfirmation::where('user_id', '=', $user->id)->first(); - - - // Check confirmation email button and confirmation activation. - $this->visit('/register/confirm/' . $emailConfirmation->token . '/email') - ->see('Email Confirmation') - ->click('Confirm Email') + // Get confirmation and confirm notification matches + $emailConfirmation = DB::table('email_confirmations')->where('user_id', '=', $dbUser->id)->first(); + Notification::assertSentTo($dbUser, ConfirmEmail::class, function($notification, $channels) use ($emailConfirmation) { + return $notification->token === $emailConfirmation->token; + }); + + // Check confirmation email confirmation activation. + $this->visit('/register/confirm/' . $emailConfirmation->token) ->seePageIs('/') ->see($user->name) ->notSeeInDatabase('email_confirmations', ['token' => $emailConfirmation->token]) - ->seeInDatabase('users', ['name' => $user->name, 'email' => $user->email, 'email_confirmed' => true]); + ->seeInDatabase('users', ['name' => $dbUser->name, 'email' => $dbUser->email, 'email_confirmed' => true]); } public function test_restricted_registration() @@ -144,7 +146,7 @@ class AuthTest extends TestCase public function test_user_updating() { - $user = \BookStack\User::all()->last(); + $user = $this->getNormalUser(); $password = $user->password; $this->asAdmin() ->visit('/settings/users') @@ -160,7 +162,7 @@ class AuthTest extends TestCase public function test_user_password_update() { - $user = \BookStack\User::all()->last(); + $user = $this->getNormalUser(); $userProfilePage = '/settings/users/' . $user->id; $this->asAdmin() ->visit($userProfilePage)