3 use BookStack\EmailConfirmation;
5 class AuthTest extends TestCase
8 public function testAuthWorking()
11 ->seePageIs('/login');
14 public function testLogin()
17 ->seePageIs('/login');
24 public function testPublicViewing()
26 $settings = app('BookStack\Services\SettingService');
27 $settings->put('app-public', 'true');
33 public function testRegistrationShowing()
35 // Ensure registration form is showing
36 $this->setSettings(['registration-enabled' => 'true']);
37 $this->visit('/login')
40 ->seePageIs('/register');
43 public function testNormalRegistration()
45 // Set settings and get user instance
46 $this->setSettings(['registration-enabled' => 'true']);
47 $user = factory(\BookStack\User::class)->make();
49 // Test form and ensure user is created
50 $this->visit('/register')
52 ->type($user->name, '#name')
53 ->type($user->email, '#email')
54 ->type($user->password, '#password')
55 ->press('Create Account')
58 ->seeInDatabase('users', ['name' => $user->name, 'email' => $user->email]);
61 public function testConfirmedRegistration()
63 // Set settings and get user instance
64 $this->setSettings(['registration-enabled' => 'true', 'registration-confirmation' => 'true']);
65 $user = factory(\BookStack\User::class)->make();
67 // Mock Mailer to ensure mail is being sent
68 $mockMailer = Mockery::mock('Illuminate\Contracts\Mail\Mailer');
69 $mockMailer->shouldReceive('send')->with('emails/email-confirmation', Mockery::type('array'), Mockery::type('callable'))->twice();
70 $this->app->instance('mailer', $mockMailer);
72 // Go through registration process
73 $this->visit('/register')
75 ->type($user->name, '#name')
76 ->type($user->email, '#email')
77 ->type($user->password, '#password')
78 ->press('Create Account')
79 ->seePageIs('/register/confirm')
80 ->seeInDatabase('users', ['name' => $user->name, 'email' => $user->email, 'email_confirmed' => false]);
82 // Test access and resend confirmation email
83 $this->login($user->email, $user->password)
84 ->seePageIs('/register/confirm/awaiting')
87 ->seePageIs('/register/confirm/awaiting')
88 ->press('Resend Confirmation Email');
91 $user = $user->where('email', '=', $user->email)->first();
92 $emailConfirmation = EmailConfirmation::where('user_id', '=', $user->id)->first();
95 // Check confirmation email button and confirmation activation.
96 $this->visit('/register/confirm/' . $emailConfirmation->token . '/email')
97 ->see('Email Confirmation')
98 ->click('Confirm Email')
101 ->notSeeInDatabase('email_confirmations', ['token' => $emailConfirmation->token])
102 ->seeInDatabase('users', ['name' => $user->name, 'email' => $user->email, 'email_confirmed' => true]);
105 public function testLogout()
112 ->seePageIs('/login');
117 * @param string $email
118 * @param string $password
121 private function login($email, $password)
123 return $this->visit('/login')
124 ->type($email, '#email')
125 ->type($password, '#password')