Как сделать функциональные тесты, которые требуют аутентификации, в Symfony 2? - PullRequest
6 голосов
/ 18 июля 2011

Я не смог найти никакой документации по этому поводу.

Я использую объект client, чтобы отправить запрос в / login, заполнить форму и отправить ее. Это работает нормально, но я получаю ответ 302 обратно / login, как если бы учетные данные были неправильными.

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

Есть мысли?

Редактировать: вот код:

    // Go to login page
    $client = $this->createClient();
    $crawler = $client->request('GET', '/login');
    $this->assertTrue($crawler->filter('html:contains("Username")')->count() > 0);

    // Fill in the form and submit it
    $form = $crawler->selectButton('login')->form();
    $form['_username'] = 'admin';
    $form['_password'] = 'admin';
    $client->submit($form);
    $this->assertEquals(302,$client->getResponse()->getStatusCode());
    $this->assertFalse($client->getResponse()->isRedirect('http://localhost/login'));

Последнее утверждение не удалось

Ответы [ 2 ]

2 голосов
/ 21 июля 2011

Вы должны создать новый firewal, используя базовую аутентификацию http:

security:
    ...
    firewalls:
        functional_test:
            pattern: /secure/.*
            stateless: true
            http_basic:
                provider: provider_name
    ...

Затем создайте клиента следующим образом:

$client = $this->createClient(array(), array(
    'PHP_AUTH_USER' => 'username',
    'PHP_AUTH_PW' => 'password',
));

Удачного кодирования!

0 голосов
/ 15 июня 2013

Не далеко официальная документация включает статью Как имитировать аутентификацию с токеном в функциональном тесте . Может быть, это кому-то помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...