如何使用CSRF令牌测试Laravel/Sanctum端点



我有一个连接到子域上的SPA的无头laravel实例。作为我的第一个测试,当我尝试在没有登录的情况下从api中检索用户数据时,我希望看到401

Route::middleware('auth:sanctum')->get('/user', 'UserAccountController@get_profile');

我知道在用户成功连接到应用程序之前需要一个CSRF令牌,但我不确定如何将其包括在我的测试过程中,如下所示

public function testExample()
{
$response = $this->get('/api/user');
$response->assertStatus(401); //  getting a 500 instead
}

在文件的圣地测试部分,我看到了以下方法:

Sanctum::actingAs( factory(User::class)->create(), ['view-tasks'] );

对我来说,这里的问题是,我不想尝试以用户身份加载此路径,我想知道如何模拟一台拥有令牌但未登录的客户端机器。这可能吗?

根据"尼克;在laravel slack聊天中,我需要将请求更改为以下内容:

public function testExample()
{
$response = $this->getJson('/api/user');
$response->assertStatus(401);
}

get()假设您正在执行一个正常的请求,而getJSON()处理必要的标头设置。这个电话以我在申请中看到的相同方式返回401。

此外,以下内容可用于测试假设的JSON响应

$response->assertJson([
"message" => "User Unauthorized"
]);

最新更新