Symfony 2 Controller 测试无法通过授权 header

标签 symfony functional-testing

我有一个用 Symfony 2 编写的 HTTP API,我正在为它编写一些功能测试。

我注意到当我尝试发送 Authorization当我记录收到的 header 时, Controller 中没有收到 header 。

在测试 Controller 中:

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

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

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

在测试的 Controller 中:
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标题?

最佳答案

对于 Symfony 2,您似乎需要使用 $_SERVER 中概述的标题。文档 [1]。

这在文档中不是很清楚,但就我而言,我必须执行以下操作:

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

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

注意 HTTP_AUTHORIZATION对比 Authorization问题中使用的标题。这为我解决了这个问题。

[1] http://www.php.net/manual/en/reserved.variables.server.php

关于Symfony 2 Controller 测试无法通过授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21253376/

相关文章:

java - 寻找一本涵盖单元、功能、集成和场景测试的综合 Java 测试书籍

dart - 在 Dart 单元测试中访问 DOM

php - 用户名更改后 symfony 身份验证问题

mysql - Symfony 2 - 一份源代码,多个数据库

iphone - 是否有无需越狱即可自动测试 iPhone 的工具? (UI 自动化除外)

testing - 如何在 Selenium IDE 中创建跨域测试?

python - 如何避免在 Django 1.6 的功能测试中多次创建管理员?

windows - 如何在Windows下的Symfony2中使用SCSS过滤器?

php - Symfony,getters 和 setters 与魔术方法

symfony - 数组属性的等效 IN 子句