규칙 단위 테스트 패키지

기능

기능 설명
주장실패(pr) "허가 거부" 오류와 함께 약속이 거부되도록 어설션합니다. 보안 규칙에 따라 특정 요청이 거부되도록 하는 데 유용합니다. 아래 예를 참조하세요. 이 기능은 데이터베이스, Firestore, Storage JS SDK의 권한 거부 오류를 인식합니다.
주장성공(pr) "허가 거부" 오류와 함께 약속이 거부되도록 어설션합니다. 이는 전달된 Promise를 있는 그대로 반환하는 무작동 함수이지만 특정 요청이 성공해야 함을 강조하기 위해 테스트 코드에서 문서화 목적으로 사용할 수 있습니다(예: 규칙에 의해 허용됨).
초기화테스트환경(config) 규칙 단위 테스트를 위한 테스트 환경을 초기화합니다. 테스트 설정을 위해 먼저 이 함수를 호출하세요. 에뮬레이터가 실행 중이어야 합니다. 이 함수는 환경 변수를 통해 또는 호스트와 포트가 지정되지 않은 경우 Firebase 에뮬레이터 허브를 통해 해당 에뮬레이터를 검색하려고 시도합니다. 테스트에 사용되는 에뮬레이터에 대한 보안 규칙을 지정하는 것이 좋습니다. 아래의 최소 예를 참조하세요.
withFunctionTriggersDisabled(fn) 백그라운드 Cloud Functions 트리거가 비활성화된 상태에서 설정 기능을 실행합니다. 로컬로 에뮬레이트된 Cloud Functions를 트리거하지 않고 실시간 데이터베이스 또는 Cloud Firestore 에뮬레이터로 데이터를 가져오는 데 사용할 수 있습니다. 이 방법은 Firebase CLI 버전 8.13.0 이상에서만 작동합니다. 이 오버로드는 에뮬레이터 허브 호스트:포트가 환경 변수 FIREBASE_EMULATOR_HUB에 의해 지정된 경우에만 작동합니다.
withFunctionTriggersDisabled(허브, fn) 백그라운드 Cloud Functions 트리거가 비활성화된 상태에서 설정 기능을 실행합니다. 로컬로 에뮬레이트된 Cloud Functions를 트리거하지 않고 실시간 데이터베이스 또는 Cloud Firestore 에뮬레이터로 데이터를 가져오는 데 사용할 수 있습니다. 이 방법은 Firebase CLI 버전 8.13.0 이상에서만 작동합니다. 이 오버로드에 호스트와 포트가 지정되는 에뮬레이터 허브가 실행 중이어야 합니다.

인터페이스

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

유형 별칭

유형 별칭 설명
에뮬레이터 구성 특정 에뮬레이터에 대한 구성입니다.
토큰옵션 개발자가 지정한 맞춤 클레임이나 Firebase 인증 토큰 페이로드에 대한 선택적 재정의를 포함하여 테스트에 사용할 모의 사용자 토큰에 대한 추가 옵션입니다.

주장실패()

"허가 거부" 오류와 함께 약속이 거부되도록 어설션합니다.

보안 규칙에 따라 특정 요청이 거부되도록 하는 데 유용합니다. 아래 예를 참조하세요. 이 기능은 데이터베이스, Firestore, Storage JS SDK의 권한 거부 오류를 인식합니다.

서명:

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

매개변수

매개변수 유형 설명
홍보 약속<아무거나> 주장할 약속

보고:

약속<아무거나>

pr이 "허가 거부됨"으로 거부되면 이행되는 약속입니다. pr이 다른 오류로 인해 거부되거나 해결되면 반환된 Promise가 거부됩니다.

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

주장성공()

성공할 것이라는 약속을 주장하십시오.

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

서명:

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

매개변수

매개변수 유형 설명
홍보 약속<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>;

매개변수

매개변수 유형 설명
구성 테스트환경구성 에뮬레이터 구성. 대부분의 필드는 검색 가능한 경우 선택 사항입니다.

보고:

약속< 규칙테스트환경 >

테스트 준비가 완료된 환경에서 해결되거나 오류 발생 시 거부되는 Promise입니다.

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 이상에서만 작동합니다. 이 오버로드는 에뮬레이터 허브 호스트:포트가 환경 변수 FIREBASE_EMULATOR_HUB에 의해 지정된 경우에만 작동합니다.

서명:

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

매개변수

매개변수 유형 설명
fn () => TResult | 약속<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: 'localhost', port: 4400} )
fn () => TResult | 약속<TResult> 동기 또는 비동기일 수 있는 함수(프라미스 반환)

보고:

약속<TResult>

에뮬레이터 구성

특정 에뮬레이터에 대한 구성입니다.

서명:

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

토큰옵션

개발자가 지정한 맞춤 클레임이나 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;
};