Pakiet Firebase Local Emulator Suite ułatwia pełną weryfikację funkcji i zachowania aplikacji . To także świetne narzędzie do weryfikowania konfiguracji Reguł bezpieczeństwa Firebase. Użyj emulatorów Firebase do uruchamiania i automatyzacji testów jednostkowych w środowisku lokalnym. Metody opisane w tym dokumencie powinny pomóc w tworzeniu i automatyzacji testów jednostkowych dla aplikacji, które sprawdzają poprawność reguł.
Jeśli jeszcze tego nie zrobiłeś, skonfiguruj emulatory Firebase .
Przed uruchomieniem emulatora
Zanim zaczniesz korzystać z emulatora, pamiętaj o następujących kwestiach:
- Emulator początkowo załaduje reguły określone w polu
firestore.rules
lub „storage.rules” plikufirebase.json
. Jeśli plik nie istnieje i nie używasz metodyloadFirestoreRules
lub „loadStorageRules”, jak opisano poniżej, emulator traktuje wszystkie projekty jako mające otwarte reguły. - Podczas gdy większość zestawów SDK Firebase współpracuje bezpośrednio z emulatorami, tylko biblioteka
@firebase/rules-unit-testing
obsługuje fałszyweauth
w regułach bezpieczeństwa, co znacznie ułatwia testy jednostkowe. Ponadto biblioteka obsługuje kilka funkcji specyficznych dla emulatora, takich jak czyszczenie wszystkich danych, jak wymieniono poniżej. - Emulatory akceptują również produkcyjne tokeny Firebase Auth dostarczane za pośrednictwem SDK klienta i odpowiednio oceniają reguły, co umożliwia bezpośrednie połączenie aplikacji z emulatorami w testach integracyjnych i ręcznych.
Różnice między emulatorami bazy danych a produkcją
- Nie musisz jawnie tworzyć instancji bazy danych. Emulator automatycznie utworzy każdą dostępną instancję bazy danych.
- Każda nowa baza danych jest uruchamiana z zamkniętymi regułami, więc użytkownicy niebędący administratorami nie będą mogli czytać ani pisać.
- Każda emulowana baza danych stosuje limity i przydziały planu Spark (przede wszystkim ogranicza to każde wystąpienie do 100 jednoczesnych połączeń).
- Każda baza danych zaakceptuje ciąg
"owner"
jako token autoryzacji administratora. - Emulatory obecnie nie współpracują z innymi produktami Firebase. Warto zauważyć, że normalny przepływ uwierzytelniania Firebase nie działa. Zamiast tego możesz użyć metody
initializeTestApp()
w bibliotecerules-unit-testing
, która przyjmuje poleauth
. Obiekt Firebase utworzony przy użyciu tej metody zachowuje się tak, jakby został pomyślnie uwierzytelniony jako dowolna podana jednostka. Jeśli przekażesznull
, będzie się zachowywał jak nieuwierzytelniony użytkownik (na przykład regułyauth != null
zawiodą).
Interakcja z emulatorem bazy danych czasu rzeczywistego
Produkcyjna instancja bazy danych czasu rzeczywistego Firebase jest dostępna w subdomenie firebaseio.com
i możesz uzyskać dostęp do interfejsu API REST w następujący sposób:
https://<database_name>.firebaseio.com/path/to/my/data.json
Emulator działa lokalnie i jest dostępny pod localhost:9000
. Aby wejść w interakcję z konkretną instancją bazy danych, będziesz musiał użyć parametru zapytania ns
, aby określić nazwę bazy danych.
http://localhost:9000/path/to/my/data.json?ns=<database_name>
Przeprowadzaj lokalne testy jednostkowe za pomocą zestawu SDK języka JavaScript w wersji 9
Firebase dystrybuuje bibliotekę testów jednostkowych reguł bezpieczeństwa wraz z pakietem SDK JavaScript w wersji 9 i pakietem SDK w wersji 8. Interfejsy API bibliotek znacznie się różnią. Zalecamy bibliotekę testową v9, która jest bardziej usprawniona i wymaga mniej konfiguracji w celu połączenia z emulatorami, a tym samym bezpiecznie unika przypadkowego użycia zasobów produkcyjnych. Aby zapewnić kompatybilność wsteczną, nadal udostępniamy bibliotekę testową w wersji 8 .
- Typowe metody testowania i funkcje narzędziowe w pakiecie SDK v9
- Metody testowe specyficzne dla emulatora w zestawie v9 SDK
Użyj modułu @firebase/rules-unit-testing
do interakcji z emulatorem działającym lokalnie. Jeśli wystąpią przekroczenia limitu czasu lub błędy ECONNREFUSED
, dokładnie sprawdź, czy emulator faktycznie działa.
Zdecydowanie zalecamy korzystanie z najnowszej wersji Node.js, aby można było używać notacji async/await
. Niemal wszystkie zachowania, które możesz chcieć przetestować, obejmują funkcje asynchroniczne, a moduł testowania został zaprojektowany do pracy z kodem opartym na obietnicach.
Biblioteka v9 Rules Unit Testing jest zawsze świadoma istnienia emulatorów i nigdy nie dotyka Twoich zasobów produkcyjnych.
Importujesz bibliotekę za pomocą modułowych instrukcji importu v9. Na przykład:
import {
assertFails,
assertSucceeds,
initializeTestEnvironment,
RulesTestEnvironment,
} 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 wdrożenie testów jednostkowych obejmuje:
- Tworzenie i konfigurowanie
RulesTestEnvironment
z wywołaniem metodyinitializeTestEnvironment
. - Konfigurowanie danych testowych bez wyzwalania reguł przy użyciu wygodnej metody umożliwiającej tymczasowe ich pominięcie —
RulesTestEnvironment.withSecurityRulesDisabled
. - Konfigurowanie zestawu testów i poszczególnych testów przed/po wiąże się z wywołaniami do czyszczenia danych testowych i środowiska, takimi jak
RulesTestEnvironment.cleanup()
lubRulesTestEnvironment.clearFirestore()
. - Implementacja przypadków testowych, które naśladują stany uwierzytelniania przy użyciu
RulesTestEnvironment.authenticatedContext
iRulesTestEnvironment.unauthenticatedContext
.
Typowe metody i funkcje użytkowe
Zobacz także metody testowania specyficzne dla emulatora przy użyciu modułowego interfejsu API .
initializeTestEnvironment() => RulesTestEnvironment
Ta funkcja inicjuje środowisko testowe dla testów jednostkowych reguł. Wywołaj tę funkcję najpierw w celu konfiguracji testu. Pomyślne wykonanie wymaga uruchomienia emulatorów.
Funkcja akceptuje opcjonalny obiekt definiujący TestEnvironmentConfig
, który może składać się z identyfikatora projektu i ustawień konfiguracyjnych 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óra zachowuje się jak uwierzytelniony użytkownik uwierzytelniania. Żądania utworzone za pośrednictwem zwróconego kontekstu będą miały dołączony fałszywy token uwierzytelniania. Opcjonalnie Przekaż obiekt definiujący niestandardowe oświadczenia lub przesłonięcia dla ładunków tokenu uwierzytelniania.
Użyj zwróconego obiektu kontekstu testowego w swoich testach, aby uzyskać dostęp do wszystkich skonfigurowanych wystąpień emulatora, w tym skonfigurowanych za pomocą 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 RulesTestContext
, która zachowuje się jak klient, który nie jest zalogowany za pośrednictwem uwierzytelniania. Żądania utworzone za pośrednictwem zwróconego kontekstu nie będą miały dołączonych tokenów Firebase Auth.
Użyj zwróconego obiektu kontekstu testowego w swoich testach, aby uzyskać dostęp do wszystkich skonfigurowanych wystąpień emulatora, w tym skonfigurowanych za pomocą 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 testu z kontekstem, który zachowuje się tak, jakby reguły bezpieczeństwa były wyłączone.
Ta metoda przyjmuje funkcję wywołania zwrotnego, która przyjmuje kontekst omijania zasad zabezpieczeń i zwraca obietnicę. Kontekst zostanie zniszczony, gdy obietnica zostanie rozwiązana / odrzucona.
RulesTestEnvironment.cleanup()
Ta metoda niszczy wszystkie RulesTestContexts
utworzone w środowisku testowym i czyści podstawowe zasoby, umożliwiając czyste wyjście.
Ta metoda w żaden sposób nie zmienia stanu emulatorów. Aby zresetować dane między testami, użyj metody czyszczenia danych specyficznej dla emulatora aplikacji.
assertSucceeds(pr: Promise<any>)) => Promise<any>
Jest to funkcja użyteczności przypadków testowych.
Funkcja zapewnia, że dostarczona obietnica zawijająca operację emulatora zostanie rozwiązana bez naruszenia zasad bezpieczeństwa.
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });
assertFails(pr: Promise<any>)) => Promise<any>
Jest to funkcja użyteczności przypadków testowych.
Funkcja zapewnia, że dostarczona obietnica zawijająca operację emulatora zostanie odrzucona z naruszeniem zasad bezpieczeństwa.
await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });
Metody specyficzne dla emulatora
Zapoznaj się również z popularnymi metodami testowania i funkcjami narzędziowymi wykorzystującymi modułowy interfejs API .
Cloud Firestore
Cloud Firestore
RulesTestEnvironment.clearFirestore() => Promise<void>
Ta metoda czyści dane w bazie danych Firestore, które należą do projectId
skonfigurowanego dla emulatora Firestore.
RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;
Ta metoda pobiera instancję Firestore dla tego kontekstu testowego. Zwrócona instancja Firebase JS Client SDK może być używana z interfejsami API klienta SDK (v9 modular lub v9 Compat).
Baza danych czasu rzeczywistego
Baza danych czasu rzeczywistego
RulesTestEnvironment.clearDatabase() => Promise<void>
Ta metoda czyści dane w bazie danych czasu rzeczywistego, które należą do projectId
skonfigurowanego dla emulatora bazy danych czasu rzeczywistego.
RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;
Uzyskaj instancję bazy danych czasu rzeczywistego dla tego kontekstu testowego. Zwróconej instancji Firebase JS Client SDK można używać z interfejsami API SDK klienta (modułowymi lub przestrzeniami nazw, w wersji 9 lub nowszej). Metoda akceptuje adres URL instancji bazy danych czasu rzeczywistego. Jeśli określono, zwraca instancję dla emulowanej wersji przestrzeni nazw z parametrami wyodrębnionymi z adresu URL.
Magazyn w chmurze
Magazyn w chmurze
RulesTestEnvironment.clearStorage() => Promise<void>
Ta metoda czyści obiekty i metadane w zasobnikach pamięci należących do projectId
skonfigurowanego dla emulatora Cloud Storage.
RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;
Ta metoda zwraca wystąpienie magazynu skonfigurowane do łączenia się z emulatorem. Metoda akceptuje adres URL gs://
do zasobnika Firebase do testowania. Jeśli określono, zwraca wystąpienie magazynu dla emulowanej wersji nazwy zasobnika.
Przeprowadzaj lokalne testy jednostkowe za pomocą zestawu SDK języka JavaScript w wersji 8
Wybierz produkt, aby zobaczyć metody używane przez pakiet Firebase Test SDK do łączenia się z emulatorem.
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
Ta metoda zwraca zainicjowaną aplikację Firebase odpowiadającą identyfikatorowi projektu i zmiennej autoryzacji określonej w opcjach. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.
firebase.initializeTestApp({ projectId: "my-test-project", auth: { uid: "alice", email: "alice@example.com" } });
initializeAdminApp({ projectId: string }) => FirebaseApp
Ta metoda zwraca zainicjowaną aplikację Firebase administratora. Ta aplikacja omija zasady bezpieczeństwa podczas wykonywania operacji odczytu i zapisu. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, aby ustawić stan na potrzeby testów.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Ta metoda zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne. Użyj tego, aby 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 działającej lokalnie bazy danych. Pobiera obiekt, który określa reguły jako ciąg znaków. Użyj tej metody, aby ustawić reguły 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 powiedzą się lub która powiedzie się, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby stwierdzić, czy odczyt lub zapis bazy danych nie powiedzie się.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Ta metoda zwraca obietnicę, która powiedzie się, jeśli dane wejściowe powiedzą się i zostanie odrzucona, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby stwierdzić, czy odczyt lub zapis bazy danych się powiedzie.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
Ta metoda czyści wszystkie dane powiązane z konkretnym projektem w działającej lokalnie instancji Firestore. Użyj tej metody do sprzątania po testach.
firebase.clearFirestoreData({ projectId: "my-test-project" });
Baza danych czasu rzeczywistego
Baza danych czasu rzeczywistego
initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp
Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.
Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie bazy danych i nadpisaniu zmiennej auth określonej w opcjach.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, aby skonfigurować stan do testów.
Zwraca zainicjowaną aplikację Firebase administratora odpowiadającą nazwie bazy danych określonej w opcjach. Ta aplikacja omija reguły bezpieczeństwa podczas odczytu i zapisu w bazie danych.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
Użyj tego, aby ustawić reguły swojej bazy danych.
Wysyła reguły do działającej lokalnie bazy danych. Pobiera obiekt opcji, który określa „nazwę bazy danych” i „reguły” jako ciągi znaków.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
Zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne.
Użyj tego, aby wyczyścić aplikacje między testami lub po nich (zwróć uwagę, że zainicjowane aplikacje z aktywnymi odbiornikami uniemożliwiają zamknięcie JavaScript):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe powiedzą się i powiedzie się, jeśli dane wejściowe zostaną odrzucone.
Użyj tego, aby stwierdzić, ż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 powiedzie się, jeśli dane wejściowe powiedzą się i zostanie odrzucona, jeśli dane wejściowe zostaną odrzucone.
Użyj tego, aby stwierdzić, że odczyt lub zapis bazy danych powiódł się:
firebase.assertSucceeds(app.database().ref("public").once("value"));
Magazyn w chmurze
Magazyn w chmurze
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.
Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie zasobnika pamięci i zastąpieniu zmiennej autoryzacji określonej w opcjach.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, aby skonfigurować stan do testów.
Zwraca zainicjowaną aplikację Firebase administratora odpowiadającą nazwie zasobnika pamięci określonej w opcjach. Ta aplikacja omija reguły bezpieczeństwa podczas odczytu i zapisu w zasobniku.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Użyj tego, aby ustawić reguły swojego zasobnika na dane.
Wysyła reguły do lokalnie zarządzanych zasobników pamięci masowej. Pobiera obiekt opcji, który określa „storageBucket” i „reguły” jako ciągi znaków.
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 tego, aby wyczyścić aplikacje między testami lub po nich (zwróć uwagę, że zainicjowane aplikacje z aktywnymi odbiornikami uniemożliwiają zamknięcie JavaScript):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe powiedzą się i powiedzie się, jeśli dane wejściowe zostaną odrzucone.
Użyj tego, aby stwierdzić, że odczyt lub zapis zasobnika pamięci nie powiódł się:
firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());
assertSucceeds(pr: Promise) => Promise
Zwraca obietnicę, która powiedzie się, jeśli dane wejściowe powiedzą się i zostanie odrzucona, jeśli dane wejściowe zostaną odrzucone.
Użyj tego, aby upewnić się, że odczyt lub zapis zasobnika pamięci powiódł się:
firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());
API biblioteki RUT dla JS SDK v8
Wybierz produkt, aby zobaczyć metody używane przez pakiet Firebase Test SDK do łączenia się z emulatorem.
Cloud Firestore
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
Ta metoda zwraca zainicjowaną aplikację Firebase odpowiadającą identyfikatorowi projektu i zmiennej autoryzacji określonej w opcjach. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.
firebase.initializeTestApp({ projectId: "my-test-project", auth: { uid: "alice", email: "alice@example.com" } });
initializeAdminApp({ projectId: string }) => FirebaseApp
Ta metoda zwraca zainicjowaną aplikację Firebase administratora. Ta aplikacja omija zasady bezpieczeństwa podczas wykonywania operacji odczytu i zapisu. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, aby ustawić stan na potrzeby testów.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Ta metoda zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne. Użyj tego, aby 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 działającej lokalnie bazy danych. Pobiera obiekt, który określa reguły jako ciąg znaków. Użyj tej metody, aby ustawić reguły 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 powiedzą się lub która powiedzie się, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby stwierdzić, czy odczyt lub zapis bazy danych nie powiedzie się.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Ta metoda zwraca obietnicę, która powiedzie się, jeśli dane wejściowe powiedzą się i zostanie odrzucona, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby stwierdzić, czy odczyt lub zapis bazy danych się powiedzie.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
Ta metoda czyści wszystkie dane powiązane z konkretnym projektem w działającej lokalnie instancji Firestore. Użyj tej metody do sprzątania po testach.
firebase.clearFirestoreData({ projectId: "my-test-project" });
Baza danych czasu rzeczywistego
Baza danych czasu rzeczywistego
initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp
Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.
Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie bazy danych i nadpisaniu zmiennej auth określonej w opcjach.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, aby skonfigurować stan do testów.
Zwraca zainicjowaną aplikację Firebase administratora odpowiadającą nazwie bazy danych określonej w opcjach. Ta aplikacja omija reguły bezpieczeństwa podczas odczytu i zapisu w bazie danych.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
Użyj tego, aby ustawić reguły swojej bazy danych.
Wysyła reguły do działającej lokalnie bazy danych. Pobiera obiekt opcji, który określa „nazwę bazy danych” i „reguły” jako ciągi znaków.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
Zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne.
Użyj tego, aby wyczyścić aplikacje między testami lub po nich (zwróć uwagę, że zainicjowane aplikacje z aktywnymi odbiornikami uniemożliwiają zamknięcie JavaScript):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe powiedzą się i powiedzie się, jeśli dane wejściowe zostaną odrzucone.
Użyj tego, aby stwierdzić, ż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 powiedzie się, jeśli dane wejściowe powiedzą się i zostanie odrzucona, jeśli dane wejściowe zostaną odrzucone.
Użyj tego, aby stwierdzić, że odczyt lub zapis bazy danych powiódł się:
firebase.assertSucceeds(app.database().ref("public").once("value"));
Magazyn w chmurze
Magazyn w chmurze
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
Użyj tego, aby utworzyć aplikację uwierzytelnioną jako określony użytkownik do użycia w testach.
Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie zasobnika pamięci i zastąpieniu zmiennej autoryzacji określonej w opcjach.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, aby skonfigurować stan do testów.
Zwraca zainicjowaną aplikację Firebase administratora odpowiadającą nazwie zasobnika pamięci określonej w opcjach. Ta aplikacja omija reguły bezpieczeństwa podczas odczytu i zapisu w zasobniku.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Użyj tego, aby ustawić reguły swojego zasobnika na dane.
Wysyła reguły do lokalnie zarządzanych zasobników pamięci masowej. Pobiera obiekt opcji, który określa „storageBucket” i „reguły” jako ciągi znaków.
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 tego, aby wyczyścić aplikacje między testami lub po nich (zwróć uwagę, że zainicjowane aplikacje z aktywnymi odbiornikami uniemożliwiają zamknięcie JavaScript):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Zwraca obietnicę, która jest odrzucana, jeśli dane wejściowe powiedzą się i powiedzie się, jeśli dane wejściowe zostaną odrzucone.
Użyj tego, aby stwierdzić, że odczyt lub zapis zasobnika pamięci nie powiódł się:
firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());
assertSucceeds(pr: Promise) => Promise
Zwraca obietnicę, która powiedzie się, jeśli dane wejściowe powiedzą się i zostanie odrzucona, jeśli dane wejściowe zostaną odrzucone.
Użyj tego, aby upewnić się, że odczyt lub zapis zasobnika pamięci powiódł się:
firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());