如何生成用于测试数据库的 Passport oauth_clients?
How to generate Passport oauth_clients for testing database?
我正在测试 api 使用 laravel 护照进行身份验证的端点。我正在编写一个功能测试来检查 oauth/token
是否可以 return 一个有效的 access_token。它在邮递员中工作正常,但我使用不同的数据库进行测试,所以当我 运行 测试时,我总是遇到 400 错误。虽然我能够测试所有经过身份验证的路由,但是当我想测试 api/login
或 oauth/token
端点时我被卡住了。我正在 运行ning artisan 命令为测试数据库安装通行证。如何获取客户端id和密码?
在测试用例中class
public function setUp(): void
{
parent::setUp();
Artisan::call('migrate', ['-vvv' => true]);
Artisan::call('passport:install', ['-vvv' => true]);
Artisan::call('db:seed', ['-vvv' => true]);
}
登录测试class
public function test_it_returns_a_valid_token_if_credentials_do_match()
{
$client = Passport::client();
$user = User::factory()->create([
'email' => $email = 'test@test.com',
'password' => $password = '12345678'
]);
$body = [
'client_id' => $client->id,
'client_secret' => $client->secret,
'username' => $email,
'password' => $password
];
$this->json('POST', '/oauth/token', $body)
->assertStatus(200);
}
此处$client = Passport::client()
return空。我没有找到任何解决方案来获取 oauth 客户端凭据。
实际上 $client = Passport::client();
没有 return 客户。
我找到了从 LoginTest 创建客户端的解决方案。
$user = User::factory()->create([
'email' => $email = 'test@test.com',
'password' => $password = '12345678'
]);
$client = ClientFactory::new()->asPasswordClient()->create(['user_id' => $user->id]);
$response = $this->json(
'POST', '/oauth/token',
[
'grant_type' => 'password',
'client_id' => $client->id,
'client_secret' => $client->secret,
'username' => $user->email,
'password' => $password,
]
)
->assertStatus(200);
我正在测试 api 使用 laravel 护照进行身份验证的端点。我正在编写一个功能测试来检查 oauth/token
是否可以 return 一个有效的 access_token。它在邮递员中工作正常,但我使用不同的数据库进行测试,所以当我 运行 测试时,我总是遇到 400 错误。虽然我能够测试所有经过身份验证的路由,但是当我想测试 api/login
或 oauth/token
端点时我被卡住了。我正在 运行ning artisan 命令为测试数据库安装通行证。如何获取客户端id和密码?
在测试用例中class
public function setUp(): void
{
parent::setUp();
Artisan::call('migrate', ['-vvv' => true]);
Artisan::call('passport:install', ['-vvv' => true]);
Artisan::call('db:seed', ['-vvv' => true]);
}
登录测试class
public function test_it_returns_a_valid_token_if_credentials_do_match()
{
$client = Passport::client();
$user = User::factory()->create([
'email' => $email = 'test@test.com',
'password' => $password = '12345678'
]);
$body = [
'client_id' => $client->id,
'client_secret' => $client->secret,
'username' => $email,
'password' => $password
];
$this->json('POST', '/oauth/token', $body)
->assertStatus(200);
}
此处$client = Passport::client()
return空。我没有找到任何解决方案来获取 oauth 客户端凭据。
实际上 $client = Passport::client();
没有 return 客户。
我找到了从 LoginTest 创建客户端的解决方案。
$user = User::factory()->create([
'email' => $email = 'test@test.com',
'password' => $password = '12345678'
]);
$client = ClientFactory::new()->asPasswordClient()->create(['user_id' => $user->id]);
$response = $this->json(
'POST', '/oauth/token',
[
'grant_type' => 'password',
'client_id' => $client->id,
'client_secret' => $client->secret,
'username' => $user->email,
'password' => $password,
]
)
->assertStatus(200);