File: D:/HostingSpaces/SBogers10/helder.komma.pro/tests/Browser/AuthFlowTest.php
<?php
namespace Tests\Browser;
use App\Komma\Users\Models\Role;
use App\Komma\Users\Models\User;
use Illuminate\Auth\Passwords\PasswordBroker;
use Illuminate\Support\Facades\Artisan;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
class AuthFlowTest extends DuskTestCase
{
/**
* @test
*/
public function testRegistrationFail()
{
$this->browse(function (Browser $browser) {
$browser->visit(route('site.register'))
->assertSee(__('auth.first_name'))
->assertSee(__('auth.last_name'))
->assertSee(__('auth.email_address'))
->assertSee(__('auth.register'))
->click('input[type="submit"]')
->assertSee(__('validation.required', ['attribute' => __('validation.attributes.first_name')]));
});
}
/**
* @test
*/
public function testRegistration()
{
$newUser = factory(User::class)->make();
$this->browse(function (Browser $browser) use($newUser) {
$browser->visit(route('site.register'))
->type('first_name', $newUser->first_name)
->type('last_name', $newUser->last_name)
->type('email', $newUser->email)
->click('input[type="submit"]')
->assertSee(__('auth.registered'));
});
$newUser->delete();
}
/**
* @test
*/
public function testSetPasswordFailWithWrongPassword()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
//Generate a password reset token manually here since we cannot intercept mails from dusk
/** @var PasswordBroker $passwordBroker */
$passwordBroker = \App::make(PasswordBroker::class);
$token = $passwordBroker->createToken($newUser);
$this->browse(function (Browser $browser) use ($newUser, $token) {
$browser->visit(route('site.password.request_set', ['token' => $token]))
->type('email', $newUser->email)
->type('password', 'Test123')
->type('password_confirmation', 'Test321')
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('validation.confirmed', ['attribute' => __('validation.attributes.password')]));
});
$newUser->delete();
}
/**
* @test
*/
public function testSetPasswordFailWithWrongEmail()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
//Generate a password reset token manually here since we cannot intercept mails from dusk
/** @var PasswordBroker $passwordBroker */
$passwordBroker = \App::make(PasswordBroker::class);
$token = $passwordBroker->createToken($newUser);
$this->browse(function (Browser $browser) use ($newUser, $token) {
$browser->visit(route('site.password.request_set', ['token' => $token]))
->type('email', 'oops_'.$newUser->email)
->type('password', 'Test123')
->type('password_confirmation', 'Test123')
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('passwords.user'));
});
$newUser->delete();
}
/**
* @test
*/
public function testSetPasswordFailWithWrongToken()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
$this->browse(function (Browser $browser) use ($newUser) {
$browser->visit(route('site.password.request_set', ['token' => 'randomfaketoken2124']))
->type('email', $newUser->email)
->type('password', 'Test123')
->type('password_confirmation', 'Test123')
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('passwords.token'));
});
$newUser->delete();
}
/**
* @test
*/
public function testSetPassword()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
//Generate a password reset token manually here since we cannot intercept mails from dusk
/** @var PasswordBroker $passwordBroker */
$passwordBroker = \App::make(PasswordBroker::class);
$token = $passwordBroker->createToken($newUser);
$this->browse(function (Browser $browser) use ($newUser, $token) {
$browser->visit(route('site.password.request_set', ['email' => $newUser->email, 'token' => $token]))
->type('password', $newUser->password)
->type('password_confirmation', $newUser->password)
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('auth.password-reset'));
});
$newUser->delete();
}
/**
* @test
*/
public function testMailForgotPasswordFail()
{
$this->browse(function (Browser $browser) {
$browser->visit(route('site.password.request'))
->type('email', 'doesnotexist@komma.pro')
->assertValue('input[type="submit"]', __('auth.send_email'))
->click('input[type="submit"]')
->assertSee(__('passwords.user'));
});
}
/**
* @test
*/
public function testMailForgotPassword()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
$this->browse(function (Browser $browser) use ($newUser) {
$browser->visit(route('site.password.request'))
->type('email', $newUser->email)
->assertValue('input[type="submit"]', __('auth.send_email'))
->click('input[type="submit"]')
->assertSee(__('passwords.sent'));
});
$newUser->delete();
}
/**
* @test
*/
public function testMailForgotPasswordFailKms()
{
$this->browse(function (Browser $browser) {
$browser->visit(route('kms.password.request'))
->type('email', 'doesnotexist@komma.pro')
->assertValue('input[type="submit"]', __('auth.send_email'))
->click('input[type="submit"]')
->assertSee(__('passwords.user'));
});
}
/**
* @test
*/
public function testMailForgotPasswordKms()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
$this->browse(function (Browser $browser) use ($newUser) {
$browser->visit(route('kms.password.request'))
->type('email', $newUser->email)
->assertValue('input[type="submit"]', __('auth.send_email'))
->click('input[type="submit"]')
->assertSee(__('passwords.sent'));
});
$newUser->delete();
}
/**
* @test
*/
public function testResetPasswordFailWithWrongPassword()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
//Generate a password reset token manually here since we cannot intercept mails from dusk
/** @var PasswordBroker $passwordBroker */
$passwordBroker = \App::make(PasswordBroker::class);
$token = $passwordBroker->createToken($newUser);
$this->browse(function (Browser $browser) use ($newUser, $token) {
$browser->visit(route('site.password.reset', ['token' => $token]))
->type('email', $newUser->email)
->type('password', 'Test123')
->type('password_confirmation', 'Test321')
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('validation.confirmed', ['attribute' => __('validation.attributes.password')]));
});
$newUser->delete();
}
/**
* @test
*/
public function testResetPasswordFailWithNonExistingEmail()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
//Generate a password reset token manually here since we cannot intercept mails from dusk
/** @var PasswordBroker $passwordBroker */
$passwordBroker = \App::make(PasswordBroker::class);
$token = $passwordBroker->createToken($newUser);
$this->browse(function (Browser $browser) use ($token) {
$browser->visit(route('site.password.reset', ['token' => $token]))
->type('email', 'fake@example.org')
->type('password', 'Test123')
->type('password_confirmation', 'Test123')
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('passwords.user'));
});
$newUser->delete();
}
/**
* @test
*/
public function testResetPasswordFailWithFakeToken()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
$this->browse(function (Browser $browser) use ($newUser) {
$browser->visit(route('site.password.reset', ['token' => 'fakepassresettoken']))
->type('email', $newUser->email)
->type('password', $newUser->password)
->type('password_confirmation', $newUser->password)
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('passwords.token'));
});
$newUser->delete();
}
/**
* @test
*/
public function testResetPassword()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
//Generate a password reset token manually here since we cannot intercept mails from dusk
/** @var PasswordBroker $passwordBroker */
$passwordBroker = \App::make(PasswordBroker::class);
$token = $passwordBroker->createToken($newUser);
$this->browse(function (Browser $browser) use ($newUser, $token) {
$browser->visit(route('kms.password.reset', ['email' => $newUser->email, 'token' => $token]))
->type('password', $newUser->password)
->type('password_confirmation', $newUser->password)
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('auth.password-reset'));
});
$newUser->delete();
}
/**
* @test
*/
public function testResetPasswordFailWithWrongPasswordKms()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
//Generate a password reset token manually here since we cannot intercept mails from dusk
/** @var PasswordBroker $passwordBroker */
$passwordBroker = \App::make(PasswordBroker::class);
$token = $passwordBroker->createToken($newUser);
$this->browse(function (Browser $browser) use ($newUser, $token) {
$browser->visit(route('kms.password.reset', ['token' => $token]))
->type('email', $newUser->email)
->type('password', 'Test123')
->type('password_confirmation', 'Test321')
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('validation.confirmed', ['attribute' => __('validation.attributes.password')]));
});
$newUser->delete();
}
/**
* @test
*/
public function testResetPasswordFailWithNonExistingEmailKms()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
//Generate a password reset token manually here since we cannot intercept mails from dusk
/** @var PasswordBroker $passwordBroker */
$passwordBroker = \App::make(PasswordBroker::class);
$token = $passwordBroker->createToken($newUser);
$this->browse(function (Browser $browser) use ($token) {
$browser->visit(route('kms.password.reset', ['token' => $token]))
->type('email', 'fake@example.org')
->type('password', 'Test123')
->type('password_confirmation', 'Test123')
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('passwords.user'));
});
$newUser->delete();
}
/**
* @test
*/
public function testResetPasswordFailWithFakeTokenKms()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
$this->browse(function (Browser $browser) use ($newUser) {
$browser->visit(route('kms.password.reset', ['token' => 'fakepassresettoken']))
->type('email', $newUser->email)
->type('password', $newUser->password)
->type('password_confirmation', $newUser->password)
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('passwords.token'));
});
$newUser->delete();
}
/**
* @test
*/
public function testResetPasswordKms()
{
/** @var User $newUser */
$newUser = factory(User::class)->make();
$newUser->role()->associate(Role::where('name', '=', 'customer')->first());
$newUser->save();
//Generate a password reset token manually here since we cannot intercept mails from dusk
/** @var PasswordBroker $passwordBroker */
$passwordBroker = \App::make(PasswordBroker::class);
$token = $passwordBroker->createToken($newUser);
$this->browse(function (Browser $browser) use ($newUser, $token) {
$browser->visit(route('kms.password.reset', ['email' => $newUser->email, 'token' => $token]))
->type('password', $newUser->password)
->type('password_confirmation', $newUser->password)
->assertValue('input[type="submit"]', __('auth.update_password'))
->click('input[type="submit"]')
->assertSee(__('auth.password-reset'))
->screenshot('test');
});
$newUser->delete();
}
/** @test */
public function testLoginFail()
{
Artisan::call('cache:clear'); //Clears auth throttling if active.
$this->browse(function (Browser $browser) {
$browser->visit(route('site.login'))
->type('email', 'info@komma.pro')
->type('password', \UserTableSeeder::getDefaultCredentials()['password'].'_dusk_test')
->press(__('auth.log_in'))
->assertSee('Het opgeven e-mailadres en')
->screenshot($this->getName());
});
}
/** @test */
public function testLogin()
{
Artisan::call('cache:clear'); //Clears auth throttling if active.
$this->browse(function (Browser $browser) {
$browser->visit(route('site.login'))
->type('email', 'info@komma.pro')
->type('password', \UserTableSeeder::getDefaultCredentials()['password'])
->press(__('auth.log_in'))
->assertPathIs('/');
});
}
/** @test */
public function testLoginFailKms()
{
Artisan::call('cache:clear'); //Clears auth throttling if active.
$this->browse(function (Browser $browser) {
$browser->visit(route('kms.login'))
->type('email', 'info@komma.pro')
->type('password', \UserTableSeeder::getDefaultCredentials()['password'].'_dusk_test')
->press(__('auth.log_in'))
->assertSee('Het opgeven e-mailadres en')
->screenshot($this->getName());
});
}
/** @test */
public function testLoginKms()
{
Artisan::call('cache:clear'); //Clears auth throttling if active.
$this->browse(function (Browser $browser) {
$browser->visit(route('kms.login'))
->type('email', 'info@komma.pro')
->type('password', \UserTableSeeder::getDefaultCredentials()['password'])
->press(__('auth.log_in'))
->pause(2000)
->assertSee(__('kms/users.section.title'))
->screenshot($this->getName());
});
}
}