認証が適切に機能していることを検証する必要があるため、302 ではなく 401 を検索する現在のテストを変更すると考えました。私が書いた内容は次のとおりです。
public function it_should_not_let_you_access_the_company_end_point_when_not_logged_in() {
$response = $this->get('api/v1/company/', [],[],[],['Content-Type' => 'application/json']);
dd($response->response);
$this->assertEquals('302', $response->getStatusCode());
}
コンテンツ タイプは json であるため、応答タイプは ajax である必要がありますが、次のようになります。
Illuminate\Http\RedirectResponse {#1066
#request: Illuminate\Http\Request {#963
#json: null
#userResolver: Closure {#945
class: "Illuminate\Auth\AuthServiceProvider"
this: Illuminate\Auth\AuthServiceProvider {#68 …}
use: array:1 [
応答オブジェクトのダンプに表示されるものです。
認証ミドルウェアは次のように設定されています。
public function handle($request, Closure $next)
{
if ($this->auth->guest())
{
if ($request->ajax())
{
return response('Unauthorized.', 401);
}
return redirect()->guest('auth/login');
}
return $next($request);
}
しかし、$request->ajax()
戻り値は false です。私はそれが真実であり、代わりに401を行う必要があります。
アイデア?