]> BookStack Code Mirror - bookstack/blob - tests/User/UserSearchTest.php
Updated translator & dependency attribution before release v25.05.1
[bookstack] / tests / User / UserSearchTest.php
1 <?php
2
3 namespace Tests\User;
4
5 use BookStack\Users\Models\User;
6 use Tests\TestCase;
7
8 class UserSearchTest extends TestCase
9 {
10     public function test_select_search_matches_by_name()
11     {
12         $viewer = $this->users->viewer();
13         $admin = $this->users->admin();
14         $resp = $this->actingAs($admin)->get('/search/users/select?search=' . urlencode($viewer->name));
15
16         $resp->assertOk();
17         $resp->assertSee($viewer->name);
18         $resp->assertDontSee($admin->name);
19     }
20
21     public function test_select_search_shows_first_by_name_without_search()
22     {
23         /** @var User $firstUser */
24         $firstUser = User::query()->orderBy('name', 'desc')->first();
25         $resp = $this->asAdmin()->get('/search/users/select');
26
27         $resp->assertOk();
28         $resp->assertSee($firstUser->name);
29     }
30
31     public function test_select_search_does_not_match_by_email()
32     {
33         $viewer = $this->users->viewer();
34         $editor = $this->users->editor();
35         $resp = $this->actingAs($editor)->get('/search/users/select?search=' . urlencode($viewer->email));
36
37         $resp->assertDontSee($viewer->name);
38     }
39
40     public function test_select_requires_right_permission()
41     {
42         $permissions = ['users-manage', 'restrictions-manage-own', 'restrictions-manage-all'];
43         $user = $this->users->viewer();
44
45         foreach ($permissions as $permission) {
46             $resp = $this->actingAs($user)->get('/search/users/select?search=a');
47             $this->assertPermissionError($resp);
48
49             $this->permissions->grantUserRolePermissions($user, [$permission]);
50             $resp = $this->actingAs($user)->get('/search/users/select?search=a');
51             $resp->assertOk();
52             $user->roles()->delete();
53             $user->clearPermissionCache();
54         }
55     }
56
57     public function test_select_requires_logged_in_user()
58     {
59         $this->setSettings(['app-public' => true]);
60         $this->permissions->grantUserRolePermissions($this->users->guest(), ['users-manage']);
61
62         $resp = $this->get('/search/users/select?search=a');
63         $this->assertPermissionError($resp);
64     }
65 }
Morty Proxy This is a proxified and sanitized view of the page, visit original site.