私はSymfony2アプリケーションでいくつかの機能テストを行い、適切な役割を持つユーザだけがコントローラのアクションにアクセスできることを確認してコントローラのセキュリティをアサートしたいと思います。symfony2:テスト設定からユーザの資格を取得する
providers:
in_memory:
users:
basic: { password: basic, roles: ROLE_BASIC }
admin: { password: admin, roles: ROLE_ADMIN }
私は私が書くすべてのテストにこれらのユーザー(私は多くを書くことにします)ハードコードにしたくない:私は基本的な資格情報を使用して認証異なる役割を持つ2人のユーザーを設定しました。理想的には、コンテナから自分の設定で定義したユーザーの詳細を取得したいと考えています。これは可能ですか? I.私はこれをしたい
$crawler = $client->request('GET', '/inventory/index', array(), array(),
array(
'PHP_AUTH_USER' => 'admin',
'PHP_AUTH_PW' => 'admin'
));
:代わりにこれを行うの
// Get the user details from the container
$users = $this->container->get('something');
$user = $users['admin'];
$crawler = $client->request('GET', '/inventory/index', array(), array(),
array(
'PHP_AUTH_USER' => $user->getUsername(),
'PHP_AUTH_PW' => $user->getPassword()
));
ありがとうございます - 私はそのバンドルを試しました(私は実際にテストデータベースのキャッシュに使用しています)が、実際には私の問題を解決しません。これは、 'liip_functional_test.authentication'パラメータを使って設定ファイルのように認証するユーザを指定することができます。しかし、私はさまざまな役割を持つ多くの異なるユーザーからのリクエストを作成しようとしているので、問題は解決しません。理想的には、テストクラス内のすべてのユーザー資格情報にアクセスする必要があります。詳細を自分のバンドルのカスタム設定として複製します。 – Craig
@Craig:私の答えに行った更新を見てください。 – leek
私は各テストにオーバーヘッドを追加したくないので、私は望むよりも遅いので、フィクスチャを使わずにこれを達成することを望んでいました。それは実行可能な最後の手段ですが、私は@Florianによって提案されたYAMLのアプローチを試してみます。それがうまくいかない場合は、私は備品を探すでしょう。ありがとう! – Craig