I持って、次のsecurity.yml:Symfony 3のテスト用にユーザプロバイダを無効にするにはどうすればよいですか?
security:
# http://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
providers:
in_memory:
memory: ~
bd_provider:
entity:
class: AppBundle:Usuario
property: email
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
form_login:
login_path: login
check_path: login
provider: bd_provider
logout:
path: /logout
target: /login
そして、私はこの方法でテストporpusesのために認証しています:
protected function createClientWithAuthentication()
{
/* @var $client Client */
$client = static::createClient();
/* @var $user UserInterface */
$user = $client->getContainer()->get('doctrine')->getRepository('AppBundle:Usuario')->find(5);
$firewallName = 'main';
$token = new UsernamePasswordToken($user, $user->getPassword(), $firewallName, $user->getRoles());
$session = $client->getContainer()->get('session');
$session->set('_security_' . $firewallName, serialize($token));
$session->save();
$cookie = new Cookie($session->getName(), $session->getId());
$client->getCookieJar()->set($cookie);
return $client;
}
しかし、私はin_memoryのように、テストのためのdiferentプロバイダを使用したいです。私がいたかのように
$user = new Usuario();
$user
->setUsername('[email protected]')
->setPassword('admin')
->setRole('ROLE_USER_ADMIN');
テストは、ログインページに私を送っ:だから、私はconfig_test.yml
security:
providers:
em_memoria:
memory:
users:
[email protected]:
password: senha
roles: 'ROLE_SUPER_ADMIN'
encoders:
AppBundle\Entity\Usuario: plaintext
firewalls:
main:
provider: em_memoria
を、以下のしかし、私は自分のコードを変更したときにこれにユーザーを組み立てることを追加しました間違ったユーザーを使用して私はここで何が欠けていますか?私は何かすべきことはありますか?
他の情報が必要な場合は、私に教えてください。私はここで説明します。
ありがとうございます。
定義は、サービスの定義は、または他の私は、次のエラーが表示され、同じファイルである必要があります.user_provider "を実際の定義" bd_provider "で置き換えます。 [Symfony \ Component \ DependencyInjection \ Exception \ ServiceNotFoundException] 存在しないサービス "bd_provider"を要求しました。 –
私はここでいくつかのコードを編集し、私は次のことを行いました:クラスTestUserProviderを作成し、ユーザーを返すカスタムプロバイダを実装しました。私のテストプロバイダは 'providers'リストの最初に指定されていますが、テストで成功して実行されますが、メインファイアウォールの下に' provider'キーを指定してもbd_providerをもう使用できません。 –