RulesTestEnvironment 接口

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

Signature:

export interface RulesTestEnvironment 

属性

媒体资源 类型 说明
模拟器 {数据库?:HostAndPort;Firestore?HostAndPort;存储?:HostAndPort; } 在创建测试环境时指定或发现的模拟器配置的只读副本。
projectId string 创建测试环境时指定或发现的项目 ID。

方法

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

RulesTestEnvironment.emulators

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

Signature:

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

RulesTestEnvironment.projectId

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

Signature:

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

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

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

Signature:

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

参数

参数 类型 说明
user_id string 用户的用户 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()

Signature:

cleanup(): Promise<void>;

返回

Promise<void>

RulesTestEnvironment.clearDatabase()

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

Signature:

clearDatabase(): Promise<void>;

返回

Promise<void>

RulesTestEnvironment.clearFirestore()

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

Signature:

clearFirestore(): Promise<void>;

返回

Promise<void>

RulesTestEnvironment.clearStorage()

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

Signature:

clearStorage(): Promise<void>;

返回

Promise<void>

RulesTestEnvironment.unauthenticatedContext()

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

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

Signature:

unauthenticatedContext(): RulesTestContext;

返回

RulesTestContext

示例

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

RulesTestEnvironment.withSecurityRulesDisabled()

Signature:

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

参数

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

返回

Promise<void>