認証によるテスト

アプリケーションで認証ミドルウェアがアクティブになっている場合、統合テストで認証資格情報をシミュレートする必要があります。 使用している認証の種類に基づいて、資格情報を異なる方法でシミュレートする必要があります。 一般的な認証のタイプをいくつか見てみましょう。

With the authentication middleware active in your application you’ll need to simulate authentication credentials in your integration tests. Based on the type of authentication you’re using you will need to simulate credentials differently. Lets review a few more common types of authentication.

セッションベースの認証

セッションベースの認証では、通常セッションで見つかるユーザーデータをシミュレートする必要があります。 テストケースでは、「ログイン」できるヘルパーメソッドを定義できます:

Session based authentication requires simulating the User data that normally would be found in the session. In your test cases you can define a helper method that lets you ‘login’:
protected function login($userId = 1)
{
    $users = TableRegistry::get('Users');
    $user = $users->get($userId);
    $this->session(['Auth' => $user]);
}

統合テストでは、login()を使用して、ログインしているユーザーをシミュレートできます:

In your integration tests you can use login() to simulate a user being logged in:
public function testGet()
{
    $this->login();
    $this->get('/bookmarks/1');
    $this->assertResponseOk();
}

トークンベースの認証

トークンベースの認証では、Authorizationヘッダーをシミュレートする必要があります。 有効なトークンを取得したら、リクエストをセットアップします:

With token based authentication you need to simulate the Authorization header. After getting valid token setup the request:
public function testGet()
{
    $token = $this->getToken();
    $this->configRequest([
        'headers' => ['Authorization' => 'Bearer ' . $token]
    ]);
    $this->get('/api/bookmarks');
    $this->assertResponseOk();
}