RulesTestEnvironment 接口

用于控制规则单元测试环境的对象。可用于针对不同的身份验证情况创建 RulesTestContext。

签名

export interface RulesTestEnvironment 

属性

属性 类型 说明
模拟器 { database?:HostAndPort;Firestore?:HostAndPort;storage?:HostAndPort;} 在创建测试环境时指定或发现的模拟器配置的只读副本。
projectId 字符串 在创建测试环境时指定或发现的项目 ID。

方法

方法 说明
authenticatedContext(user_id, tokenOptions) 创建一个 RulesTestContext,其行为方式与经过身份验证的 Firebase Auth 用户类似。通过返回的上下文创建的请求将附加一个模拟 Firebase 身份验证令牌。
cleanup() 在测试代码的最后,调用 cleanup 函数。销毁在测试环境中创建的所有 RulesTestContext,并清理底层资源,从而允许正常退出。此方法不会以任何方式更改模拟器中的状态。如需在两次测试之间重置数据,请参阅 clearDatabase()clearFirestore()clearStorage()
clearDatabase() 清除 Realtime Database 模拟器命名空间中的所有数据。
clearFirestore() 清除 Firestore 模拟器中属于 projectId 的 Firestore 数据。
clearStorage() 清除 Storage 模拟器中所有存储分区中的 Storage 文件和元数据。
unauthenticatedContext() 创建一个行为方式类似于不通过 Firebase Auth 登录的客户端的 RulesTestContext通过返回的上下文创建的请求不会附加 Firebase Auth 令牌。
withSecurityRulesDisabled(回调)

RulesTestEnvironment.emulators

在创建测试环境时指定或发现的模拟器配置的只读副本。

签名

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

RulesTestEnvironment.projectId

在创建测试环境时指定或发现的项目 ID。

签名

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

创建一个行为类似于经过身份验证的 Firebase Auth 用户的 RulesTestContext

通过返回的上下文创建的请求将附加模拟 Firebase 身份验证令牌。

签名

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

参数

参数 类型 说明
user_id 字符串 用户的 User-ID。指定“user_id”的值和“sub”标记上
tokenOptions TokenOptions Firebase 身份验证令牌载荷的自定义声明或替换项

返回

RulesTestContext

示例

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

RulesTestEnvironment.cleanup()

在测试代码的最后,调用 cleanup 函数。销毁在测试环境中创建的所有 RulesTestContext,并清理底层资源,以便彻底退出。

此方法不会以任何方式更改模拟器中的状态。如需在两次测试之间重置数据,请参阅 clearDatabase()clearFirestore()clearStorage()

签名

cleanup(): Promise<void>;

返回

承诺<void>

RulesTestEnvironment.clearDatabase()

清除 Realtime Database 模拟器命名空间中的所有数据。

签名

clearDatabase(): Promise<void>;

返回

承诺<void>

RulesTestEnvironment.clearFirestore()

在 Firestore 模拟器中清除 projectId 的默认 Firestore 数据库中的数据。

签名

clearFirestore(): Promise<void>;

返回

承诺<void>

RulesTestEnvironment.clearStorage()

在 Storage 模拟器中清除活跃存储分区中的 Storage 文件和元数据。

签名

clearStorage(): Promise<void>;

返回

承诺<void>

RulesTestEnvironment.unauthenticatedContext()

创建一个 RulesTestContext,它的行为类似于未通过 Firebase Auth 登录的客户端。

通过返回的上下文创建的请求不会附加 Firebase Auth 令牌。

签名

unauthenticatedContext(): RulesTestContext;

返回

RulesTestContext

示例

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

RulesTestEnvironment.withSecurityRulesDisabled()

签名

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

参数

参数 类型 说明
callback (上下文:RulesTestContext)=>承诺<void>

返回

承诺<void>