namespace Tests\Auth;
-use BookStack\Auth\Access\UserInviteService;
-use BookStack\Auth\User;
-use BookStack\Notifications\UserInvite;
+use BookStack\Access\Notifications\UserInviteNotification;
+use BookStack\Access\UserInviteService;
+use BookStack\Users\Models\User;
use Carbon\Carbon;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Support\Facades\DB;
public function test_user_creation_creates_invite()
{
Notification::fake();
- $admin = $this->getAdmin();
+ $admin = $this->users->admin();
$email = Str::random(16) . '@example.com';
$resp = $this->actingAs($admin)->post('/settings/users/create', [
$newUser = User::query()->where('email', '=', $email)->orderBy('id', 'desc')->first();
- Notification::assertSentTo($newUser, UserInvite::class);
+ Notification::assertSentTo($newUser, UserInviteNotification::class);
$this->assertDatabaseHas('user_invites', [
'user_id' => $newUser->id,
]);
public function test_user_invite_sent_in_selected_language()
{
Notification::fake();
- $admin = $this->getAdmin();
+ $admin = $this->users->admin();
$email = Str::random(16) . '@example.com';
$resp = $this->actingAs($admin)->post('/settings/users/create', [
'name' => 'Barry',
'email' => $email,
'send_invite' => 'true',
- 'setting' => [
- 'language' => 'de',
- ],
+ 'language' => 'de',
]);
$resp->assertRedirect('/settings/users');
$newUser = User::query()->where('email', '=', $email)->orderBy('id', 'desc')->first();
- Notification::assertSentTo($newUser, UserInvite::class, function ($notification, $channels, $notifiable) {
+ Notification::assertSentTo($newUser, UserInviteNotification::class, function ($notification, $channels, $notifiable) {
/** @var MailMessage $mail */
$mail = $notification->toMail($notifiable);
- return 'Du wurdest eingeladen BookStack beizutreten!' === $mail->subject &&
+ return 'Sie wurden eingeladen, BookStack beizutreten!' === $mail->subject &&
'Ein Konto wurde für Sie auf BookStack erstellt.' === $mail->greeting;
});
}
public function test_invite_set_password()
{
Notification::fake();
- $user = $this->getViewer();
+ $user = $this->users->viewer();
$inviteService = app(UserInviteService::class);
$inviteService->sendInvitation($user);
public function test_invite_set_has_password_validation()
{
Notification::fake();
- $user = $this->getViewer();
+ $user = $this->users->viewer();
$inviteService = app(UserInviteService::class);
$inviteService->sendInvitation($user);
public function test_token_expires_after_two_weeks()
{
Notification::fake();
- $user = $this->getViewer();
+ $user = $this->users->viewer();
$inviteService = app(UserInviteService::class);
$inviteService->sendInvitation($user);
$setPasswordPageResp->assertRedirect('/password/email');
$setPasswordPageResp->assertSessionHas('error', 'This invitation link has expired. You can instead try to reset your account password.');
}
+
+ public function test_set_password_view_is_throttled()
+ {
+ for ($i = 0; $i < 11; $i++) {
+ $response = $this->get("/register/invite/tokenhere{$i}");
+ }
+
+ $response->assertStatus(429);
+ }
+
+ public function test_set_password_post_is_throttled()
+ {
+ for ($i = 0; $i < 11; $i++) {
+ $response = $this->post("/register/invite/tokenhere{$i}", [
+ 'password' => 'my test password',
+ ]);
+ }
+
+ $response->assertStatus(429);
+ }
}