ルール単体テストパッケージ

機能

関数説明
アサート失敗(pr) Promise が「許可が拒否されました」エラーで拒否されることをアサートします。セキュリティ ルールによって拒否される特定のリクエストをアサートする場合に便利です。以下の例を参照してください。この関数は、Database、Firestore、Storage JS SDK からの権限拒否エラーを認識します。
アサート成功(pr) Promise が「許可が拒否されました」エラーで拒否されることをアサートします。これは、渡された Promise をそのまま返す no-op 関数ですが、特定のリクエストが成功する必要がある (ルールで許可されているなど) ことを強調するために、テスト コードで文書化する目的で使用できます。
初期化TestEnvironment(構成)ルール単体テスト用のテスト環境を初期化します。テスト設定のために最初にこの関数を呼び出します。エミュレータを実行する必要があります。この関数は、環境変数を介して、またはホストとポートが指定されていない場合は Firebase エミュレータ ハブを介して、これらのエミュレータを検出しようとします。テストに使用するエミュレータにはセキュリティ ルールを指定することを強くお勧めします。以下の最小限の例を参照してください。
withFunctionTriggersDisabled(fn)バックグラウンドの Cloud Functions トリガーを無効にしてセットアップ関数を実行します。これを使用すると、ローカルでエミュレートされた Cloud Functions をトリガーせずに、Realtime Database または Cloud Firestore エミュレータにデータをインポートできます。この方法は、Firebase CLI バージョン 8.13.0 以降でのみ機能します。このオーバーロードは、エミュレータ ハブの host:port が環境変数 FIREBASE_EMULATOR_HUB で指定されている場合にのみ機能します。
withFunctionTriggersDisabled(ハブ、fn)バックグラウンドの Cloud Functions トリガーを無効にしてセットアップ関数を実行します。これを使用すると、ローカルでエミュレートされた Cloud Functions をトリガーせずに、Realtime Database または Cloud Firestore エミュレータにデータをインポートできます。この方法は、Firebase CLI バージョン 8.13.0 以降でのみ機能します。このオーバーロードでホストとポートが指定されているエミュレーター ハブが実行されている必要があります。

インターフェース

インターフェース説明
ホストとポートエミュレータのホスト名とポート番号を含むオブジェクト。
ルールテストコンテキストクライアントを表すテスト コンテキスト。ルールの単体テストのためにエミュレータにアクセスするために使用できます。
ルールテスト環境ルール単体テスト環境を制御するために使用されるオブジェクト。さまざまな認証状況用の RulesTestContext を作成するために使用できます。
テスト環境構成エミュレータを含む単体テスト環境の構成。

タイプエイリアス

タイプエイリアス説明
エミュレータ構成特定のエミュレータの構成。
トークンオプション開発者指定のカスタム クレームや Firebase Auth トークン ペイロードのオプションのオーバーライドなど、テストに使用するモック ユーザー トークンのオプションが追加されました。

アサート失敗()

Promise が「許可が拒否されました」エラーで拒否されることをアサートします。

セキュリティ ルールによって拒否される特定のリクエストをアサートする場合に便利です。以下の例を参照してください。この関数は、Database、Firestore、Storage JS SDK からの権限拒否エラーを認識します。

サイン:

export declare function assertFails(pr: Promise<any>): Promise<any>;

パラメーター

パラメータタイプ説明
広報約束<任意>主張される約束

戻り値:

約束<任意>

pr が「許可が拒否されました」で拒否された場合に履行される Promise。 pr が他のエラーで拒否された場合、または解決された場合、返された Promise は拒否されます。

const unauthed = testEnv.unauthenticatedContext();
await assertFails(getDoc(unauthed.firestore(), '/private/doc'), { ... });

assertSucceeds()

成功すると約束します。

これは、渡された Promise をそのまま返す no-op 関数ですが、特定のリクエストが成功する必要がある (ルールで許可されているなど) ことを強調するために、テスト コードで文書化する目的で使用できます。

サイン:

export declare function assertSucceeds<T>(pr: Promise<T>): Promise<T>;

パラメーター

パラメータタイプ説明
広報約束<T>

戻り値:

約束<T>

const alice = testEnv.authenticatedContext('alice');
await assertSucceeds(getDoc(alice.firestore(), '/doc/readable/by/alice'), { ... });

初期化TestEnvironment()

ルール単体テスト用のテスト環境を初期化します。テスト設定のために最初にこの関数を呼び出します。

エミュレータを実行する必要があります。この関数は、環境変数を介して、またはホストとポートが指定されていない場合は Firebase エミュレータ ハブを介して、これらのエミュレータを検出しようとします。テストに使用するエミュレータにはセキュリティ ルールを指定することを強くお勧めします。以下の最小限の例を参照してください。

サイン:

export declare function initializeTestEnvironment(config: TestEnvironmentConfig): Promise<RulesTestEnvironment>;

パラメーター

パラメータタイプ説明
構成テスト環境構成エミュレータの設定。検出できる場合、ほとんどのフィールドはオプションです

戻り値:

Promise< RulesTestEnvironment >

テストの準備ができた環境で解決する Promise、またはエラーで拒否する Promise。

const testEnv = await initializeTestEnvironment({
  firestore: {
    rules: fs.readFileSync("/path/to/firestore.rules", "utf8"), // Load rules from file
    // host and port can be omitted if they can be discovered from the hub.
  },
  // ...
});

withFunctionTriggersDisabled()

バックグラウンドの Cloud Functions トリガーを無効にしてセットアップ関数を実行します。これを使用すると、ローカルでエミュレートされた Cloud Functions をトリガーせずに、Realtime Database または Cloud Firestore エミュレータにデータをインポートできます。

この方法は、Firebase CLI バージョン 8.13.0 以降でのみ機能します。このオーバーロードは、エミュレータ ハブの host:port が環境変数 FIREBASE_EMULATOR_HUB で指定されている場合にのみ機能します。

サイン:

export declare function withFunctionTriggersDisabled<TResult>(fn: () => TResult | Promise<TResult>): Promise<TResult>;

パラメーター

パラメータタイプ説明
ふん() => T結果 | Promise<TResult>同期または非同期の関数 (Promise を返す)

戻り値:

Promise<TResult>

withFunctionTriggersDisabled()

バックグラウンドの Cloud Functions トリガーを無効にしてセットアップ関数を実行します。これを使用すると、ローカルでエミュレートされた Cloud Functions をトリガーせずに、Realtime Database または Cloud Firestore エミュレータにデータをインポートできます。

この方法は、Firebase CLI バージョン 8.13.0 以降でのみ機能します。このオーバーロードでホストとポートが指定されているエミュレーター ハブが実行されている必要があります。

サイン:

export declare function withFunctionTriggersDisabled<TResult>(hub: {
    host: string;
    port: number;
}, fn: () => TResult | Promise<TResult>): Promise<TResult>;

パラメーター

パラメータタイプ説明
ハブ{ ホスト: 文字列;ポート番号; }エミュレータ ハブのホストとポート (例: {host: 'localhost', port: 4400} )
ふん() => T結果 | Promise<TResult>同期または非同期の関数 (Promise を返す)

戻り値:

Promise<TResult>

エミュレータ構成

特定のエミュレータの構成。

サイン:

export declare type EmulatorConfig = {
    rules?: string;
} & (HostAndPort | {});

トークンオプション

開発者指定のカスタム クレームや Firebase Auth トークン ペイロードのオプションのオーバーライドなど、テストに使用するモック ユーザー トークンのオプションが追加されました。

サイン:

export declare type TokenOptions = {
    iat?: number;
    exp?: number;
    auth_time?: number;
    provider_id?: 'anonymous';
    email?: string;
    email_verified?: boolean;
    phone_number?: string;
    name?: string;
    picture?: string;
    firebase?: {
        sign_in_provider: FirebaseSignInProvider;
        identities?: {
            [provider in FirebaseSignInProvider]?: string[];
        };
    };
    aud?: string;
    iss?: string;
    [claim: string]: unknown;
    uid?: never;
    sub?: never;
    user_id?: never;
};