機能テストでHTTP認証をシミュレートすることができません私はsymfony.comに説明し、次の技術を使用しようとしている:。機能的にログインするユーザーを要求するコントローラをテストするための試みでhttp://symfony.com/doc/current/cookbook/testing/http_authentication.html をSymfony2の:
これまでのところ、私のログインフォームが動作しています。私はログインでき、Symfony2デバッグWebツールバーは私のユーザを認証済みとして表示しています。また、私はすでにログインプロセス自体のための機能テストを書いていますが、これは合格です。だから、今私は2つのシナリオで、私のログインが機能している。
他のコントローラのためにそのようなHTTP認証をシミュレートしようとしたときに私がいる唯一の問題は、次のとおりです。
$client = static::createClient(array(), array(
'PHP_AUTH_USER' => 'tester',
'PHP_AUTH_PW' => 'testpass',
));
私は私が私のログインページにリダイレクトされていますことを、$クライアントを検査することで見ることができます、私はこのような何かしようとした瞬間:
$crawler = $client->request('GET', '/');
は、私は、同様のブラウザを経由して、そのアカウントでログインすることができますよう、パスワードtestpassを持つユーザーテスターは、DBに存在することを知っています。
私はセキュリティコントローラのテストから次のコードを使用することができます。
$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認証シミュレーションが機能しないか、動作が異なることを意味しますか?私はHTTPを許可するようにいくつかのセキュリティ設定で私のconfig_test.ymlを変更しない限り、
がpublic function setUp()
{
// Perform user login.
$this->client = $this->createClient(array(), array('HTTP_HOST' => 'scire.test'));
$crawler = $this->client->request('GET', '/login');
$form = $crawler->selectButton('Login')->form();
$this->client->submit($form, array('_username' => 'tester', '_password' => 'tester'));
}
HTTP認証が、ここでは動作しません:それについて考える
全く同じことに問題があります。私はあなたの方法を使用してログインすることができましたが、別のページにアクセスしようとするたびに、再度ログインする必要があります。 – greg