Tworzenie testów jednostkowych

Firebase Local Emulator Suite ułatwiają pełną weryfikację funkcji i zachowania aplikacji. To także to świetne narzędzie do weryfikacji konfiguracji Firebase Security Rules. Używaj emulatorów Firebase do uruchamiania i automatyzacji testów jednostkowych w środowisku lokalnym. Metody opisane w ten dokument pomoże Ci utworzyć i zautomatyzować testy jednostkowe aplikacji weryfikujących Rules.

Skonfiguruj emulatory Firebase, jeśli jeszcze ich nie masz.

Przed uruchomieniem emulatora

Zanim zaczniesz korzystać z emulatora, pamiętaj o tych kwestiach:

  • Emulator początkowo wczyta reguły określone w polu firestore.rules lub „storage.rules” pliku firebase.json. Jeśli plik nie istnieje i nie używasz loadFirestoreRules ani „loadStorageRules” metoda zgodnie z opisem poniżej emulator traktuje wszystkie projekty jako mające otwarte reguły.
  • Chociaż większości pakietów SDK Firebase można używać bezpośrednio z emulatorami, tylko biblioteka @firebase/rules-unit-testing obsługuje symulowanie auth w regułach zabezpieczeń, co znacznie ułatwia testy jednostkowe. Ponadto: obsługuje kilka funkcji emulatorów, takich jak czyszczenie wszystkich danych, jak opisano poniżej.
  • Emulatory będą też akceptować produkcyjne tokeny uwierzytelniania Firebase udostępnione za pomocą pakietów SDK klienta i odpowiednio oceniać reguły, co umożliwia bezpośrednio do emulatorów w ramach testów integracji i testów ręcznych.

Różnice między emulatorami baz danych a środowiskiem produkcyjnym

  • Nie musisz bezpośrednio tworzyć instancji bazy danych. Emulator automatycznie utworzy każdą instancję bazy danych, do której uzyskujesz dostęp.
  • Każda nowa baza danych jest uruchamiana z zamkniętymi regułami, więc użytkownicy bez uprawnień administracyjnych który może odczytywać lub zapisywać.
  • Każda emulowana baza danych ma limity i kwoty abonamentu Spark (w szczególności każda instancja ma limit 100 jednoczesnych połączeń).
  • Dowolna baza danych akceptuje ciąg "owner" jako token uwierzytelniania administratora.
  • Emulatory nie współpracują obecnie z innymi usługami Firebase. W szczególności nie działa zwykły proces uwierzytelniania Firebase. Zamiast tego możesz użyć metody initializeTestApp() w narzędziu rules-unit-testing biblioteka, która zajmuje pole auth. Obiekt Firebase utworzony za pomocą tej metody zachowuje się tak, jakby został uwierzytelniony jako podany przez Ciebie podmiot. Jeśli przekażesz zasadę null, będzie ona działać jako nieuwierzytelniony użytkownik (na przykład reguły auth != null zakończą się niepowodzeniem).

Interakcja z emulatorem Realtime Database

Instancja produkcyjna Firebase Realtime Database jest dostępna w subdomenie firebaseio.com i możesz uzyskać dostęp do interfejsu API REST w ten sposób:

https://<database_name>.firebaseio.com/path/to/my/data.json

Emulator działa lokalnie i jest dostępny pod adresem localhost:9000. Interakcja z konkretną instancją bazy danych, musisz użyć parametru zapytania ns aby podać nazwę bazy danych.

http://localhost:9000/path/to/my/data.json?ns=<database_name>

Przeprowadzanie lokalnych testów jednostkowych za pomocą pakietu SDK JavaScript w wersji 9

Firebase udostępnia bibliotekę do testowania jednostek reguł bezpieczeństwa zarówno z pakietem SDK JavaScript w wersji 9, jak i z pakietem SDK w wersji 8. Interfejsy API biblioteki są w znacznym stopniu w inny sposób. Zalecamy korzystanie z biblioteki testowej v9, która jest prostsza w obsłudze wymaga mniej konfiguracji, aby można było łączyć się z emulatorami, i bezpiecznie uniknąć przypadkowego wykorzystanie zasobów produkcyjnych. Aby zapewnić zgodność wsteczną, wprowadzamy dostępna biblioteka do testowania wersji 8.

Interakcja z emulatorem za pomocą modułu @firebase/rules-unit-testing który działa lokalnie. Jeśli wystąpi przekroczenie limitu czasu oczekiwania lub ECONNREFUSED błąd, sprawdź jeszcze raz że emulator działa.

Zdecydowanie zalecamy korzystanie z najnowszej wersji środowiska Node.js, co pozwoli Ci korzystać z Zapis async/await. Prawie wszystkie zachowania, które warto przetestować obejmuje funkcje asynchroniczne, a moduł testowania jest przeznaczony do działania Kod oparty na obietnicy.

Biblioteka testowania jednostkowego w wersji 9 zawsze wie o emulatorach i nigdy zasobów produkcyjnych.

Bibliotekę zaimportujesz za pomocą modułowych instrukcji importowania w wersji 9. Przykład:

import {
  assertFails,
  assertSucceeds,
  initializeTestEnvironment
} from "@firebase/rules-unit-testing"

// Use `const { … } = require("@firebase/rules-unit-testing")` if imports are not supported
// Or we suggest `const testing = require("@firebase/rules-unit-testing")` if necessary.

Po zaimportowaniu testów jednostkowych ich implementacja obejmuje:

  • Tworzenie i konfigurowanie obiektu RulesTestEnvironment z wywołaniem initializeTestEnvironment
  • Konfigurowanie danych testowych bez wywoływania funkcji Rules, dla wygody która pozwala tymczasowo je ominąć, RulesTestEnvironment.withSecurityRulesDisabled
  • Konfigurowanie pakietu testowego i punktów zaczepienia przed i po każdym teście z wywołaniami wyczyść dane testowe i środowisko, takie jak RulesTestEnvironment.cleanup() lub RulesTestEnvironment.clearFirestore().
  • Wdrażanie przypadków testowych, które naśladują stany uwierzytelniania za pomocą RulesTestEnvironment.authenticatedContext i RulesTestEnvironment.unauthenticatedContext

Typowe metody i funkcje użytkowe

Zobacz też metodami testowania konkretnych emulatorów, które korzystają z modułowego interfejsu API.

initializeTestEnvironment() => RulesTestEnvironment

Ta funkcja inicjuje środowisko testowe do testowania jednostkowego reguł. Aby przetestować konfigurację, najpierw wywołaj tę funkcję. Aby uruchomić test, musisz uruchomić emulatory.

Funkcja akceptuje opcjonalny obiekt definiujący TestEnvironmentConfig, który może zawierać identyfikator projektu i ustawienia konfiguracji emulatora.

let testEnv = await initializeTestEnvironment({
  projectId: "demo-project-1234",
  firestore: {
    rules: fs.readFileSync("firestore.rules", "utf8"),
  },
});

RulesTestEnvironment.authenticatedContext({ user_id: string, tokenOptions?: TokenOptions }) => RulesTestContext

Ta metoda tworzy RulesTestContext, który działa jak uwierzytelniony Authentication użytkownik. Żądania utworzone przy użyciu zwróconego kontekstu będą miały model Dołączono Authentication token. Opcjonalnie prześlij obiekt definiujący deklaracje niestandardowe lub zastąpienia dla ładunków tokenów Authentication.

Użyj zwróconego obiektu kontekstu testowego w testach, aby uzyskać dostęp do dowolnego emulatora skonfigurowanych instancji, w tym tych ze skonfigurowanych przy użyciu initializeTestEnvironment.

// Assuming a Firestore app and the Firestore emulator for this example
import { setDoc } from "firebase/firestore";

const alice = testEnv.authenticatedContext("alice", {  });
// Use the Firestore instance associated with this context
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

RulesTestEnvironment.unauthenticatedContext() => RulesTestContext

Ta metoda tworzy obiekt RulesTestContext, który zachowuje się jak klient niezalogowany za pomocą Authentication. Żądania utworzone za pomocą zwróconego kontekstu nie będą tokeny uwierzytelniania Firebase.

Użyj zwróconego obiektu kontekstu testowego w testach, aby uzyskać dostęp do dowolnego emulatora skonfigurowanych instancji, w tym tych ze skonfigurowanych przy użyciu initializeTestEnvironment.

// Assuming a Cloud Storage app and the Storage emulator for this example
import { getStorage, ref, deleteObject } from "firebase/storage";

const alice = testEnv.unauthenticatedContext();

// Use the Cloud Storage instance associated with this context
const desertRef = ref(alice.storage(), 'images/desert.jpg');
await assertSucceeds(deleteObject(desertRef));

RulesTestEnvironment.withSecurityRulesDisabled()

Uruchom funkcję konfiguracji testowej z kontekstem, który działa tak, jakby reguły zabezpieczeń wyłączono.

Ta metoda korzysta z funkcji wywołania zwrotnego, która wykorzystuje funkcję omijania reguł zabezpieczeń i zwraca obietnicę. Kontekst zostanie zniszczony, gdy obietnica podejmie decyzję lub ją odrzuci.

RulesTestEnvironment.cleanup()

Ta metoda usuwa wszystkie RulesTestContexts utworzone w środowisku testowym i oczyszcza zasoby, co umożliwia prawidłowe zakończenie.

Ta metoda nie zmienia w żaden sposób stanu emulatorów. Resetowanie danych między kolejnymi testami należy użyć metody jasnej danych specyficznej dla emulatora aplikacji.

assertSucceeds(pr: Promise<any>)) => Promise<any>

To jest funkcja narzędziowa przypadku testowego.

Funkcja potwierdza, że podana usługa Promise opakowuje operację emulatora zostanie rozwiązany bez naruszeń reguł zabezpieczeń.

await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

assertFails(pr: Promise<any>)) => Promise<any>

To jest funkcja narzędziowa przypadku testowego.

Funkcja potwierdza, że podana usługa Promise opakowuje operację emulatora zostanie odrzucona z powodu naruszenia reguł zabezpieczeń.

await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });

Metody specyficzne dla emulatora

Zobacz też popularnych metod testowania i funkcji użytkowych za pomocą modułowego interfejsu API.

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

Ta metoda usuwa w bazie danych Firestore dane, które należą do Uprawnienia projectId zostały skonfigurowane dla emulatora Firestore.

RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;

Ta metoda pobiera instancję Firestore na potrzeby tego kontekstu testowego. Zwrócone wartości Instancji pakietu SDK Firebase JS Client SDK można używać z interfejsami API pakietu SDK klienta (modułowa wersja 9) lub zgodnego z wersją 9).

Realtime Database

Realtime Database

RulesTestEnvironment.clearDatabase() => Promise<void>

Ta metoda usuwa dane w Realtime Database należące do projectId skonfigurowanego dla emulatora Realtime Database.

RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;

Pobierz instancję Realtime Database dla tego kontekstu testowego. Zwrócony JS Firebase Instancji pakietu SDK klienta można używać z interfejsami API klienta pakietu SDK (modułowymi lub z przestrzenią nazw w wersji 9 lub nowszej). Metoda przyjmuje adres URL instancji bazy danych w czasie rzeczywistym. Jeśli jest określony, zwraca instancję emulowanej wersji przestrzeni nazw z parametrami wyodrębnionymi z adresu URL.

Cloud Storage

Cloud Storage

RulesTestEnvironment.clearStorage() => Promise<void>

Ta metoda usuwa obiekty i metadane w zasobnikach na dane należących do Ustawienie projectId zostało skonfigurowane dla emulatora Cloud Storage.

RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;

Ta metoda zwraca instancję Storage skonfigurowaną do połączenia z emulatorem. Metoda akceptuje adres URL gs:// do zasobnika Cloud Storage w celu przetestowania. Jeśli zwraca instancję Storage dla emulowanej wersji nazwy zasobnika.

Przeprowadzaj lokalne testy jednostkowe za pomocą pakietu SDK JavaScript w wersji 8

Wybierz usługę, aby zobaczyć metody używane przez pakiet SDK Firebase Test do interfejsu za pomocą emulatora.

Cloud Firestore

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

Ta metoda zwraca zainicjowaną aplikację Firebase odpowiadającą projektowi Identyfikator i zmienne uwierzytelniania określone w opcjach. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako konkretny użytkownik do testów.

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

Ta metoda zwraca zainicjowaną aplikację Firebase dla administratora. Podczas odczytu i zapisu ta aplikacja pomija reguły zabezpieczeń. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, aby ustawić stan testów.

firebase.initializeAdminApp({ projectId: "my-test-project" });
    

apps() => [FirebaseApp] Ta metoda zwraca wszystkie obecnie zainicjowane aplikacje testowe i administracyjne. Za jego pomocą możesz wyczyścić aplikacje między testami lub po nich.

Promise.all(firebase.apps().map(app => app.delete()))

loadFirestoreRules({ projectId: string, rules: Object }) => Promise

Ta metoda wysyła reguły do lokalnej bazy danych. Potrzebny jest obiekt który określa reguły w postaci ciągu znaków. Użyj tej metody, aby ustawić reguły dla swojej bazy danych.

firebase.loadFirestoreRules({
  projectId: "my-test-project",
  rules: fs.readFileSync("/path/to/firestore.rules", "utf8")
});
    

assertFails(pr: Promise) => Promise

Ta metoda zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe są poprawne lub które uda się w przypadku odrzucenia danych wejściowych. Służy do potwierdzenia, czy baza danych odczytywana lub nie można zapisać.

firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
    

assertSucceeds(pr: Promise) => Promise

Ta metoda zwraca obietnicę, która jest spełniona, jeśli dane wejściowe są prawidłowe, i odrzucona, jeśli są odrzucone. Używaj go, aby stwierdzić, czy odczyt lub zapis bazy danych zakończył się powodzeniem.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

Ta metoda usuwa wszystkie dane powiązane z konkretnym projektem w lokalnej instancji Firestore. Użyj tej metody, aby wyczyścić po testach.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Realtime Database

Realtime Database

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

Użyj tej opcji, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik, która będzie używana w testach.

Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie bazy danych i uwierzytelnieniu zastąpienie zmiennej określone w opcjach.

firebase.initializeTestApp({
  databaseName: "my-database",
  auth: { uid: "alice" }
});

initializeAdminApp({ databaseName: string }) => FirebaseApp

Użyj tej opcji, aby utworzyć aplikację uwierzytelnioną jako administrator, aby skonfigurować stan na potrzeby testów.

Zwraca zainicjowaną aplikację Firebase administratora odpowiadającą nazwie bazy danych określonej w opcjach. Ta aplikacja omija reguły zabezpieczeń podczas odczytu i zapisu do bazy danych.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

Służy do ustawiania reguł bazy danych.

Wysyła reguły do lokalnej bazy danych. Pobiera obiekt opcji, który określa bazę danych „databaseName” i „reguły”, jako struny.

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

Zwraca wszystkie obecnie zainicjowane aplikacje testowe i administracyjne.

Użyj tej opcji, aby wyczyścić aplikacje między testami lub po ich zakończeniu (pamiętaj, że zainicjowane aplikacje z aktywnymi detektorami uniemożliwiają zamknięcie JavaScriptu):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Zwraca obietnicę, która jest odrzucona, jeśli dane wejściowe są poprawne, i akceptowana, jeśli dane wejściowe zostały odrzucone.

Użyj go, aby zapewnić, że odczyt lub zapis bazy danych nie powiódł się:

firebase.assertFails(app.database().ref("secret").once("value"));

assertSucceeds(pr: Promise) => Promise

Zwraca obietnicę, która jest skuteczna, jeśli dane wejściowe są spełnione, i jest odrzucana, jeśli dane wejściowe zostaną odrzucone.

Służy do potwierdzenia, że odczyt lub zapis bazy danych zakończył się powodzeniem:

firebase.assertSucceeds(app.database().ref("public").once("value"));

Cloud Storage

Cloud Storage

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

Użyj tego pola, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do wykorzystania w testach.

Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie zasobnika na dane i zastąpienie zmiennej uwierzytelniania określone w opcjach.

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Utwórz aplikację uwierzytelnioną jako administrator, aby skonfigurować stan na potrzeby testów.

Zwraca zainicjowaną przez administratora aplikację Firebase odpowiadającą nazwie zasobnika pamięci podręcznej podanej w opcjach. Ta aplikacja omija reguły zabezpieczeń podczas odczytywania i zapisuje dane w zasobniku.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

Użyj go do skonfigurowania reguł zasobnika pamięci.

Wysyła reguły do zasobników na dane zarządzanego lokalnie. Pobiera obiekt opcji, który określa Twój „storageBucket” i „reguły”, jako struny.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

Zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne.

Użyj tej opcji, aby wyczyścić aplikacje między testami lub po ich zakończeniu (pamiętaj, że zainicjowane aplikacje z aktywnymi detektorami uniemożliwiają zamknięcie JavaScriptu):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe są poprawne, i akceptowana, jeśli dane wejściowe zostały odrzucone.

Użyj tego polecenia, aby sprawdzić, czy odczyt lub zapis zasobnika magazynu nie zakończył się niepowodzeniem:

firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());

assertSucceeds(pr: Promise) => Promise

Zwraca obietnicę, która jest skuteczna, jeśli dane wejściowe są spełnione, i jest odrzucana, jeśli dane wejściowe zostały odrzucone.

Służy do potwierdzenia, że odczyt lub zapis w zasobniku na dane zakończył się powodzeniem:

firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());

Interfejs API biblioteki RUT dla pakietu JS SDK w wersji 8

Wybierz usługę, aby zobaczyć metody używane przez pakiet SDK Firebase Test do interfejsu za pomocą emulatora.

Cloud Firestore

Cloud Firestore

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

Ta metoda zwraca zainicjowaną aplikację Firebase odpowiadającą projektowi Identyfikator i zmienne uwierzytelniania określone w opcjach. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako konkretny użytkownik do testów.

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

Ta metoda zwraca zainicjowaną aplikację Firebase dla administratora. Podczas odczytu i zapisu ta aplikacja pomija reguły zabezpieczeń. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, aby ustawić stan testów.

firebase.initializeAdminApp({ projectId: "my-test-project" });
    

apps() => [FirebaseApp] Ta metoda zwraca wszystkie obecnie zainicjowane aplikacje testowe i administracyjne. Za jego pomocą możesz wyczyścić aplikacje między testami lub po nich.

Promise.all(firebase.apps().map(app => app.delete()))

loadFirestoreRules({ projectId: string, rules: Object }) => Promise

Ta metoda wysyła reguły do lokalnej bazy danych. Potrzebny jest obiekt który określa reguły w postaci ciągu znaków. Użyj tej metody, aby ustawić reguły dla swojej bazy danych.

firebase.loadFirestoreRules({
  projectId: "my-test-project",
  rules: fs.readFileSync("/path/to/firestore.rules", "utf8")
});
    

assertFails(pr: Promise) => Promise

Ta metoda zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe są poprawne lub które uda się w przypadku odrzucenia danych wejściowych. Służy do potwierdzenia, czy baza danych odczytywana lub nie można zapisać.

firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
    

assertSucceeds(pr: Promise) => Promise

Ta metoda zwraca obietnicę, która jest spełniona, jeśli dane wejściowe są prawidłowe, i odrzucona, jeśli są odrzucone. Używaj go, aby stwierdzić, czy odczyt lub zapis bazy danych zakończył się powodzeniem.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

Ta metoda usuwa wszystkie dane powiązane z konkretnym projektem w lokalnej instancji Firestore. Użyj tej metody, aby wyczyścić po testach.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Realtime Database

Realtime Database

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

Użyj tej opcji, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik, która będzie używana w testach.

Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie bazy danych i uwierzytelnieniu zastąpienie zmiennej określone w opcjach.

firebase.initializeTestApp({
  databaseName: "my-database",
  auth: { uid: "alice" }
});

initializeAdminApp({ databaseName: string }) => FirebaseApp

Użyj tej opcji, aby utworzyć aplikację uwierzytelnioną jako administrator, aby skonfigurować stan na potrzeby testów.

Zwraca zainicjowaną aplikację Firebase administratora odpowiadającą nazwie bazy danych określonej w opcjach. Ta aplikacja omija reguły zabezpieczeń podczas odczytu i zapisu do bazy danych.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

Służy do ustawiania reguł bazy danych.

Wysyła reguły do lokalnej bazy danych. Pobiera obiekt opcji, który określa bazę danych „databaseName” i „reguły”, jako struny.

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

Zwraca wszystkie obecnie zainicjowane aplikacje testowe i administracyjne.

Użyj tej opcji, aby wyczyścić aplikacje między testami lub po ich zakończeniu (pamiętaj, że zainicjowane aplikacje z aktywnymi detektorami uniemożliwiają zamknięcie JavaScriptu):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Zwraca obietnicę, która jest odrzucona, jeśli dane wejściowe są poprawne, i akceptowana, jeśli dane wejściowe zostały odrzucone.

Użyj go, aby zapewnić, że odczyt lub zapis bazy danych nie powiódł się:

firebase.assertFails(app.database().ref("secret").once("value"));

assertSucceeds(pr: Promise) => Promise

Zwraca obietnicę, która jest skuteczna, jeśli dane wejściowe są spełnione, i jest odrzucana, jeśli dane wejściowe zostaną odrzucone.

Służy do potwierdzenia, że odczyt lub zapis bazy danych zakończył się powodzeniem:

firebase.assertSucceeds(app.database().ref("public").once("value"));

Cloud Storage

Cloud Storage

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

Użyj tego pola, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do wykorzystania w testach.

Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie zasobnika na dane i zastąpienie zmiennej uwierzytelniania określone w opcjach.

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Utwórz aplikację uwierzytelnioną jako administrator, aby skonfigurować stan na potrzeby testów.

Zwraca zainicjowaną przez administratora aplikację Firebase odpowiadającą nazwie zasobnika pamięci podręcznej podanej w opcjach. Ta aplikacja omija reguły zabezpieczeń podczas odczytywania i zapisuje dane w zasobniku.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

Użyj go do skonfigurowania reguł zasobnika pamięci.

Wysyła reguły do zasobników na dane zarządzanego lokalnie. Pobiera obiekt opcji, który określa Twój „storageBucket” i „reguły”, jako struny.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

Zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne.

Użyj tej opcji, aby wyczyścić aplikacje między testami lub po ich zakończeniu (pamiętaj, że zainicjowane aplikacje z aktywnymi detektorami uniemożliwiają zamknięcie JavaScriptu):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe są poprawne, i akceptowana, jeśli dane wejściowe zostały odrzucone.

Użyj tego polecenia, aby sprawdzić, czy odczyt lub zapis zasobnika magazynu nie zakończył się niepowodzeniem:

firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());

assertSucceeds(pr: Promise) => Promise

Zwraca obietnicę, która jest skuteczna, jeśli dane wejściowe są spełnione, i jest odrzucana, jeśli dane wejściowe zostały odrzucone.

Służy do potwierdzenia, że odczyt lub zapis w zasobniku na dane zakończył się powodzeniem:

firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());