]> BookStack Code Mirror - bookstack/blob - tests/User/UserSearchTest.php
Skip intermediate login page with single provider
[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     public function test_select_search_matches_by_name()
11     {
12         $viewer = $this->getViewer();
13         $admin = $this->getAdmin();
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->getViewer();
34         $editor = $this->getEditor();
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->getViewer();
44
45         foreach ($permissions as $permission) {
46             $resp = $this->actingAs($user)->get('/search/users/select?search=a');
47             $this->assertPermissionError($resp);
48
49             $this->giveUserPermissions($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         $defaultUser = User::getDefault();
61         $this->giveUserPermissions($defaultUser, ['users-manage']);
62
63         $resp = $this->get('/search/users/select?search=a');
64         $this->assertPermissionError($resp);
65     }
66 }
Morty Proxy This is a proxified and sanitized view of the page, visit original site.