50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
declare(strict_types=1);
 | 
						|
 | 
						|
use App\Models\User;
 | 
						|
 | 
						|
use function Pest\Laravel\actingAs;
 | 
						|
use function Pest\Laravel\assertAuthenticated;
 | 
						|
use function Pest\Laravel\assertGuest;
 | 
						|
use function Pest\Laravel\get;
 | 
						|
use function Pest\Laravel\post;
 | 
						|
 | 
						|
test('login screen can be rendered', function () {
 | 
						|
    $response = get('/login');
 | 
						|
 | 
						|
    $response->assertStatus(200);
 | 
						|
});
 | 
						|
 | 
						|
test('users can authenticate using the login screen', function () {
 | 
						|
    $user = User::factory()->create();
 | 
						|
 | 
						|
    $response = post('/login', [
 | 
						|
        'email' => $user->email,
 | 
						|
        'password' => 'password',
 | 
						|
    ]);
 | 
						|
 | 
						|
    assertAuthenticated();
 | 
						|
    $response->assertRedirect(route('dashboard', absolute: false));
 | 
						|
});
 | 
						|
 | 
						|
test('users can not authenticate with invalid password', function () {
 | 
						|
    $user = User::factory()->create();
 | 
						|
 | 
						|
    post('/login', [
 | 
						|
        'email' => $user->email,
 | 
						|
        'password' => 'wrong-password',
 | 
						|
    ]);
 | 
						|
 | 
						|
    assertGuest();
 | 
						|
});
 | 
						|
 | 
						|
test('users can logout', function () {
 | 
						|
    $user = User::factory()->create();
 | 
						|
 | 
						|
    $response = actingAs($user)->post('/logout');
 | 
						|
 | 
						|
    assertGuest();
 | 
						|
    $response->assertRedirect('/');
 | 
						|
});
 |