関数
関数 | 説明 |
---|---|
assertFails(pr) | 「permission denied」で拒否される Promise をアサートします。error.特定のリクエストをセキュリティ ルールで拒否するようにアサートする場合に便利です。以下の例をご覧ください。この関数は、Database、Firestore、Storage JS SDK の権限拒否エラーを認識します。 |
assertSucceeds(pr) | 「permission denied」で拒否される Promise をアサートします。エラー。これは渡された Promise をそのまま返す NoOps 関数ですが、テストコードで文書化の目的で使用すると、特定のリクエストが成功することを強調できます(ルールで許可されている場合など)。 |
InitializeTestEnvironment(config) | ルールの単体テスト用の環境を初期化します。テストをセットアップするには、最初にこの関数を呼び出します。エミュレータが実行されている必要があります。ホストとポートが指定されていない場合は、環境変数を介して、または Firebase Emulator ハブを介して、これらのエミュレータの検出を試みます。テストに使用するエミュレータのセキュリティ ルールを指定することを強くおすすめします。下記の最小限の例をご覧ください。 |
withFunctionTriggersDisabled(fn) | Cloud Functions のバックグラウンド トリガーを無効にして設定関数を実行します。これを使用すると、ローカルでエミュレートされた Cloud Functions の関数をトリガーせずに、Realtime Database または Cloud Firestore エミュレータにデータをインポートできます。この方法は、Firebase CLI バージョン 8.13.0 以降でのみ機能します。このオーバーロードは、エミュレータ ハブの host:port が環境変数 FIREBASE_EMULATOR_HUB で指定された場合にのみ機能します。 |
withFunctionTriggersDisabled(hub, fn) | バックグラウンド Cloud Functions トリガーを無効にして設定関数を実行します。これを使用すると、ローカルでエミュレートされた Cloud Functions の関数をトリガーせずに、Realtime Database または Cloud Firestore のエミュレータにデータをインポートできます。この方法は、Firebase CLI バージョン 8.13.0 以降でのみ機能します。エミュレータ ハブが動作している必要があります。このオーバーロードで指定されるホストとポートは、 |
インターフェース
インターフェース | 説明 |
---|---|
HostAndPort | エミュレータのホスト名とポート番号を含むオブジェクト。 |
RulesTestContext | クライアントを表すテスト コンテキスト。ルールの単体テスト用のエミュレータへのアクセスに使用できます。 |
RulesTestEnvironment | ルールの単体テスト環境の制御に使用されるオブジェクト。さまざまな認証状況の RulesTestContext の作成に使用できます。 |
TestEnvironmentConfig | エミュレータを含む単体テスト環境の構成。 |
型エイリアス
型エイリアス | 説明 |
---|---|
EmulatorConfig | 特定のエミュレータの構成。 |
TokenOptions | デベロッパーが指定したカスタム クレームや、Firebase Auth トークン ペイロードのオプションのオーバーライドなど、テストに使用する疑似ユーザー トークンのオプションが増えました。 |
assertFails()
「permission denied」で拒否される Promise をアサートします。エラーが発生します。
セキュリティ ルールによって特定のリクエストが拒否されるようアサートする場合に便利です。以下の例をご覧ください。この関数は、Database、Firestore、Storage JS SDK の権限拒否エラーを認識します。
署名:
export declare function assertFails(pr: Promise<any>): Promise<any>;
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
pr | <任意> を約束する | アサートされるという Promise があります。 |
戻り値:
<任意> を約束する
pr が「permission denied」により拒否された場合に実行される Promise。pr が他のエラーで拒否されたか、解決された場合、返された Promise が拒否されます。
例
const unauthed = testEnv.unauthenticatedContext();
await assertFails(getDoc(unauthed.firestore(), '/private/doc'), { ... });
assertSucceeds()
成功を約束する。
これは、渡された Promise をそのまま返す NoOps 関数ですが、テストコードで文書化の目的で、特定のリクエストが成功することを強調するために使用できます(ルールによる許可など)。
署名:
export declare function assertSucceeds<T>(pr: Promise<T>): Promise<T>;
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
pr | Promise<T> |
戻り値:
Promise<T>
例
const alice = testEnv.authenticatedContext('alice');
await assertSucceeds(getDoc(alice.firestore(), '/doc/readable/by/alice'), { ... });
InitializeTestEnvironment()
ルールの単体テスト用の環境を初期化します。テストのセットアップでは、最初にこの関数を呼び出します。
エミュレータを実行する必要があります。ホストとポートが指定されていない場合は、環境変数を介して、または Firebase Emulator ハブを介して、これらのエミュレータの検出を試みます。テストに使用するエミュレータのセキュリティ ルールを指定することを強くおすすめします。下記の最小限の例をご覧ください。
署名:
export declare function initializeTestEnvironment(config: TestEnvironmentConfig): Promise<RulesTestEnvironment>;
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
config | TestEnvironmentConfig | エミュレータの構成もサポートしています。ほとんどのフィールドは、検出できる場合は省略可能です。 |
戻り値:
Promise <RulesTestEnvironment>
テストの準備ができた環境で解決されるか、エラー時に拒否される 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>;
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
関数 | () =>TResult |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>;
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
ハブ | { ホスト: string;port: number;} | Emulator Hub のホストとポート(例: {host: 'localhost', port: 4400} ) |
関数 | () =>TResult |Promise<TResult> | 同期または非同期の関数(Promise を返す) |
戻り値:
Promise<TResult>
EmulatorConfig
特定のエミュレータの構成。
署名:
export declare type EmulatorConfig = {
rules?: string;
} & (HostAndPort | {});
TokenOptions
デベロッパーが指定したカスタム クレームや、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;
};