2014-01-21 16 views
8

私は、symfony 2で書かれたHTTP APIを持っています。symfony 2コントローラのテストが認証ヘッダーを渡すことができません

Authorizationヘッダーを送信しようとすると、受信したヘッダーを記録するときにコントローラに受信されないことに気付きました。テストコントローラで

$client = self::createClient(); 
$client->insulate(); 

$headers = array(
    'Authorization' => "Bearer {$accessToken}", 
    'CONTENT_TYPE' => 'application/json', 
); 

$client->request('DELETE', "/auth", array(), array(), $headers); 

:テストコントローラで

print_r($request->headers); 

が出力:

Symfony\Component\HttpFoundation\HeaderBag Object 
(
    [headers:protected] => Array 
     (
      [host] => Array 
       (
        [0] => localhost 
       ) 

      [user-agent] => Array 
       (
        [0] => Symfony2 BrowserKit 
       ) 

      [accept] => Array 
       (
        [0] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
       ) 

      [accept-language] => Array 
       (
        [0] => en-us,en;q=0.5 
       ) 

      [accept-charset] => Array 
       (
        [0] => ISO-8859-1,utf-8;q=0.7,*;q=0.7 
       ) 

      [content-type] => Array 
       (
        [0] => application/json 
       ) 

      [x-php-ob-level] => Array 
       (
        [0] => 0 
       ) 

     ) 

    [cacheControl:protected] => Array 
     (
     ) 

) 

どのように私はAuthorizationヘッダに渡すことができますか?

答えて

16

symfony 2では、$_SERVERのドキュメント[1]で概説されているヘッダーを使用する必要があるようです。

これは、ドキュメントから非常に明確ではありませんでしたが、私の場合、私は次の操作を実行する必要がありました:

$headers = array(
    'HTTP_AUTHORIZATION' => "Bearer {$accessToken}", 
    'CONTENT_TYPE' => 'application/json', 
); 

$client->request('DELETE', "/auth", array(), array(), $headers); 

質問で使用HTTP_AUTHORIZATIONAuthorization対ヘッダに注意してください。これは私の問題を解決しました。

[1]今、誰もがテストクライアントを介してカスタムヘッダーを送信する方法を知っている、私のために働いた

+0

http://www.php.net/manual/en/reserved.variables.server.php?私のアプリケーションがAPIキーを送信していて、転送していません。 –

+0

ロードバランサやその他のリバースプロキシの背後にいますか? – Luke

+1

カスタムヘッダー:http://stackoverflow.com/questions/11549672/symfony-functional-test-custom-headers-not-passing-through –

関連する問題