Symfony2 인증 메커니즘을 통해 보안이 설정된 컨트롤러에 대한 기능 테스트를 작성하고 싶습니다. 나는 그것을 설명하는 튜토리얼을 많이 읽을 수는 있지만 불행하게도 그들 모두는 현재 Symfony2의 (2.0.7에 2.0.4 테스트) 버전Symfony2 유닛 테스트에서의 인증 처리
내가 지금까지했던 어떤 나를 위해 작동하지 않습니다
추가 config_test.yml에서 보안 설정
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
providers:
main:
users:
admin: { password: adminsmurf, roles: [ 'ROLE_USER' ] }
inventory: { password: inventorysmurf, roles: [ 'ROLE_ADMIN', 'ROLE_USER', 'ROLE_INVENTORY' ] }
andon: { password: andonsmurf, roles: [ 'ROLE_ADMIN', 'ROLE_ANDON' ] }
firewalls:
main:
pattern: /.*
http_basic:
realm: "Secured Area"
provider: main
logout: true
security: true
stateless: true
anonymous: true
단위 테스트
class DefaultControllerTest extends WebTestCase
{
public function testCorrectAuthentificationCredentials()
{
$client = static::createClient();
$crawler = $client->request('GET', '/inventory/index', array(), array(),
array(
'PHP_AUTH_USER' => 'admin',
'PHP_AUTH_PW' => 'adminsmurf'
));
$response = $client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
}
}
이 테스트는 실패합니다 (예상 200, 302 가져 오기). 아무도 내가 잘못하고있는 것을 도울 수 있습니까?
업데이트 16/12
나는 한 단계 더 얻었다. 내 일반 보안 파일에 양식 로그인을 사용하고 있습니다. Symfony는 방금 방화벽에 http_basic 로그인을 추가했습니다. 이것이 리디렉션 (302)의 이유입니다. 방금
form_login: false
을 테스트 보안 설정에 추가했습니다. 이제는 리디렉션이 없지만 결과적으로 401 상태 코드가 표시됩니다.
302는 리디렉션입니다. 어디로 리디렉션되었는지 확인할 수 있습니까? –
@kuba 로그인 양식으로 리디렉션됩니다 (양식 로그인은 내 앱 인증을위한 일반적인 방법입니다). – Timo
리디렉션 문제를 해결했지만 이제 상태 코드 401이 있습니다. – Timo