1

認証が適切に機能していることを検証する必要があるため、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を行う必要があります。

アイデア?

4

0 に答える 0