首页 > 解决方案 > 如何在测试中使用 Laravel Passport 生成的客户端 ID 和客户端密码?

问题描述

我在 TDD 下工作,我正在使用带有 Laravel Passport 的 Password Grant Tokens 进行测试以获取令牌,我已经手动进行了测试(发送带有客户端 ID、客户端密码、用户和密码的 curl)到端点,它的工作原理!它返回给我一个令牌,我正在使用由php artisan passport:install --uuids命令生成的客户端 ID 和客户端密码(我已经进行了所有先前的配置)

但是现在我想编写测试来生成该令牌,我有以下代码:


public function test_request_token() {

        $email = "user@test.com";
        $password = "123456";

        // Create the user
        $this->post("api/register", [
            "email" => $email,
            "password" => $password,
            "password_confirmation" => $password
        ]);

        // Ask for a token
        $response = $this->post("oauth/token", [
            'grant_type' => 'password',
            'client_id' => '92d16637-6c65-42c4-9ba2-b940d8dc3d0b',
            'client_secret' => 'Sx20PJJkmED46X2HzvhoLPHeXnoE7sNp6hNqTdBw',
            'username' => $email,
            'password' => $password,
            'scope' => ''
        ]);

        dd($response);

        $response->assertStatus(200);

    }

但它不起作用,这些凭据(客户端 ID 和客户端密码)是php artisan passport:install --uuids命令给我的凭据(并且与我用来使用有效的 curl 进行手动测试的凭据相同)

我在dd()那里放了一个函数来查看发生了什么,并且错误是Client authentication failed所以我认为测试没有读取 Laravel 生成的凭据,我该如何使用这些凭据?

我试图从POST /oauth/clients端点获取凭据,但它说它需要用户登录,但我不想创建用户,我的应用程序不允许创建客户端,我的应用程序只需要一个客户端,并且该客户端是由 Laravel Passport 生成的,那么我该怎么做呢?

标签: phplaraveltestingoauth-2.0client

解决方案


推荐阅读