Rules-unit-testing 패키지

함수

함수 설명
assertFails(pr) '권한 거부됨'으로 프라미스가 거부되도록 어설션 오류입니다.특정 요청이 보안 규칙에서 거부되도록 어설션하는 데 유용합니다. 아래 예를 참고하세요. 이 함수는 데이터베이스, Firestore, Storage JS SDK의 권한 거부 오류를 인식합니다.
assertSucceeds(pr) '권한 거부됨'으로 프라미스가 거부되도록 어설션 오류입니다.전달된 프로미스를 있는 그대로 반환하는 노옵(no-op) 함수이지만 특정 요청이 성공해야 함을 강조하기 위해 테스트 코드에서 문서화 목적으로 사용할 수 있습니다(예: 규칙에서 허용).
초기화 테스트 환경(구성) 규칙 단위 테스트를 위한 테스트 환경을 초기화합니다. 테스트 설정을 위해 이 함수를 먼저 호출하세요.에뮬레이터가 실행 중이어야 합니다. 이 함수는 환경 변수를 통해 또는 호스트와 포트가 지정되지 않은 경우 Firebase 에뮬레이터 허브를 통해 이러한 에뮬레이터를 탐색하려고 시도합니다. 테스트에 사용되는 에뮬레이터에는 보안 규칙을 지정하는 것이 좋습니다. 아래의 간단한 예를 참고하세요.
withFunctionTriggersDisabled(fn) 백그라운드 Cloud Functions 트리거를 사용 중지한 상태로 설정 함수를 실행합니다. 이 방법을 사용하면 로컬에서 에뮬레이션된 Cloud Functions를 트리거하지 않고 실시간 데이터베이스 또는 Cloud Firestore 에뮬레이터로 데이터를 가져올 수 있습니다.이 방법은 Firebase CLI 버전 8.13.0 이상에서만 작동합니다. 이 오버로드는 에뮬레이터 허브 host:port가 FIREBASE_EMULATOR_HUB 환경 변수로 지정된 경우에만 작동합니다.
withFunctionTriggersDisabled(hub, fn) 백그라운드 Cloud Functions 트리거를 사용 중지한 상태로 설정 함수를 실행합니다. 로컬에서 에뮬레이션된 Cloud Functions를 트리거하지 않고 실시간 데이터베이스 또는 Cloud Firestore 에뮬레이터로 데이터를 가져오는 데 사용할 수 있습니다.이 방법은 Firebase CLI 버전 8.13.0 이상에서만 작동합니다. 에뮬레이터 허브가 실행 중이어야 하며 이 오버로드에 지정된 호스트와 포트가 있어야 합니다.

인터페이스

인터페이스 설명
HostAndPort 에뮬레이터의 호스트 이름과 포트 번호가 포함된 객체입니다.
RulesTestContext 클라이언트를 나타내는 테스트 컨텍스트입니다. 규칙 단위 테스트를 위해 에뮬레이터에 액세스하는 데 사용할 수 있습니다.
RulesTestEnvironment 규칙 단위 테스트 환경을 제어하는 데 사용되는 객체입니다. 다양한 인증 상황에서 RulesTestContext를 생성하는 데 사용할 수 있습니다.
TestEnvironmentConfig 에뮬레이터를 포함한 단위 테스트 환경 구성

유형 별칭

별칭 입력 설명
EmulatorConfig 지정된 에뮬레이터의 구성입니다.
TokenOptions(토큰 옵션) 개발자가 지정한 커스텀 클레임 또는 Firebase 인증 토큰 페이로드의 선택적 재정의 등 테스트에 사용되는 모의 사용자 토큰의 추가 옵션

assertFails()

'권한 거부됨'으로 프라미스가 거부되도록 어설션 오류가 발생했습니다.

특정 요청이 보안 규칙에서 거부되도록 어설션하는 데 유용합니다. 아래 예를 참고하세요. 이 함수는 데이터베이스, Firestore, Storage JS SDK의 권한 거부 오류를 인식합니다.

서명:

export declare function assertFails(pr: Promise<any>): Promise<any>;

매개변수

매개변수 유형 설명
PR 약속<any> 어설션할 프라미스입니다.

반환:

약속<any>

'권한이 거부됨'으로 거부되는 경우 이행되는 프라미스입니다. pr이 다른 오류와 함께 거부되거나 해결된 경우 반환된 프로미스가 거부됩니다.

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

assertSucceeds()

성공할 프로미스를 어설션합니다.

이는 전달된 프로미스를 있는 그대로 반환하는 노옵(no-op) 함수이지만 특정 요청이 성공해야 함을 강조하기 위해 테스트 코드에서 문서화 목적으로 사용할 수 있습니다(예: 규칙에 의해 허용됨).

서명:

export declare function assertSucceeds<T>(pr: Promise<T>): Promise<T>;

매개변수

매개변수 유형 설명
PR 프로미스<T>

반환:

프로미스<T>

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

초기화 테스트 환경()

규칙 단위 테스트를 위한 테스트 환경을 초기화합니다. 테스트 설정을 위해 먼저 이 함수를 호출합니다.

에뮬레이터가 실행 중이어야 합니다. 이 함수는 환경 변수를 통해 또는 호스트와 포트가 지정되지 않은 경우 Firebase 에뮬레이터 허브를 통해 이러한 에뮬레이터를 탐색하려고 시도합니다. 테스트에 사용되는 에뮬레이터에는 보안 규칙을 지정하는 것이 좋습니다. 아래의 간단한 예를 참고하세요.

서명:

export declare function initializeTestEnvironment(config: TestEnvironmentConfig): Promise<RulesTestEnvironment>;

매개변수

매개변수 유형 설명
config TestEnvironmentConfig 에뮬레이터 구성을 살펴보겠습니다. 검색 가능한 경우 대부분의 필드는 선택사항입니다.

반환:

프로미스<RulesTestEnvironment>

테스트할 준비가 된 환경에서 해결되거나 오류가 발생하면 거부되는 프로미스입니다.

const testEnv = await initializeTestEnvironment({
  firestore: {
    rules: fs.readFileSync("/path/to/firestore.rules", "utf8"), // Load rules from file
    // host and port can be omitted if they can be discovered from the hub.
  },
  // ...
});

withFunctionTriggersDisabled()

백그라운드 Cloud Functions 트리거를 사용 중지한 상태로 설정 함수를 실행합니다. 로컬에서 에뮬레이션된 Cloud Functions를 트리거하지 않고 실시간 데이터베이스 또는 Cloud Firestore 에뮬레이터로 데이터를 가져오는 데 사용할 수 있습니다.

이 방법은 Firebase CLI 버전 8.13.0 이상에서만 작동합니다. 이 오버로드는 에뮬레이터 허브 host:port가 FIREBASE_EMULATOR_HUB 환경 변수로 지정된 경우에만 작동합니다.

서명:

export declare function withFunctionTriggersDisabled<TResult>(fn: () => TResult | Promise<TResult>): Promise<TResult>;

매개변수

매개변수 유형 설명
FN () => 결과 | 프라미스<TResult> 동기 또는 비동기일 수 있는 함수 (프라미스 반환)

반환:

프라미스<TResult>

withFunctionTriggersDisabled()

백그라운드 Cloud Functions 트리거를 사용 중지한 상태로 설정 함수를 실행합니다. 로컬에서 에뮬레이션된 Cloud Functions를 트리거하지 않고 실시간 데이터베이스 또는 Cloud Firestore 에뮬레이터로 데이터를 가져오는 데 사용할 수 있습니다.

이 방법은 Firebase CLI 버전 8.13.0 이상에서만 작동합니다. 에뮬레이터 허브가 실행 중이어야 하며 이 오버로드에 지정된 호스트와 포트가 있어야 합니다.

서명:

export declare function withFunctionTriggersDisabled<TResult>(hub: {
    host: string;
    port: number;
}, fn: () => TResult | Promise<TResult>): Promise<TResult>;

매개변수

매개변수 유형 설명
허브 { host: string; port: number; } 에뮬레이터 허브의 호스트 및 포트 (예: {host: 'localhost', port: 4400})
FN () => 결과 | 프라미스<TResult> 동기 또는 비동기일 수 있는 함수 (프라미스 반환)

반환:

프라미스<TResult>

에뮬레이터 구성

지정된 에뮬레이터의 구성입니다.

서명:

export declare type EmulatorConfig = {
    rules?: string;
} & (HostAndPort | {});

TokenOptions

개발자가 지정한 커스텀 클레임 또는 Firebase 인증 토큰 페이로드의 선택적 재정의 등 테스트에 사용되는 모의 사용자 토큰의 추가 옵션

서명:

export declare type TokenOptions = {
    iat?: number;
    exp?: number;
    auth_time?: number;
    provider_id?: 'anonymous';
    email?: string;
    email_verified?: boolean;
    phone_number?: string;
    name?: string;
    picture?: string;
    firebase?: {
        sign_in_provider: FirebaseSignInProvider;
        identities?: {
            [provider in FirebaseSignInProvider]?: string[];
        };
    };
    aud?: string;
    iss?: string;
    [claim: string]: unknown;
    uid?: never;
    sub?: never;
    user_id?: never;
};