public function test_confirmed_registration() { // Fake notifications Notification::fake(); // Set settings and get user instance $this->setSettings(['registration-enabled' => 'true', 'registration-confirmation' => 'true']); $user = factory(\BookStack\User::class)->make(); // Go through registration process $this->visit('/register')->see('Sign Up')->type($user->name, '#name')->type($user->email, '#email')->type($user->password, '#password')->press('Create Account')->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')->see('Resend')->visit('/books')->seePageIs('/register/confirm/awaiting')->press('Resend Confirmation 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' => $dbUser->name, 'email' => $dbUser->email, 'email_confirmed' => true]); }
/** * Get a user that's not a system user such as the guest user. */ public function getNormalUser() { return \BookStack\User::where('system_name', '=', null)->get()->last(); }