メインコンテンツへスキップ

Auth0 Actions Unit Test

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 キーにはシークレットを使用します。
ユニットテストでは、コード カバレッジを最大化するために、fetch 関数に加えて event オブジェクトと api オブジェクトをモック化し、いくつかの検証を行います。
@auth0/actions の詳細については、https://www.npmjs.com/package/@auth0/actions を参照してください。 Actions の作成方法について詳しくは、初めての Action を作成する を参照してください。