私はfosUserBundleでサイトを設定しようとしています。私は単体テストを書く必要がありますが、私はそれらを使って正しく動作するように認証を得ることができません。私は運がないいくつかの方法を試しました。FOSUserBundleユニットテスト
私が頼りにすることができる標準的なログインを行うセキュリティ設定のアプローチ1チェーンプロバイダ。私はこれを行うと作品のみの認証は方法2 - 私は
security: encoders: "FOS\UserBundle\Model\UserInterface": plaintext "Symfony\Component\Security\Core\User\User": plaintext providers: chain_provider: providers: [in_memory, fos_userbundle] in_memory: users: admin: { password: admin, roles: [ 'ROLE_ADMIN' ] } fos_userbundle: id: fos_user.user_manager firewalls: main: pattern: ^/ form_login: provider: fos_userbundle login_path:/ csrf_provider: form.csrf_provider default_target_path: /media logout: true anonymous: true http_basic: provider: in_memory
のsecurity.yml fosUserBundle
によって作成されたユーザを管理者ユーザでログインすることはできませんが、意味in_memoryプロバイダである私は、ユーザーが作成しました私のユニットテストのセットアップで。しかし、この方法では、作成したユーザーでログインすることはできません。ユーザーの確認は必要ありません。
public function setUp() { $kernel = static::createKernel(); $this->repo = $kernel->boot(); $this->repo = $kernel->getContainer(); $userManager = $this->repo->get('fos_user.user_manager'); $email = "testing".(string) self::newRandomNumber()."@test.com"; $un = "test".(string) self::newRandomNumber(); $fn = "testin"; $ln = "laster"; $pwd = "passworD1"; $user = $userManager->createUser(); $user->setEmail($email); $user->setUsername($un); $user->setFirstName($fn); $user->setLastName($ln); $user->setPlainPassword($pwd); $user->setBimStaff(True); // Persist the user to the database $userManager->updateUser($user); $this->user = $user; $this->client = static::createClient(); $crawler = $this->client->request('GET', '/'); $form = $crawler->selectButton('Login')->form(); // set some values $un = 'Lucas'.self::newRandomNumber(); $form['_username'] = $un; $form['_password'] = $pwd; // submit the form $crawler = $this->client->submit($form); print_r($this->client->getResponse()); $this->client->followRedirects(); }
フォームとhttp基本認証の両方でログインしようとしましたが、いずれも動作していないようです。
いずれかのアドバイスをお持ちですか?
おかげで、 コーリー
です:あなたがフルに関わる機能をテストしているとして、それは、機能テストですユニットテストは、他のクラスから分離された1つのクラスをテストすることです。 –