我想爲通過Symfony2身份驗證機制保護的控制器編寫功能測試。我看了很多教程描述它但不幸的是所有的人不適合我目前的Symfony2的版本(2.0.4測試2.0.7到)在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是重定向。你能檢查你重定向到哪裏嗎? – 2011-12-15 16:11:29