如何使用phpunit和Liip传递承载令牌以测试API

时间:2019-04-08 08:15:22

标签: php symfony phpunit liipfunctionaltestbundle

这就是我在做的

我第一次打电话来获取令牌

$client->request('POST', '/api/login_check', [], [],
        ['CONTENT_TYPE' => 'application/json'],
        json_encode(
            [
                "username" => $user->getUsername(),
                "password" => 'password',
            ]
        )
    );

    $response = $client->getResponse();
    return json_decode($response->getContent())->token;

然后再使用一个

        $client->request('GET', '/api/my_endpoint', [], [], [
            'headers' => [
                'Authorization' => $token
            ]
        ]);

$ token是有效的令牌(使用邮递员进行了测试),例如“ Bearer SUPERLONGSTRING”,但我收到了错误消息

JWT Token not found

谢谢

2 个答案:

答案 0 :(得分:1)

 $client->request('GET', '/api/my_endpoint', [], [], [
                 'HTTP_AUTHORIZATION' => "{$token}",
                 'CONTENT_TYPE' => 'application/ld+json',
                 'HTTP_ACCEPT' => 'application/ld+json'
        ]);

您应该使用HTTP_AUTHORIZATION标头。尝试上面的代码。另外,您也不需要标题的嵌套数组。

此外,由于我们看不到令牌的格式,因此请记住,承载格式为:

将令牌的其余部分承载(空格)。

答案 1 :(得分:0)

    $client->request('GET', '/api/my_endpoint', [], [], [
        'headers' => [
            'Authorization' => 'bearer '.$token
        ]
    ]);