pakiet reguł-jednostkowych testów

Funkcje

Funkcjonować Opis
asertFails(pr) Potwierdź, że obietnica zostanie odrzucona z powodu błędu „odmowa pozwolenia”. Przydatne do zapewnienia, że ​​określone żądanie zostanie odrzucone przez Reguły Bezpieczeństwa. Zobacz przykład poniżej. Ta funkcja rozpoznaje błędy odmowy uprawnień z zestawów SDK Database, Firestore i Storage JS.
AssertSucceeds(pr) Potwierdź, że obietnica zostanie odrzucona z powodu błędu „odmowa pozwolenia”. Jest to funkcja no-op, która zwraca przekazaną obietnicę w niezmienionej postaci, ale można jej użyć do celów dokumentacyjnych w kodzie testowym, aby podkreślić, że określone żądanie powinno zakończyć się sukcesem (np. dozwolone przez reguły).
zainicjujTestŚrodowisko(config) Inicjuje środowisko testowe na potrzeby testowania jednostkowego reguł. Najpierw wywołaj tę funkcję, aby skonfigurować test. Wymaga działania emulatorów. Ta funkcja próbuje wykryć te emulatory za pomocą zmiennych środowiskowych lub za pośrednictwem koncentratora emulatora Firebase, jeśli hosty i porty nie są określone. Zdecydowanie zaleca się określenie reguł bezpieczeństwa dla emulatorów używanych do testowania. Zobacz minimalny przykład poniżej.
z wyzwalaczami funkcji wyłączonymi (fn) Uruchom funkcję konfiguracji z wyłączonymi wyzwalaczami Cloud Functions w tle. Można tego użyć do importowania danych do bazy danych Realtime lub emulatora Cloud Firestore bez uruchamiania lokalnie emulowanych funkcji Cloud Functions. Ta metoda działa tylko z Firebase CLI w wersji 8.13.0 lub nowszej. To przeciążenie działa tylko wtedy, gdy host:port centrum emulatora jest określony przez zmienną środowiskową FIREBASE_EMULATOR_HUB.
withFunctionTriggersDisabled(hub, fn) Uruchom funkcję konfiguracji z wyłączonymi wyzwalaczami Cloud Functions w tle. Można tego użyć do importowania danych do bazy danych Realtime lub emulatora Cloud Firestore bez uruchamiania lokalnie emulowanych funkcji Cloud Functions. Ta metoda działa tylko z Firebase CLI w wersji 8.13.0 lub nowszej. Koncentrator emulatora musi być uruchomiony, a host i port są określone w tym przeciążeniu.

Interfejsy

Interfejs Opis
HostAndPort Obiekt zawierający nazwę hosta i numer portu emulatora.
RegułyTestKontekst Kontekst testowy reprezentujący klienta. Może służyć do uzyskiwania dostępu do emulatorów w celu testowania jednostek reguł.
ZasadyŚrodowisko testowe Obiekt używany do kontrolowania środowiska testów jednostkowych reguł. Można go używać do tworzenia RulesTestContext dla różnych sytuacji uwierzytelniania.
Konfiguracja środowiska testowego Konfiguracja środowiska testów jednostkowych, w tym emulatorów.

Wpisz aliasy

Wpisz Alias Opis
Konfiguracja emulatora Konfiguracja dla danego emulatora.
Opcje tokena Więcej opcji fałszywego tokena użytkownika do użycia podczas testowania, w tym niestandardowe oświadczenia określone przez programistę lub opcjonalne zastąpienia ładunków tokenu uwierzytelniania Firebase.

asertFails()

Potwierdź, że obietnica zostanie odrzucona z powodu błędu „odmowa pozwolenia”.

Przydatne do zapewnienia, że ​​określone żądanie zostanie odrzucone przez Reguły Bezpieczeństwa. Zobacz przykład poniżej. Ta funkcja rozpoznaje błędy odmowy uprawnień z zestawów SDK Database, Firestore i Storage JS.

Podpis:

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

Parametry

Parametr Typ Opis
pr Obiecaj<jakiekolwiek> obietnica, której należy dotrzymać

Zwroty:

Obiecaj<jakiekolwiek>

Obietnica, która zostaje spełniona, jeśli pr zostanie odrzucony z komunikatem „odmowa pozwolenia”. Jeśli pr zostanie odrzucony z powodu innego błędu lub rozwiązany, zwrócona obietnica zostanie odrzucona.

Przykład

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

twierdzenieSucceeds()

Zapewnij, że odniesiesz sukces.

Jest to funkcja no-op, która zwraca przekazaną obietnicę w niezmienionej postaci, ale można jej użyć do celów dokumentacyjnych w kodzie testowym, aby podkreślić, że określone żądanie powinno zakończyć się sukcesem (np. dozwolone przez reguły).

Podpis:

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

Parametry

Parametr Typ Opis
pr Obiecaj<T>

Zwroty:

Obiecaj<T>

Przykład

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

zainicjujTestŚrodowisko()

Inicjuje środowisko testowe na potrzeby testowania jednostkowego reguł. Najpierw wywołaj tę funkcję, aby skonfigurować test.

Wymaga działania emulatorów. Ta funkcja próbuje wykryć te emulatory za pomocą zmiennych środowiskowych lub za pośrednictwem koncentratora emulatora Firebase, jeśli hosty i porty nie są określone. Zdecydowanie zaleca się określenie reguł bezpieczeństwa dla emulatorów używanych do testowania. Zobacz minimalny przykład poniżej.

Podpis:

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

Parametry

Parametr Typ Opis
konfiguracja Konfiguracja środowiska testowego konfiguracja dla emulatorów. Większość pól jest opcjonalna, jeśli można je odkryć

Zwroty:

Obietnica< RegułyTestŚrodowisko >

obietnica, która rozwiązuje się w środowisku gotowym do testowania lub odrzuca w przypadku błędu.

Przykład

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

Uruchom funkcję konfiguracji z wyłączonymi wyzwalaczami Cloud Functions w tle. Można tego użyć do importowania danych do bazy danych Realtime lub emulatora Cloud Firestore bez uruchamiania lokalnie emulowanych funkcji Cloud Functions.

Ta metoda działa tylko z Firebase CLI w wersji 8.13.0 lub nowszej. To przeciążenie działa tylko wtedy, gdy host:port centrum emulatora jest określony przez zmienną środowiskową FIREBASE_EMULATOR_HUB.

Podpis:

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

Parametry

Parametr Typ Opis
przyn () => TRWynik | Obietnica<TRWynik> funkcja, która może być synchronizowana lub asynchroniczna (zwraca obietnicę)

Zwroty:

Obietnica<TRWynik>

withFunctionTriggersDisabled()

Uruchom funkcję konfiguracji z wyłączonymi wyzwalaczami Cloud Functions w tle. Można tego użyć do importowania danych do bazy danych Realtime lub emulatora Cloud Firestore bez uruchamiania lokalnie emulowanych funkcji Cloud Functions.

Ta metoda działa tylko z Firebase CLI w wersji 8.13.0 lub nowszej. Koncentrator emulatora musi być uruchomiony, a host i port są określone w tym przeciążeniu.

Podpis:

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

Parametry

Parametr Typ Opis
centrum {host: ciąg; numer portu; } host i port centrum emulatora (np.: {host: 'localhost', port: 4400} )
przyn () => TRWynik | Obietnica<TRWynik> funkcja, która może być synchronizowana lub asynchroniczna (zwraca obietnicę)

Zwroty:

Obietnica<TRWynik>

Konfiguracja emulatora

Konfiguracja dla danego emulatora.

Podpis:

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

Opcje tokena

Więcej opcji fałszywego tokena użytkownika do użycia podczas testowania, w tym niestandardowe oświadczenia określone przez programistę lub opcjonalne zastąpienia ładunków tokenu uwierzytelniania Firebase.

Podpis:

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