- $this->visit('/')->seePageIs('/login')
- ->type($user->email, '#email')
- ->type($user->password, '#password')
- ->press('Log In')
- ->seePageIs('/register/confirm/awaiting')
- ->seeText('Email Address Not Confirmed');
- }
-
- public function test_user_creation()
- {
- /** @var User $user */
- $user = factory(User::class)->make();
- $adminRole = Role::getRole('admin');
-
- $this->asAdmin()
- ->visit('/settings/users')
- ->click('Add New User')
- ->type($user->name, '#name')
- ->type($user->email, '#email')
- ->check("roles[{$adminRole->id}]")
- ->type($user->password, '#password')
- ->type($user->password, '#password-confirm')
- ->press('Save')
- ->seePageIs('/settings/users')
- ->seeInDatabase('users', $user->only(['name', 'email']))
- ->see($user->name);
-
- $user->refresh();
- $this->assertStringStartsWith(Str::slug($user->name), $user->slug);
- }
-
- public function test_user_updating()
- {
- $user = $this->getNormalUser();
- $password = $user->password;
- $this->asAdmin()
- ->visit('/settings/users')
- ->click($user->name)
- ->seePageIs('/settings/users/' . $user->id)
- ->see($user->email)
- ->type('Barry Scott', '#name')
- ->press('Save')
- ->seePageIs('/settings/users')
- ->seeInDatabase('users', ['id' => $user->id, 'name' => 'Barry Scott', 'password' => $password])
- ->notSeeInDatabase('users', ['name' => $user->name]);
-
- $user->refresh();
- $this->assertStringStartsWith(Str::slug($user->name), $user->slug);
- }
-
- public function test_user_password_update()
- {
- $user = $this->getNormalUser();
- $userProfilePage = '/settings/users/' . $user->id;
- $this->asAdmin()
- ->visit($userProfilePage)
- ->type('newpassword', '#password')
- ->press('Save')
- ->seePageIs($userProfilePage)
- ->see('Password confirmation required')
-
- ->type('newpassword', '#password')
- ->type('newpassword', '#password-confirm')
- ->press('Save')
- ->seePageIs('/settings/users');
-
- $userPassword = User::find($user->id)->password;
- $this->assertTrue(Hash::check('newpassword', $userPassword));
- }
-
- public function test_user_deletion()
- {
- $userDetails = factory(User::class)->make();
- $user = $this->getEditor($userDetails->toArray());
-
- $this->asAdmin()
- ->visit('/settings/users/' . $user->id)
- ->click('Delete User')
- ->see($user->name)
- ->press('Confirm')
- ->seePageIs('/settings/users')
- ->notSeeInDatabase('users', ['name' => $user->name]);
- }
-
- public function test_user_cannot_be_deleted_if_last_admin()
- {
- $adminRole = Role::getRole('admin');
-
- // Delete all but one admin user if there are more than one
- $adminUsers = $adminRole->users;
- if (count($adminUsers) > 1) {
- foreach ($adminUsers->splice(1) as $user) {
- $user->delete();
- }
- }
-
- // Ensure we currently only have 1 admin user
- $this->assertEquals(1, $adminRole->users()->count());
- $user = $adminRole->users->first();
-
- $this->asAdmin()->visit('/settings/users/' . $user->id)
- ->click('Delete User')
- ->press('Confirm')
- ->seePageIs('/settings/users/' . $user->id)
- ->see('You cannot delete the only admin');