php - Laravel Sanctum 测试
问题描述
我正在尝试测试我的 API 身份验证方法,因此我创建了 ConfirmPasswordControllerTest :
/** @test */
public function confirm_password_confirms()
{
$user = factory(User::class)->create();
$data = ['password' => 'password'];
$response = $this->actingAs($user)
->post('api/password-confirmation', $data);
dd($response);
$response->assertStatus(200);
}
我使用 dd() 检查响应中的错误消息,我一直看到:
RuntimeException: Session store not set on request.
我不明白这里发生了什么,我使用的是 Laravel Sanctum,所以我的 api 路由有 auth:sanctum 中间件。
编辑:如果我在帖子中不包含任何数据,例如:
$response = $this->postJson('api/password-confirmation');
测试按预期运行:
{"message":"The given data was invalid.","errors":{"password":["The password field is required."]}}
编辑 2:我调试应用程序,我发现问题出在 PasswordConfirmController 上:
public function confirm(Request $request)
{
$request->validate($this->rules(), $this->validationErrorMessages());
$this->resetPasswordConfirmationTimeout($request); //HERE
return $request->wantsJson()
? new Response('', 204)
: redirect()->intended($this->redirectPath());
}
它调用 resetPasswordConfirmationTimeout() 并且此方法需要使用会话:
protected function resetPasswordConfirmationTimeout(Request $request)
{
$request->session()->put('auth.password_confirmed_at', time());
}
解决方案
推荐阅读
- tcl - 使用 glob 将变量设置为文件名
- python - 多标签计算类权重 - 不可散列的类型
- javascript - Google api 密钥不起作用,出现错误“糟糕!出了点问题。”
- javascript - 如何遍历一个数字数组以查看哪些数字与另一个数字相关?
- css - 另一个div顶部的css绝对位置
- python - 获取ValueError:输入字符串和数字数据集时无法将字符串转换为浮点数:“'H4'”
- c++ - 尝试使用 mysql++ 库进行编译时,不推荐使用类 std::auto_ptr'
- node.js - 如何在同一个应用中调用多个passport-jwt策略
- ios - 禁用 AVSpeechSyntesizer/AVSpeechUtterance 的自动日期检测
- html - CSS正在以不同的方式定位具有相同类的两个元素