]> BookStack Code Mirror - bookstack/blob - tests/User/UserSearchTest.php
Merge branch 'user_list_control'
[bookstack] / tests / User / UserSearchTest.php
1 <?php
2
3 namespace Tests\User;
4
5 use BookStack\Auth\User;
6 use Tests\TestCase;
7
8 class UserSearchTest extends TestCase
9 {
10
11     public function test_select_search_matches_by_name()
12     {
13         $viewer = $this->getViewer();
14         $admin = $this->getAdmin();
15         $resp = $this->actingAs($admin)->get('/search/users/select?search=' . urlencode($viewer->name));
16
17         $resp->assertOk();
18         $resp->assertSee($viewer->name);
19         $resp->assertDontSee($admin->name);
20     }
21
22     public function test_select_search_shows_first_by_name_without_search()
23     {
24         /** @var User $firstUser */
25         $firstUser = User::query()->orderBy('name', 'desc')->first();
26         $resp = $this->asAdmin()->get('/search/users/select');
27
28         $resp->assertOk();
29         $resp->assertSee($firstUser->name);
30     }
31
32     public function test_select_search_does_not_match_by_email()
33     {
34         $viewer = $this->getViewer();
35         $editor = $this->getEditor();
36         $resp = $this->actingAs($editor)->get('/search/users/select?search=' . urlencode($viewer->email));
37
38         $resp->assertDontSee($viewer->name);
39     }
40
41     public function test_select_requires_right_permission()
42     {
43         $permissions = ['users-manage', 'restrictions-manage-own', 'restrictions-manage-all'];
44         $user = $this->getViewer();
45
46         foreach ($permissions as $permission) {
47             $resp = $this->actingAs($user)->get('/search/users/select?search=a');
48             $this->assertPermissionError($resp);
49
50             $this->giveUserPermissions($user, [$permission]);
51             $resp = $this->actingAs($user)->get('/search/users/select?search=a');
52             $resp->assertOk();
53             $user->roles()->delete();
54             $user->clearPermissionCache();
55         }
56     }
57
58     public function test_select_requires_logged_in_user()
59     {
60         $this->setSettings(['app-public' => true]);
61         $defaultUser = User::getDefault();
62         $this->giveUserPermissions($defaultUser, ['users-manage']);
63
64         $resp = $this->get('/search/users/select?search=a');
65         $this->assertPermissionError($resp);
66     }
67
68 }