规则测试环境接口

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

签名:

export interface RulesTestEnvironment 

特性

财产类型描述
模拟器{ 数据库?: HostAndPort ; firestore?: HostAndPort ;存储?: HostAndPort ; }在创建测试环境时指定或发现的模拟器配置的只读副本。
项目编号细绳创建测试环境时指定或发现的项目 ID。

方法

方法描述
authentiatedContext(user_id, tokenOptions)创建一个RulesTestContext ,其行为类似于经过身份验证的 Firebase Auth 用户。通过返回的上下文创建的请求将附加一个模拟 Firebase 身份验证令牌。
清理(​​)在测试代​​码的最后,调用清理函数。销毁在测试环境中创建的所有 RulesTestContext 并清理底层资源,从而允许干净退出。此方法不会以任何方式更改模拟器中的状态。要在测试之间重置数据,请参阅clearDatabase()clearFirestore()clearStorage()
清除数据库()清除实时数据库模拟器命名空间中的所有数据。
清除Firestore()清除 Firestore 中属于 Firestore 模拟器中的projectId数据。
清除存储()清除存储模拟器中所有存储桶中的存储文件和元数据。
未经身份验证的上下文()创建一个RulesTestContext ,其行为类似于未通过 Firebase Auth 登录的客户端。通过返回的上下文创建的请求不会附加 Firebase 身份验证令牌。
withSecurityRulesDisabled(回调)

规则测试环境.模拟器

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

签名:

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

规则测试环境.projectId

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

签名:

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

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

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

签名:

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

参数

范围类型描述
用户身份细绳用户的用户 ID。指定令牌上“user_id”和“sub”的值
代币选项代币期权Firebase 身份验证令牌负载的自定义声明或覆盖

返回:

规则测试上下文

例子

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

规则测试环境.cleanup()

在测试代​​码的最后,调用清理函数。销毁在测试环境中创建的所有 RulesTestContext 并清理底层资源,从而允许干净退出。

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

签名:

cleanup(): Promise<void>;

返回:

承诺<无效>

RulesTestEnvironment.clearDatabase()

清除实时数据库模拟器命名空间中的所有数据。

签名:

clearDatabase(): Promise<void>;

返回:

承诺<无效>

RulesTestEnvironment.clearFirestore()

清除 Firestore 中属于 Firestore 模拟器中的projectId数据。

签名:

clearFirestore(): Promise<void>;

返回:

承诺<无效>

RulesTestEnvironment.clearStorage()

清除存储模拟器中所有存储桶中的存储文件和元数据。

签名:

clearStorage(): Promise<void>;

返回:

承诺<无效>

RulesTestEnvironment.unauthenticatedContext()

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

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

签名:

unauthenticatedContext(): RulesTestContext;

返回:

规则测试上下文

例子

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

RulesTestEnvironment.withSecurityRulesDisabled()

签名:

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

参数

范围类型描述
打回来(上下文: RulesTestContext ) => 承诺<无效>

返回:

承诺<无效>