メインコンテンツへスキップ
Auth0 Actionsのテスト・デバッグ方法は、実装段階によって異なります。 アクションを実装するときは、から個別にテストすることをお勧めします。準備が完了したら、エンドツーエンドのフローが想定どおりに動作するかをAuth0 Dashboardのテナントログで検証しましょう。

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

個々のアクションは、Actions Code Editorでテストできます。このエディターのテスト機能は、アクションに関連付けられたフローに従って、サンプルペイロードを使用してアクションへの呼び出しをシミュレーションします。個々のアクションをテストするには:
  1. [Auth0 Dashboard]>[Actions(アクション)]に移動し、編集するフローとアクションを選択します。
  2. アクションコードエディターを見つけて、サイドバーから [Test(テスト)] (再生アイコン)を選択します。異なるペイロードでの結果を分析するために、[Test(テスト)]サイドバーのペイロードを編集します。
  3. [Run(実行)] を選択します。
テスト結果には、アクションが実行したステップや、コンソールの出力、生じたエラー、アクションの実行に関する統計が表示されます。
Action Code Editorのテストモジュールのスクリーンショット
アクションをテストするには、Management APIのTest an Action(アクションのテスト) エンドポイントを使って、アクション関連のフローに対応したペイロードを提供する方法もあります。サンプルペイロードを取得するには、Actionsコードエディターのテスト機能を使用してアクションをテストします。

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

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

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

post-login(ログイン後)アクションの場合は、テナントのログインを試行することでエンドツーエンドログインフローを検証できます。
  1. [Auth0 Dashboard]>[Authentication(認証)]>[Authentication Profile(認証プロファイル)]に移動し、 [Try(試す)] を選択します。ウィンドウが開き、サンプルログインが表示されます。
  2. ログインフローを続行します。ログインフローは、設定されているアクションを実行します。
プロセスが完了するとリダイレクトが行われ、リダイレクト先のページにアプリケーションが受け取るユーザープロファイル属性、またはエラーメッセージとその内容が表示されます。

テナントログを分析する

フローに関連付けられたアクションがバインドされているトリガーが実行されるたびに、テナントログにアクション実行の詳細が含まれます。 テナントログのリストでは、アクションに関連するログを確認できます。以下の例では、Success Login(ログイン成功)のログタイプが、このテナントのpost-login(ログイン後)トリガーのアクションに関連付けられています。
アクション実行に関連したログを示す、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");
  }
};
テストファイルコード:
// 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"
  );
});

ベストプラクティス

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