Add tests for password changing

This commit is contained in:
Dane Everitt 2018-07-15 11:44:18 -07:00
parent 6e9123af19
commit be2c76c24a
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
6 changed files with 32 additions and 10 deletions

View file

@ -21,7 +21,7 @@ class UpdateEmailRequest extends ClientApiRequest
// Verify password matches when changing password or email. // Verify password matches when changing password or email.
if (! password_verify($this->input('password'), $this->user()->password)) { if (! password_verify($this->input('password'), $this->user()->password)) {
throw new InvalidPasswordProvidedException(trans('base.account.invalid_password')); throw new InvalidPasswordProvidedException(trans('validation.internal.invalid_password'));
} }
return true; return true;

View file

@ -21,7 +21,7 @@ class UpdatePasswordRequest extends ClientApiRequest
// Verify password matches when changing password or email. // Verify password matches when changing password or email.
if (! password_verify($this->input('current_password'), $this->user()->password)) { if (! password_verify($this->input('current_password'), $this->user()->password)) {
throw new InvalidPasswordProvidedException(trans('base.account.invalid_password')); throw new InvalidPasswordProvidedException(trans('validation.internal.invalid_password'));
} }
return true; return true;

View file

@ -28,7 +28,7 @@ class AccountDataFormRequest extends FrontendUserFormRequest
// Verify password matches when changing password or email. // Verify password matches when changing password or email.
if (in_array($this->input('do_action'), ['password', 'email'])) { if (in_array($this->input('do_action'), ['password', 'email'])) {
if (! password_verify($this->input('current_password'), $this->user()->password)) { if (! password_verify($this->input('current_password'), $this->user()->password)) {
throw new InvalidPasswordProvidedException(trans('base.account.invalid_password')); throw new InvalidPasswordProvidedException(trans('validation.internal.invalid_password'));
} }
} }

View file

@ -101,5 +101,6 @@ return [
// Internal validation logic for Pterodactyl // Internal validation logic for Pterodactyl
'internal' => [ 'internal' => [
'variable_value' => ':env variable', 'variable_value' => ':env variable',
'invalid_password' => 'The password provided was invalid for this account.',
], ],
]; ];

View file

@ -13,6 +13,7 @@ abstract class BasePage extends Page
{ {
return [ return [
'@@success' => '.alert.success[role="alert"]', '@@success' => '.alert.success[role="alert"]',
'@@error' => '.alert.error[role="alert"]',
]; ];
} }
} }

View file

@ -2,8 +2,6 @@
namespace Pterodactyl\Tests\Browser\Processes\Dashboard; namespace Pterodactyl\Tests\Browser\Processes\Dashboard;
use Pterodactyl\Models\User;
use Illuminate\Support\Facades\Hash;
use Pterodactyl\Tests\Browser\BrowserTestCase; use Pterodactyl\Tests\Browser\BrowserTestCase;
use Pterodactyl\Tests\Browser\PterodactylBrowser; use Pterodactyl\Tests\Browser\PterodactylBrowser;
use Pterodactyl\Tests\Browser\Pages\Dashboard\AccountPage; use Pterodactyl\Tests\Browser\Pages\Dashboard\AccountPage;
@ -16,17 +14,18 @@ class AccountEmailProcessTest extends BrowserTestCase
private $user; private $user;
/** /**
* Setup a user for the test process to use. * Setup tests.
*/ */
public function setUp() protected function setUp()
{ {
parent::setUp(); parent::setUp();
$this->user = factory(User::class)->create([ $this->user = $this->user();
'password' => Hash::make('Password123'),
]);
} }
/**
* Test that an email address can be changed successfully.
*/
public function testEmailCanBeChanged() public function testEmailCanBeChanged()
{ {
$this->browse(function (PterodactylBrowser $browser) { $this->browse(function (PterodactylBrowser $browser) {
@ -43,4 +42,25 @@ class AccountEmailProcessTest extends BrowserTestCase
$this->assertDatabaseHas('users', ['id' => $this->user->id, 'email' => 'new.email@example.com']); $this->assertDatabaseHas('users', ['id' => $this->user->id, 'email' => 'new.email@example.com']);
}); });
} }
/**
* Test that entering the wrong password for an account returns an error.
*/
public function testInvalidPasswordShowsError()
{
$this->browse(function (PterodactylBrowser $browser) {
$browser->loginAs($this->user)
->visit(new AccountPage)
->type('@email', 'new.email@example.com')
->click('@submit')
->assertFocused('@password')
->type('@password', 'test1234')
->click('@submit')
->waitFor('@@error')
->assertSeeIn('@@error', trans('validation.internal.invalid_password'))
->assertValue('@email', 'new.email@example.com');
$this->assertDatabaseMissing('users', ['id' => $this->user->id, 'email' => 'new.email@example.com']);
});
}
} }