我的OAuth2上有Auth代理。使用以下代码:
public function retrieveToken($username, $password, $scopes = ''){
// ...
$client = new Client();
$result = $client->post(url('/oauth/token'),[
'form_params' => [
'grant_type' => 'password',
'client_id' => "CLIENT_ID",
'client_secret' => "SECRET",
'username' => $username,
'password' => $password,
'scope' => $scopes
],
'timeout' => 5,
"http_errors" => true,
]);
// ...
}
我想测试一下这个方法。在这种情况下,我在数据库事务中创建用户。并调用我的auth端点,它使用auth proxy将请求重定向到OAuth2。
use DatabaseTransactions;
// ...
public function login(){
$user = factory(User::class)->create();
$response = $this->post('/login',[
"username" => $user->email,
"password" => "secret",
]);
$response
->assertSuccessful();
}
但每次我收到401错误,因为我的用户对OAuth2不可见。对于存在于数据库中的用户,它正在工作,但在事务中却没有。
这个问题有什么解决方案吗?或者任何想法它为什么这样工作?
答案 0 :(得分:1)
Laravel有一个帮助程序来测试名为actingAs
的身份验证:
您还可以通过将保护名称作为第二个参数传递给actsAs方法来指定应该使用哪个保护来验证给定用户:
$this->actingAs($user, 'api')
关于测试API和身份验证的