Skip to main content

Auth0 Actions ユニットテスト

Actions NPM (@auth0/actions) パッケージを使用すると、外部プロジェクトでTypeScriptによる開発が可能になり、開発者はベストプラクティスに従いながら、TypeScriptの型定義に基づいてユニットテストを改善できます。

仕組み

インストールとインポートのガイドラインについては、How Actions NPM works を参照してください。 Action の単体テストを行うには、Action 関数が受け取る event オブジェクトと api オブジェクトをモックする必要があります。これらのモックは、auth0/actions に含まれる TypeScript の定義を使って作成できるため、テストで本番環境を正確に再現できます。モックや機能のテストを管理するには、Jest のようなテストフレームワークが適しています。 単体テストは、ローカル環境、バージョン管理環境、または CI/CD プロセスで実行できるため、Auth0 テナントに影響する変更を加える前の品質保証と検証を全体として強化できます。

以下の例では、必要なオブジェクトをモック化して、さまざまなシナリオを検証します。
これらの例では Jest (https://www.npmjs.com/package/jest) を使用していますが、テストライブラリはどれでも使用できます。

設定

package.json では、Action の作成時に IntelliSense の支援を受けられるよう、開発用の依存関係を定義します。

事前ユーザー登録時のアクセス制御とユーザーメタデータの設定

次の Action の例では、ユーザーのメールアドレスが禁止されたメールドメインかどうかを確認し、一致した場合は api.access.deny() を呼び出します。一致しない場合は、Custom Prompts の追加フィールドで氏名が指定されているかを確認し、指定されていればその氏名をユーザープロファイルの user_metadata に設定します。指定されていない場合は、Universal Login にバリデーションエラーを返します。
このユニットテストでは、event オブジェクトと api オブジェクトをモック化して、コードカバレッジを最大化するための検証をいくつか行います。

カスタムメールプロバイダーとHTTPリクエスト

次のActionの例では、HTTPリクエストを使用して外部サービスにメッセージを送信し、リクエストエラーが発生した場合は通知を破棄するように処理しています。外部サービスのURLと認証用APIキーにはsecretsを使用します。
このUnit Testでは、コードカバレッジを最大化するために、fetch関数に加えてeventオブジェクトとapiオブジェクトをモック化し、いくつかの検証を行います。
@auth0/actions の詳細は、https://www.npmjs.com/package/@auth0/actions を参照してください。 Actions の作成方法について詳しくは、初めての Action を作成する をご覧ください。