RulesTestEnvironment 인터페이스

규칙 단위 테스트 환경을 제어하는 데 사용되는 객체입니다. 다양한 인증 상황에서 RulesTestContext를 만드는 데 사용할 수 있습니다.

Signature:

export interface RulesTestEnvironment 

속성

속성 유형 설명
에뮬레이터 { 데이터베이스?: HostAndPort, Firestore?: HostAndPort, 스토리지: HostAndPort, } 테스트 환경 생성 시 지정되거나 발견된 에뮬레이터 구성의 읽기 전용 사본입니다.
projectId 문자열 테스트 환경 생성 시 지정되거나 검색된 프로젝트 ID입니다.

방법

메서드 설명
authenticatedContext(user_id, tokenOptions) 인증된 Firebase 인증 사용자처럼 작동하는 RulesTestContext를 만듭니다.반환된 컨텍스트를 통해 생성된 요청에는 모의 Firebase 인증 토큰이 첨부됩니다.
cleanup()을 호출했습니다. 테스트 코드의 맨 끝에서 정리 함수를 호출합니다. 테스트 환경에서 생성된 모든 RulesTestContext를 폐기하고 기본 리소스를 삭제하여 정리된 종료를 허용합니다.이 메서드는 어떤 방식으로든 에뮬레이터에서 상태를 변경하지 않습니다. 테스트 간에 데이터를 재설정하려면 clearDatabase(), clearFirestore(), clearStorage()를 참고하세요.
clearDatabase() 실시간 데이터베이스 에뮬레이터 네임스페이스의 모든 데이터를 지웁니다.
clearFirestore() Firestore 에뮬레이터의 projectId에 속한 Firestore의 데이터를 삭제합니다.
clearStorage() Storage 에뮬레이터의 모든 버킷에서 Storage 파일과 메타데이터를 지웁니다.
unauthenticatedContext() Firebase 인증을 통해 로그인하지 않은 클라이언트처럼 작동하는 RulesTestContext를 만듭니다.반환된 컨텍스트를 통해 생성된 요청에는 Firebase 인증 토큰이 연결되지 않습니다.
withSecurityRulesDisabled(callback)

RulesTestEnvironment.emulators

테스트 환경 생성 시 지정되거나 발견된 에뮬레이터 구성의 읽기 전용 사본입니다.

Signature:

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

RulesTestEnvironment.projectId

테스트 환경 생성 시 지정되거나 검색된 프로젝트 ID입니다.

Signature:

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

인증된 Firebase 인증 사용자처럼 동작하는 RulesTestContext를 만듭니다.

반환된 컨텍스트를 통해 생성된 요청에는 모의 Firebase 인증 토큰이 연결됩니다.

Signature:

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()를 참조하세요.

Signature:

cleanup(): Promise<void>;

반환:

Promise<void>

RulesTestEnvironment.clearDatabase()

실시간 데이터베이스 에뮬레이터 네임스페이스의 모든 데이터를 지웁니다.

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()

Firebase 인증을 통해 로그인하지 않은 클라이언트처럼 작동하는 RulesTestContext를 만듭니다.

반환된 컨텍스트를 통해 생성된 요청에는 Firebase 인증 토큰이 연결되지 않습니다.

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>;

매개변수

매개변수 유형 설명
콜백 (컨텍스트: RulesTestContext) => Promise<void>

반환:

Promise<void>