如何使用 phpunit 和 Liip 传递不记名令牌以测试 API

How to pass bearer token to test API using phpunit and Liip

这就是我正在做的

我先打电话获取令牌

$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

谢谢

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

您应该为此使用 HTTP_AUTHORIZATION header。试试上面的代码。此外,您不需要 header 的嵌套数组。

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

不记名 (space) 令牌的其余部分。

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