]> BookStack Code Mirror - bookstack/blob - tests/Commands/CreateAdminCommandTest.php
Lexical: Improved diagram selection and keyboard usage
[bookstack] / tests / Commands / CreateAdminCommandTest.php
1 <?php
2
3 namespace Tests\Commands;
4
5 use BookStack\Users\Models\User;
6 use Illuminate\Support\Facades\Auth;
7 use Tests\TestCase;
8
9 class CreateAdminCommandTest extends TestCase
10 {
11     public function test_standard_command_usage()
12     {
13         $this->artisan('bookstack:create-admin', [
14             '--email'    => '[email protected]',
15             '--name'     => 'Admin Test',
16             '--password' => 'testing-4',
17         ])->assertExitCode(0);
18
19         $this->assertDatabaseHas('users', [
20             'email' => '[email protected]',
21             'name'  => 'Admin Test',
22         ]);
23
24         /** @var User $user */
25         $user = User::query()->where('email', '=', '[email protected]')->first();
26         $this->assertTrue($user->hasSystemRole('admin'));
27         $this->assertTrue(Auth::attempt(['email' => '[email protected]', 'password' => 'testing-4']));
28     }
29
30     public function test_providing_external_auth_id()
31     {
32         $this->artisan('bookstack:create-admin', [
33             '--email'            => '[email protected]',
34             '--name'             => 'Admin Test',
35             '--external-auth-id' => 'xX_admin_Xx',
36         ])->assertExitCode(0);
37
38         $this->assertDatabaseHas('users', [
39             'email'            => '[email protected]',
40             'name'             => 'Admin Test',
41             'external_auth_id' => 'xX_admin_Xx',
42         ]);
43
44         /** @var User $user */
45         $user = User::query()->where('email', '=', '[email protected]')->first();
46         $this->assertNotEmpty($user->password);
47     }
48
49     public function test_password_required_if_external_auth_id_not_given()
50     {
51         $this->artisan('bookstack:create-admin', [
52             '--email' => '[email protected]',
53             '--name'  => 'Admin Test',
54         ])->expectsQuestion('Please specify a password for the new admin user (8 characters min)', 'hunter2000')
55             ->assertExitCode(0);
56
57         $this->assertDatabaseHas('users', [
58             'email' => '[email protected]',
59             'name'  => 'Admin Test',
60         ]);
61         $this->assertTrue(Auth::attempt(['email' => '[email protected]', 'password' => 'hunter2000']));
62     }
63 }