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” plikufirebase.json
. Jeśli plik nie istnieje i nie używaszloadFirestoreRules
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 symulowanieauth
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ędziurules-unit-testing
biblioteka, która zajmuje poleauth
. 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łyauth != 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.
- Częste metody testowania i funkcje pomocnicze w pakiecie SDK w wersji 9
- Metody testowe emulatorów w pakiecie SDK w wersji 9
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łanieminitializeTestEnvironment
- 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()
lubRulesTestEnvironment.clearFirestore()
. - Wdrażanie przypadków testowych, które naśladują stany uwierzytelniania za pomocą
RulesTestEnvironment.authenticatedContext
iRulesTestEnvironment.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());