Я пытаюсь использовать следующую технику, описанную на symfony.com: http://symfony.com/doc/current/cookbook/testing/http_authentication.html
в попытке функционально проверить контроллер, который требует, чтобы пользователь вошел в систему.
Пока моя форма входа в систему работает, я могу войти, и веб-панель отладки Symfony2 показывает моего пользователя как аутентифицированного. Кроме того, я уже написал функциональный тест для самого процесса входа в систему, это проходит. Итак, я теперь по двум сценариям, что мой логин работает.
Единственная проблема, с которой я сталкиваюсь, это попытка симулировать HTTP-аутентификацию, как это делается для других контроллеров:
$client = static::createClient(array(), array(
'PHP_AUTH_USER' => 'tester',
'PHP_AUTH_PW' => 'testpass',
));
Проверяя $ client, я могу видеть, что меня перенаправляют на страницу входа в систему, когда я пытаюсь что-то вроде этого:
$crawler = $client->request('GET', '/');
Я знаю, что в БД существует пользовательский тестер с паролем testpass, так как я могу также войти в систему с этой учетной записью через браузер.
Я могу использовать следующий код из теста контроллера безопасности:
$client = $this->createClient(array(), array('HTTP_HOST' => 'myapp.test'));
// Visit user login page and login
$crawler = $client->request('GET', '/login');
$form = $crawler->selectButton('Login')->form();
$crawler = $client->submit($form, array('_username' => 'tester', '_password' => 'testpass'));
// ... carry on with remainder of tests
но я не слишком уверен, что это самый эффективный способ сделать это.
Я немного ошеломлен тем, что не так. Есть идеи? Было ли применено изменение к Symfony2, которое означает, что этот процесс изменился, и симуляция аутентификации HTTP теперь не работает или работает по-другому?