如何用auth.basic中间件编写laravel API路由测试

slmsl1lt  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(138)

我的laravel项目有一个通过auth的API路由。基本中间件是控制器中已验证用户的id。当我在postman中调用它时,它运行良好,当用户名或密码不正确时,我得到401,但在从DuskTestCase扩展的laravel APITest中,不进行验证,因此当用户信息不正确时,我得到500而不是401。然而,通过正确的信息,我有同样的错误,因为auth()是空的。
下面写的,哪一个错了?
api.php路径:

Route::get('/xxxxxx/xxxxxx/xxxxxxx', 'xxxxx@xxxx')->middleware('auth.basic');

APIT试验:

$response = $this->withHeaders(['Authorization' => 'Basic '. base64_encode("{$username}:{$password}")])->get("/xxxxxx/xxxxxx/xxxxxxx");
cuxqih21

cuxqih211#

您可以在测试中使用actingAs()方法进行身份验证。
来自文档的示例:

public function testApplication()
{
    $user = factory(App\User::class)->create();

    $this->actingAs($user)
         ->withSession(['foo' => 'bar'])
         ->visit('/')
         ->see('Hello, '.$user->name);
}

另一个可用于API的示例:

$user = User::factory()->create();

    $response = $this->actingAs($user)->json('GET', $this->uri);

    $response->assertOk();

如需了解更多信息:www.example.comhttps://laravel.com/docs/5.1/testing#sessions-and-authentication

相关问题