2023-05-24 17:34:43 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Tests\Commands;
|
|
|
|
|
|
|
|
use BookStack\Users\Models\User;
|
|
|
|
use Illuminate\Database\Eloquent\Collection;
|
|
|
|
use Tests\TestCase;
|
|
|
|
|
|
|
|
class DeleteUsersCommandTest extends TestCase
|
|
|
|
{
|
|
|
|
public function test_command_deletes_users()
|
|
|
|
{
|
|
|
|
$userCount = User::query()->count();
|
|
|
|
$normalUsers = $this->getNormalUsers();
|
|
|
|
|
|
|
|
$normalUserCount = $userCount - count($normalUsers);
|
|
|
|
$this->artisan('bookstack:delete-users')
|
2023-05-24 19:59:50 +08:00
|
|
|
->expectsConfirmation('Are you sure you want to continue?', 'yes')
|
2023-05-24 17:34:43 +08:00
|
|
|
->expectsOutputToContain("Deleted $normalUserCount of $userCount total users.")
|
|
|
|
->assertExitCode(0);
|
|
|
|
|
|
|
|
$this->assertDatabaseMissing('users', ['id' => $normalUsers->first()->id]);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function test_command_requires_confirmation()
|
|
|
|
{
|
|
|
|
$normalUsers = $this->getNormalUsers();
|
|
|
|
|
|
|
|
$this->artisan('bookstack:delete-users')
|
2023-05-24 19:59:50 +08:00
|
|
|
->expectsConfirmation('Are you sure you want to continue?', 'no')
|
2023-05-24 17:34:43 +08:00
|
|
|
->assertExitCode(0);
|
|
|
|
|
|
|
|
$this->assertDatabaseHas('users', ['id' => $normalUsers->first()->id]);
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function getNormalUsers(): Collection
|
|
|
|
{
|
|
|
|
return User::query()->whereNull('system_name')
|
|
|
|
->get()
|
|
|
|
->filter(function (User $user) {
|
|
|
|
return !$user->hasSystemRole('admin');
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|