56 - Add browser test for logout
This commit is contained in:
parent
c3a5532028
commit
95c5a72294
2 changed files with 44 additions and 0 deletions
31
tests/Browser/Auth/LogoutTest.php
Normal file
31
tests/Browser/Auth/LogoutTest.php
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
it('logs out and lands on the login page', function () {
|
||||||
|
$page = loginAs(createPlanner());
|
||||||
|
|
||||||
|
logout($page)
|
||||||
|
->assertPathIs('/login')
|
||||||
|
->assertSee('Sign In');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('blocks protected routes after logging out', function (string $path) {
|
||||||
|
$page = loginAs(createPlanner());
|
||||||
|
|
||||||
|
logout($page)
|
||||||
|
->assertPathIs('/login')
|
||||||
|
->navigate($path)
|
||||||
|
->assertPathIs('/login')
|
||||||
|
->assertSee('Sign In');
|
||||||
|
})->with(['/dashboard', '/dishes', '/schedule', '/users']);
|
||||||
|
|
||||||
|
it('does not restore an authenticated view via the back button', function () {
|
||||||
|
$planner = createPlanner();
|
||||||
|
|
||||||
|
$page = loginAs($planner)->assertSee($planner->name);
|
||||||
|
|
||||||
|
logout($page)
|
||||||
|
->assertPathIs('/login')
|
||||||
|
->back()
|
||||||
|
->assertPathIs('/login')
|
||||||
|
->assertDontSee('Logout');
|
||||||
|
});
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
use App\Models\Planner;
|
use App\Models\Planner;
|
||||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Pest\Browser\Api\AwaitableWebpage;
|
||||||
use Pest\Browser\Api\Webpage;
|
use Pest\Browser\Api\Webpage;
|
||||||
use Tests\BrowserTestCase;
|
use Tests\BrowserTestCase;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
@ -62,3 +63,15 @@ function loginAndGoToSchedule()
|
||||||
{
|
{
|
||||||
return loginAs(createPlanner(), '/schedule');
|
return loginAs(createPlanner(), '/schedule');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open the account dropdown and submit the logout form.
|
||||||
|
*
|
||||||
|
* @return Webpage
|
||||||
|
*/
|
||||||
|
function logout(Webpage|AwaitableWebpage $page)
|
||||||
|
{
|
||||||
|
return $page
|
||||||
|
->click('button[\@click="open = !open"]')
|
||||||
|
->click('.sm\:flex form[action$="/logout"] button[type="submit"]');
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue