기본 인증을 사용하여 보안 설정되었으며 보안 컨텍스트에서 사용자를 검색해야하는 API 호출 메서드를 테스트하려고합니다.테스트 환경의 보안 컨텍스트에서 사용자를 가져올 수 없습니다.
내 config_test.yml 파일 (I 테스트 ENV 용 메모리 내장 데이터베이스를 사용하고 있습니다) :
imports:
- { resource: config_dev.yml }
doctrine:
dbal:
driver: pdo_sqlite
path: :memory:
memory: true
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
framework:
test: ~
session: ~
profiler:
enabled: false
web_profiler:
toolbar: false
intercept_redirects: false
swiftmailer:
disable_delivery: true
다음과 같이 내가 클라이언트를 인스턴스화 테스트를 만들었습니다
$options = array(
'environment' => 'test',
'debug' => true,
);
$this->client = static::createClient($options);
시험은 다음과 같습니다
public function testProfileAction()
{
$mockUser = new User();
$mockUser->setUsername("user");
$mockUser->setEmail("[email protected]");
$mockUser->setName("User");
$mockUser->setSurname("User");
$mockUser->setPlainPassword("1234567890");
$this->em->persist($mockUser);
$this->em->flush();
$crawler = $this->client->request('GET', '/api/1/user/profile', array(), array(), array(
'PHP_AUTH_USER' => 'user',
'PHP_AUTH_PW' => '1234567890',
));
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
}
그리고 그 방법은 보안 컨텍스트에서 사용자를 얻을 필요가있다.
$user = $this->get('security.context')->getToken()->getUser();
그러나 테스트를 실행하면 항상 200 대신 401이됩니다. 메소드에서 $ user 변수를 항상 덤프하는 것은 항상 null입니다.
Symfony 2.2와 FOSUserBundle을 사용하고 있습니다.
미리 감사드립니다.