機能
関数 | 説明 |
---|---|
アサート失敗(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;
};