RulesTestEnvironment 介面

用來控制規則單元測試環境的物件。可用於針對不同驗證情況建立 RulesTestContext。

簽名:

export interface RulesTestEnvironment 

屬性

屬性 類型 說明
模擬器 { 資料庫?:HostAndPort;Firestore?HostAndPort;儲存空間:HostAndPort;} 建立測試環境時指定或找到的模擬器設定唯讀副本。
projectId 字串 建立測試環境時指定或找到的專案 ID。

方法

方法 說明
authenticatedContext(user_id, tokenOptions) 建立 RulesTestContext,運作方式與通過驗證的 Firebase 驗證使用者相同。透過傳回的結構定義建立的要求會附加模擬 Firebase 驗證權杖。
cleanup() 在測試程式碼的結尾,呼叫清理函式。刪除在測試環境中建立的所有 RulesTestContext,並清除基礎資源,以便順暢退出。這個方法不會以任何方式變更模擬器中的狀態。如要重設測試之間的資料,請參閱 clearDatabase()clearFirestore()clearStorage() 的相關說明。
clearDatabase() 清除即時資料庫模擬器命名空間中的所有資料。
clearFirestore() 在 Firestore 模擬器中清除屬於 projectId 的 Firestore 資料。
clearStorage() 清除儲存空間模擬器中所有值區的儲存空間檔案和中繼資料。
unauthenticatedContext() 建立 RulesTestContext,運作方式與用戶端「不是」透過 Firebase Auth 登入。透過傳回結構定義建立的要求不會附加 Firebase 驗證權杖。
withSecurityRulesDisabled(回呼)

RulesTestEnvironment.emulators

建立測試環境時指定或找到的模擬器設定唯讀副本。

簽名:

readonly emulators: {
        database?: HostAndPort;
        firestore?: HostAndPort;
        storage?: HostAndPort;
    };

RulesTestEnvironment.projectId

建立測試環境時指定或找到的專案 ID。

簽名:

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

建立 RulesTestContext,運作方式與通過驗證的 Firebase 驗證使用者相同。

透過傳回結構定義建立的要求會附加模擬 Firebase 驗證權杖。

簽名:

authenticatedContext(user_id: string, tokenOptions?: TokenOptions): RulesTestContext;

參數

參數 類型 說明
user_id 字串 使用者的使用者 ID。指定「user_id」的值和「sub」符記
TokenOptions TokenOptions 自訂憑證附加資訊或覆寫 Firebase 驗證權杖酬載

傳回:

RulesTestContext

範例

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

RulesTestEnvironment.cleanup()

在測試程式碼的結尾,呼叫清理函式。刪除在測試環境中建立的所有 RulesTestContext,並清除基礎資源,以便順利退出。

這個方法不會以任何方式變更模擬器中的狀態。如要重設測試之間的資料,請參閱 clearDatabase()clearFirestore()clearStorage() 的說明。

簽名:

cleanup(): Promise<void>;

傳回:

承諾<void>

RulesTestEnvironment.clearDatabase()

清除即時資料庫模擬器命名空間中的所有資料。

簽名:

clearDatabase(): Promise<void>;

傳回:

承諾<void>

RulesTestEnvironment.clearFirestore()

在 Firestore 模擬器中清除 projectId 預設 Firestore 資料庫的資料。

簽名:

clearFirestore(): Promise<void>;

傳回:

承諾<void>

RulesTestEnvironment.clearStorage()

在 Storage 模擬器中清除使用中值區的儲存檔案和中繼資料。

簽名:

clearStorage(): Promise<void>;

傳回:

承諾<void>

RulesTestEnvironment.unauthenticatedContext()

建立 RulesTestContext,其運作方式與未使用 Firebase Auth 登入的用戶端類似。

透過傳回結構定義建立的要求不會附加 Firebase 驗證權杖。

簽名:

unauthenticatedContext(): RulesTestContext;

傳回:

RulesTestContext

範例

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

RulesTestEnvironment.withSecurityRulesDisabled()

簽名:

withSecurityRulesDisabled(callback: (context: RulesTestContext) => Promise<void>): Promise<void>;

參數

參數 類型 說明
回呼 (結構定義:RulesTestContext) =>承諾<void>

傳回:

承諾<void>