+ $this->actingAs($this->user)->get('/settings/users')->assertOk();
+ }
+
+ public function test_manage_users_permission_shows_link_in_header_if_does_not_have_settings_manage_permision()
+ {
+ $usersLink = 'href="' . url('/settings/users') . '"';
+ $this->actingAs($this->user)->get('/')->assertDontSee($usersLink, false);
+ $this->giveUserPermissions($this->user, ['users-manage']);
+ $this->actingAs($this->user)->get('/')->assertSee($usersLink, false);
+ $this->giveUserPermissions($this->user, ['settings-manage', 'users-manage']);
+ $this->actingAs($this->user)->get('/')->assertDontSee($usersLink, false);
+ }
+
+ public function test_user_cannot_change_email_unless_they_have_manage_users_permission()
+ {
+ $userProfileUrl = '/settings/users/' . $this->user->id;
+ $originalEmail = $this->user->email;
+ $this->actingAs($this->user);
+
+ $this->get($userProfileUrl)
+ ->assertOk()
+ ->assertElementExists('input[name=email][disabled]');
+ $this->put($userProfileUrl, [
+ 'name' => 'my_new_name',
+ ]);
+ $this->assertDatabaseHas('users', [
+ 'id' => $this->user->id,
+ 'email' => $originalEmail,
+ 'name' => 'my_new_name',
+ ]);
+
+ $this->giveUserPermissions($this->user, ['users-manage']);
+
+ $this->get($userProfileUrl)
+ ->assertOk()
+ ->assertElementNotExists('input[name=email][disabled]')
+ ->assertElementExists('input[name=email]');
+ $this->put($userProfileUrl, [
+ 'name' => 'my_new_name_2',
+ ]);
+
+ $this->assertDatabaseHas('users', [
+ 'id' => $this->user->id,
+ 'name' => 'my_new_name_2',
+ ]);