アクションをテストする

Auth0 Actionsのテスト・デバッグ方法は、実装段階によって異なります。

アクションを実装するときは、Auth0 Dashboardから個別にテストすることをお勧めします。準備が完了したら、エンドツーエンドのフローが想定どおりに動作するかをAuth0 Dashboardのテナントログで検証しましょう。

個別のアクションをテストする

個々のアクションは、Actions Code Editorでテストできます。このエディターのテスト機能は、アクションに関連付けられたフローに従って、サンプルペイロードを使用してアクションへの呼び出しをシミュレーションします。個々のアクションをテストするには:

  1. [Auth0 Dashboard]>[Actions(アクション)]に移動し、編集するフローとアクションを選択します。

  2. アクションコードエディターを見つけて、サイドバーから[Test(テスト)](再生アイコン)を選択します。異なるペイロードでの結果を分析するために、[Test(テスト)]サイドバーのペイロードを編集します。

  3. [Run(実行)]を選択します。

テスト結果には、アクションが実行したステップや、コンソールの出力、生じたエラー、アクションの実行に関する統計が表示されます。

Action Code Editorのテストモジュールのスクリーンショット

デプロイしたアクションをデバッグする

アクションのテストが終わったら、デプロイしてその実行を観察しましょう。アクションのデプロイとフローへの追加が終わっていれば(アクションをフローにアタッチする方法については、「初めてのアクションを作成する」の「アクションをフローにアタッチする」セクションを参照)、ライブアクションを数ステップでデバッグできます。

エンドツーエンドのログインフローを検証する

ログイン後アクションの場合は、テナントのログインを試行することでエンドツーエンドログインフローを検証できます。

  1. [Auth0 Dashboard]>[Authentication(認証)]>[Authentication Profile(認証プロファイル)]に移動し、[Try(試す)]を選択します。ウィンドウが開き、サンプルログインが表示されます。

  2. ログインフローを続行します。ログインフローは、設定されているアクションを実行します。

プロセスが完了するとリダイレクトが行われ、リダイレクト先のページにアプリケーションが受け取るユーザープロファイル属性、またはエラーメッセージとその内容が表示されます。

テナントログを分析する

フローに関連付けられたアクションがバインドされているトリガーが実行されるたびに、テナントログにアクション実行の詳細が含まれます。

テナントログのリストでは、アクションに関連するログを確認できます。以下の例では、ログイン成功のログタイプが、このテナントのログイン後トリガーのアクションに関連付けられています。

アクション実行に関連したログを示す、Auth0 Dashboardのテナントログリストのスクリーンショット

アクションに関連付けられるログタイプの例としては、次のようなものが挙げられます:

名前 トリガー
正常なログイン post-login
失敗したログイン post-login
正常な交換 post-login
失敗した交換 post-login
正常なパスワード変更 post-change-password
失敗したパスワード変更 post-change-password
正常なサインアップ pre-user-registration
失敗したサインアップ pre-user-registration
正常な交換 credentials-exchange
失敗した交換 credentials-exchange

アクション実行に関する詳細を表示するには、アクション実行に関連しているログを選択してから、[Action Details(アクションの詳細)]ビューを選択します。[Action Details(アクションの詳細)]には、実行の統計、コンソールの出力、エラーが表示されます。

アクションのテストに関連した個別ログのスクリーンショット。

アクションのユニットテスト

Auth0 Actionsのユニットテストを行うには、アクション関数に渡されるイベントとAPIをモックします。アクションは、バージョン制御またはローカルディレクトリに配置でき、Jestなどのツールを使って自動的にテストできます。次の例では、Login/Post LoginトリガーとJestを使用してモックとテストを行います。

アクションコード:

// action.js

exports.onExecutePostLogin = async (event, api) => {
  const namespace = "https://my-app.example.com";
  if (event.authorization) {
    api.idToken.setCustomClaim(`${namespace}/favorite_color`, "pink");
  }
};

Was this helpful?

/

テストファイルコード:

// action.spec.js

const { onExecutePostLogin } = require("./action.js");
test("sets favorite_color ID token claim to pink", async () => {
  const namespace = "https://my-app.example.com";
  const mockFunction = jest.fn();
  const mockApi = { idToken: { setCustomClaim: mockFunction } };
  const mockEvent = {authorization: {}};

  await onExecutePostLogin(mockEvent, mockApi);
  expect(mockFunction).toBeCalledWith(
    `${namespace}/favorite_color`,
    "pink"
  );
});

Was this helpful?

/

ベストプラクティス

Auth0でアクションを構築する場合は、環境ごとに専用のAuth0テナントを作成することをお勧めします。そうすれば、運用環境のユーザーベースをその他の環境から隔離できるだけでなく、環境ごとに別々の管理者を設定できます(たとえば、エンジニアが運用設定へのアクセス権を持たない場合など)。