Я хочу написать функциональные тесты для контроллеров, которые защищены с помощью механизмов аутентификации Symfony2. Я прочитал много руководств с описанием его, но, к сожалению, все они не работают для меня с текущей версией Symfony2 (проверено 2.0.4 до 2.0.7)Обработка аутентификации в Symfony2 Unit-Tests
То, что я сделал до сих пор:
Добавление параметры безопасности в config_test.yml
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
providers:
main:
users:
admin: { password: adminsmurf, roles: [ 'ROLE_USER' ] }
inventory: { password: inventorysmurf, roles: [ 'ROLE_ADMIN', 'ROLE_USER', 'ROLE_INVENTORY' ] }
andon: { password: andonsmurf, roles: [ 'ROLE_ADMIN', 'ROLE_ANDON' ] }
firewalls:
main:
pattern: /.*
http_basic:
realm: "Secured Area"
provider: main
logout: true
security: true
stateless: true
anonymous: true
Unit-Test
class DefaultControllerTest extends WebTestCase
{
public function testCorrectAuthentificationCredentials()
{
$client = static::createClient();
$crawler = $client->request('GET', '/inventory/index', array(), array(),
array(
'PHP_AUTH_USER' => 'admin',
'PHP_AUTH_PW' => 'adminsmurf'
));
$response = $client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
}
}
Этот тест не прошел (ожидается 200, получите 302). Может ли кто-нибудь помочь, что я делаю неправильно?
Update 16/12
я получил еще один шаг вперед. Поскольку я использую логин формы в моем обычном файле безопасности. Symfony просто добавила http_basic login в брандмауэр. Это стало причиной перенаправления (302). Я только что добавил
form_login: false
к настройкам безопасности тестирования. Теперь нет перенаправления, но в результате получается код состояния 401.
302 является переадресацией. Не могли бы вы проверить, куда вы перенаправлены? –
@kuba - это перенаправление на форму входа в систему (вход в систему - это обычный способ аутентификации в моем приложении). – Timo
Я решил проблему с перенаправлением, но теперь у меня есть код состояния 401 – Timo