Я хочу проверить мои основные страницы, защищенные аутентификацией. Тест для unauthorization работает отлично. Но я борюсь за авторизованный вход в систему, так как не знаю, как включить заголовки в тесте.
Я не мог найти подсказку, как установить заголовки на $this->call()
, Единственная информация, которую я смог найти:
$this->call($method, $uri, $parameters, $cookies, $files, $server, $content);
и отсутствуют заголовки.
Как мне легко проверить базовую аутентификацию на laravel. Конкретно: как установить базовый заголовок аутентификации для тестового запроса?
Что у меня сейчас есть:
class ExampleTest extends TestCase {
public function test401UnauthorizedOnMe() {
$response = $this->call('GET', '/api/me');
$this->assertResponseStatus( 401);
}
public function testCorrectLoginOnMe() {
// http://shortrecipes.blogspot.de/2009/12/testing-basic-http-authentication-using.html
//send header with correct user and password i.e.
////YWRtaW46YWRtaW4xMg== is equal to base64_encode( "admin:admin12")
$this->request->setHeader( 'Authorization','Basic YWRtaW46YWRtaW4xMg==');
$response = $this->call('GET', '/api/me');
$this->assertResponseStatus(200);
}
}
Я старался $this->$request->setHeader();
но с этим я получаю только ошибку:
1) ExampleTest::testCorrectLoginOnMe
ErrorException: Undefined property: ExampleTest::$request
Нашел решение с HTTP-аутентификация с PHP. Это может быть использовано в $server
параметр $this->call()
,
Вот моя рабочая функция:
public function testCorrectLoginOnMe() {
// call( $method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
$this->call('GET', '/api/me', [], [], [], ['PHP_AUTH_USER' => 'admin', 'PHP_AUTH_PW' => 'admin12']);
$this->assertResponseStatus( 200 );
}
Других решений пока нет …