Laravel: удобные методы для подтверждения неаутентифицированных пользователей

В Laravel модульное тестирование играет решающую роль в обеспечении качества и надежности вашего приложения. Когда дело доходит до тестирования функций, связанных с аутентификацией, важно иметь методы, позволяющие утверждать, что пользователь не аутентифицирован. В этой статье мы рассмотрим несколько удобных методов Laravel, которые позволяют легко тестировать сценарии, в которых пользователи не проходят аутентификацию.

Метод 1: assertGuest()
Метод assertGuest()используется для подтверждения того, что ни один пользователь в настоящее время не аутентифицирован. Это гарантирует, что пользователь будет перенаправлен на страницу входа или ему будет отказано в доступе при попытке доступа к защищенным маршрутам. Вот пример использования:

public function testGuestCannotAccessDashboard()
{
    $response = $this->get('/dashboard');
    $response->assertGuest();
}

Метод 2: assertAuthenticated()
И наоборот, метод assertAuthenticated()проверяет подлинность пользователя. Это полезно, если вы хотите протестировать сценарии, в которых пользователь успешно вошел в систему. Вот пример:

public function testLoggedInUserCanAccessProfile()
{
    $user = User::factory()->create();
    $response = $this->actingAs($user)
                     ->get('/profile');
    $response->assertAuthenticated();
}

Метод 3: assertCredentials()
Метод assertCredentials()позволяет вам подтвердить, что предоставленные учетные данные действительны для аутентификации. Это удобно, если вы хотите протестировать функциональность входа в систему. Посмотрите этот пример:

public function testValidCredentialsCanLogin()
{
    $user = User::factory()->create([
        'email' => 'test@example.com',
        'password' => bcrypt('password123'),
    ]);
    $response = $this->post('/login', [
        'email' => 'test@example.com',
        'password' => 'password123',
    ]);
    $response->assertCredentials([
        'email' => 'test@example.com',
    ]);
}

Метод 4: assertInvalidCredentials()
С другой стороны, если вы хотите подтвердить, что предоставленные учетные данные недействительны, вы можете использовать метод assertInvalidCredentials(). Это полезно при тестировании неудачных попыток входа в систему. Вот пример:

public function testInvalidCredentialsCannotLogin()
{
    $user = User::factory()->create([
        'email' => 'test@example.com',
        'password' => bcrypt('password123'),
    ]);
    $response = $this->post('/login', [
        'email' => 'test@example.com',
        'password' => 'wrongpassword',
    ]);
    $response->assertInvalidCredentials();
}

Сценарии аутентификации при модульном тестировании имеют решающее значение для обеспечения безопасности и функциональности вашего приложения Laravel. В этой статье мы рассмотрели несколько удобных методов, предоставляемых Laravel для подтверждения неаутентифицированных пользователей. Используя эти методы в своих тестах, вы можете эффективно проверить поведение вашего приложения, когда пользователи не проходят аутентификацию.