Firebase Local Emulator Suite ułatwiają pełną weryfikację funkcji i działania aplikacji. Jest to też świetne narzędzie do weryfikowania konfiguracji usługi Firebase Security Rules. Używaj emulatorów Firebase do uruchamiania i automatyzowania testów jednostkowych w środowisku lokalnym. Metody opisane w tym dokumencie powinny pomóc Ci w tworzeniu i automatyzowaniu testów jednostkowych aplikacji, które weryfikują Rules.
Jeśli jeszcze tego nie zrobisz, skonfiguruj emulatory Firebase.
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
lubstorage.rules
w plikufirebase.json
. Jeśli plik nie istnieje, a nie używasz metodyloadFirestoreRules
aniloadStorageRules
opisanej poniżej, emulator traktuje wszystkie projekty jako mające otwarte reguły. - Chociaż większość pakietów SDK Firebase działa bezpośrednio z emulatorami, tylko biblioteka
@firebase/rules-unit-testing
obsługuje tworzenie wersji próbnychauth
w regułach zabezpieczeń, co znacznie ułatwia testy jednostkowe. Dodatkowo biblioteka obsługuje kilka funkcji specyficznych dla emulatora, takich jak czyszczenie wszystkich danych, jak wymieniono poniżej. - Emulatory będą też akceptować tokeny uwierzytelniania Firebase w wersji produkcyjnej dostarczane przez pakiety SDK klienta i odpowiednio oceniać reguły, co umożliwia bezpośrednie łączenie aplikacji z emulatorami w testach integracyjnych i ręcznych.
Różnice między emulatorami baz danych a środowiskiem produkcyjnym
- Nie musisz jawnie tworzyć instancji bazy danych. Emulator automatycznie utworzy każdą instancję bazy danych, do której uzyskuje dostęp.
- Każda nowa baza danych jest tworzona z zamkniętymi regułami, więc użytkownicy bez uprawnień administratora nie będą mogli odczytywać ani zapisywać danych.
- Każda emulowana baza danych podlega limitom i kwotom abonamentu Spark (w szczególności ogranicza to każdą instancję do 100 jednoczesnych połączeń).
- Każda baza danych zaakceptuje ciąg znaków
"owner"
jako token uwierzytelniania administratora. - Emulatory nie mają obecnie działających interakcji z innymi usługami Firebase. W szczególności nie działa normalny przepływ uwierzytelniania Firebase.
Zamiast tego możesz użyć metody
initializeTestApp()
w bibliotecerules-unit-testing
, która przyjmuje poleauth
. Obiekt Firebase utworzony za pomocą tej metody zachowuje się tak, jakby uwierzytelnianie zostało przeprowadzone z użyciem podanego przez Ciebie podmiotu. Jeśli przekażesz wartośćnull
, będzie to traktowane jako użytkownik nieuwierzytelniony (np. regułyauth != null
nie będą działać).
Interakcja z emulatorem Realtime Database
Instancja produkcyjna FirebaseRealtime Database jest dostępna w subdomenie firebaseio.com
, a do interfejsu REST API możesz uzyskać dostęp 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
. Aby wchodzić w interakcje z konkretną instancją bazy danych, musisz użyć parametru zapytania ns
, aby określić nazwę bazy danych.
http://localhost:9000/path/to/my/data.json?ns=<database_name>
Przeprowadzanie lokalnych testów jednostkowych za pomocą pakietu SDK w JavaScript w wersji 9
Firebase udostępnia bibliotekę testów jednostkowych reguł zabezpieczeń w pakiecie JavaScript SDK w wersji 9 i w pakiecie SDK w wersji 8. Interfejsy API biblioteki znacznie się od siebie różnią. Zalecamy korzystanie z biblioteki testowej w wersji 9, która jest bardziej usprawniona i wymaga mniej konfiguracji, aby połączyć się z emulatorami, a tym samym bezpiecznie uniknąć przypadkowego użycia zasobów produkcyjnych. Aby zapewnić wsteczną zgodność, nadal udostępniamy bibliotekę testową v8.
- Typowe metody testowania i funkcje narzędziowe w pakiecie SDK w wersji 9
- Metody testowania w emulatorze w pakiecie SDK w wersji 9
Użyj modułu @firebase/rules-unit-testing
, aby korzystać z emulatora działającego lokalnie. Jeśli wystąpią przekroczenia limitu czasu lub błędy ECONNREFUSED
, sprawdź, czy emulator jest uruchomiony.
Zdecydowanie zalecamy korzystanie z najnowszej wersji Node.js, aby móc używać notacji async/await
. Prawie wszystkie działania, które możesz chcieć przetestować, obejmują funkcje asynchroniczne, a moduł testowy jest przeznaczony do pracy z kodem opartym na obietnicach.
Biblioteka testów jednostkowych reguł w wersji 9 zawsze rozpoznaje emulatory i nigdy nie korzysta z zasobów produkcyjnych.
Bibliotekę importujesz za pomocą instrukcji importu modułowego 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 implementacja testów jednostkowych obejmuje:
- Tworzenie i konfigurowanie
RulesTestEnvironment
z wywołaniem funkcjiinitializeTestEnvironment
. - konfigurowanie danych testowych bez wywoływania Rules za pomocą wygodnej metody, która pozwala tymczasowo je pominąć,
RulesTestEnvironment.withSecurityRulesDisabled
; - Konfigurowanie pakietu testów i funkcji wywoływanych przed i po każdym teście z wywołaniami funkcji czyszczących dane testowe i środowisko, np.
RulesTestEnvironment.cleanup()
lubRulesTestEnvironment.clearFirestore()
. - Wdrażanie przypadków testowych, które naśladują stany uwierzytelniania za pomocą funkcji
RulesTestEnvironment.authenticatedContext
iRulesTestEnvironment.unauthenticatedContext
.
Typowe metody i funkcje narzędziowe
Zobacz też metody testowania specyficzne dla emulatora za pomocą modułowego interfejsu API.
initializeTestEnvironment() => RulesTestEnvironment
Ta funkcja inicjuje środowisko testowe do testowania jednostkowego reguł. Najpierw wywołaj tę funkcję, aby skonfigurować test. Aby wykonanie się powiodło, emulatory muszą być uruchomione.
Funkcja akceptuje opcjonalny obiekt definiujący TestEnvironmentConfig
, który może składać się z identyfikatora projektu i ustawień 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 obiekt RulesTestContext
, który działa jak uwierzytelniony użytkownik Authentication. Żądania utworzone za pomocą zwróconego kontekstu będą zawierać token Authentication. Opcjonalnie możesz przekazać obiekt definiujący niestandardowe roszczenia lub zastąpienia dla ładunków tokenów Authentication.
Użyj zwróconego obiektu kontekstu testowego w testach, aby uzyskać dostęp do skonfigurowanych instancji emulatora, w tym tych 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 obiekt RulesTestContext
, który działa jak klient niezalogowany za pomocą Authentication. Żądania utworzone za pomocą zwróconego kontekstu nie będą miały dołączonych tokenów Uwierzytelniania Firebase.
Użyj zwróconego obiektu kontekstu testowego w testach, aby uzyskać dostęp do skonfigurowanych instancji emulatora, w tym tych 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 zabezpieczeń były wyłączone.
Ta metoda przyjmuje funkcję wywołania zwrotnego, która przyjmuje kontekst Security-Rules-bypassing i zwraca obietnicę. Kontekst zostanie zniszczony po rozwiązaniu lub odrzuceniu obietnicy.
RulesTestEnvironment.cleanup()
Ta metoda usuwa wszystkie obiekty RulesTestContexts
utworzone w środowisku testowym i czyści zasoby bazowe, co umożliwia prawidłowe zakończenie działania.
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 narzędziowa testu.
Funkcja sprawdza, czy podany obiekt Promise opakowujący operację emulatora zostanie rozwiązany bez naruszenia reguł bezpieczeństwa.
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });
assertFails(pr: Promise<any>)) => Promise<any>
Jest to funkcja narzędziowa testu.
Funkcja sprawdza, czy podany obiekt Promise opakowujący operację emulatora zostanie odrzucony z powodu naruszenia reguł zabezpieczeń.
await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });
Metody specyficzne dla emulatora
Zobacz też typowe metody testowania i funkcje narzędziowe korzystające z modułowego interfejsu API.
Cloud Firestore
Cloud Firestore
RulesTestEnvironment.clearFirestore() => Promise<void>
Ta metoda usuwa dane z bazy danych Firestore należące do projektuprojectId
skonfigurowanego na potrzeby emulatora Firestore.
RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;
Ta metoda pobiera instancję Firestore dla tego kontekstu testowego. Zwrócona instancja pakietu Firebase JS Client SDK może być używana z interfejsami API pakietu SDK klienta (modułowego w wersji 9 lub zgodnego z wersją 9).
Realtime Database
Realtime Database
RulesTestEnvironment.clearDatabase() => Promise<void>
Ta metoda usuwa dane z Realtime Database należące do projectId
skonfigurowanego na potrzeby emulatora Realtime Database.
RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;
Uzyskaj instancję Realtime Database dla tego kontekstu testowego. Zwrócona instancja pakietu Firebase JS Client SDK może być używana z interfejsami API pakietu SDK klienta (modułowymi lub z przestrzenią nazw, w wersji 9 lub nowszej). Metoda akceptuje adres URL instancji bazy danych czasu rzeczywistego. 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 pamięci należących do usługi projectId
skonfigurowanej dla emulatora Cloud Storage.
RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;
Ta metoda zwraca instancję Storage skonfigurowaną do łączenia się z emulatorem.
Metoda akceptuje gs://
adres URL zasobnika Firebase Storage do testowania. Jeśli
zostanie podana, zwraca instancję Storage dla emulowanej wersji nazwy zasobnika.
Uruchamianie lokalnych testów jednostkowych za pomocą pakietu SDK JavaScript v8
Wybierz usługę, aby zobaczyć metody używane przez pakiet Firebase Test SDK do komunikacji z emulatorem.
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
Ta metoda zwraca zainicjowaną aplikację Firebase odpowiadającą identyfikatorowi projektu i zmiennej uwierzytelniania określonym w opcjach. Użyj tej opcji, aby utworzyć aplikację uwierzytelnioną jako konkretny użytkownik, która będzie używana 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. Podczas odczytu i zapisu pomija ona reguły zabezpieczeń. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, która będzie ustawiać stan testów.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Ta metoda zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne.
Używaj tej opcji do czyszczenia aplikacji 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 lokalnie działającej bazy danych. Przyjmuje 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 są prawidłowe, lub która jest spełniana, jeśli dane wejściowe są nieprawidłowe. Użyj tego, aby sprawdzić, czy odczyt lub zapis w bazie danych się nie powiódł.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Ta metoda zwraca obietnicę, która jest spełniana, jeśli dane wejściowe są spełnione, i odrzucana, jeśli dane wejściowe są odrzucane. Użyj tego, aby sprawdzić, czy odczyt lub zapis w bazie danych się powiódł.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
Ta metoda usuwa wszystkie dane powiązane z określonym projektem w lokalnie działającej instancji Firestore. Użyj tej metody, aby wyczyścić dane 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 konkretny użytkownik, która będzie używana w testach.
Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie bazy danych i zastąpieniu zmiennej auth określonym w opcjach.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Użyj tej metody, aby utworzyć aplikację uwierzytelnioną jako administratora, która skonfiguruje stan testów.
Zwraca zainicjowaną aplikację Firebase administratora odpowiadającą nazwie bazy danych określonej w opcjach. Ta aplikacja pomija reguły zabezpieczeń podczas odczytywania i zapisywania danych w bazie danych.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
Użyj tej opcji, aby ustawić reguły bazy danych.
Wysyła reguły do lokalnie działającej bazy danych. Przyjmuje obiekt opcji, który określa „databaseName” i „rules” 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 tej funkcji, aby wyczyścić aplikacje między testami lub po nich (pamiętaj, że zainicjowane aplikacje z aktywnymi odbiornikami 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ą przetwarzane pomyślnie, i przetwarzana pomyślnie, jeśli dane wejściowe są odrzucane.
Użyj tego, aby sprawdzić, czy odczyt lub zapis w bazie danych się nie powiódł:
firebase.assertFails(app.database().ref("secret").once("value"));
assertSucceeds(pr: Promise) => Promise
Zwraca obietnicę, która jest spełniona, jeśli dane wejściowe są spełnione, i odrzucona, jeśli dane wejściowe są odrzucone.
Użyj tego, aby potwierdzić, że odczyt lub zapis w bazie danych się powiódł:
firebase.assertSucceeds(app.database().ref("public").once("value"));
Cloud Storage
Cloud Storage
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
Użyj tej opcji, aby utworzyć aplikację uwierzytelnioną jako konkretny użytkownik, która będzie używana w testach.
Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie zasobnika pamięci i zastąpieniu zmiennej uwierzytelniania określonym w opcjach.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
Użyj tej metody, aby utworzyć aplikację uwierzytelnioną jako administratora, która skonfiguruje stan testów.
Zwraca zainicjowaną aplikację Firebase w wersji administracyjnej odpowiadającą nazwie zasobnika pamięci podanej w opcjach. Ta aplikacja pomija reguły zabezpieczeń podczas odczytywania i zapisywania danych w zasobniku.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Użyj tego ustawienia, aby określić reguły zasobnika pamięci.
Wysyła reguły do zasobników na dane zarządzanych lokalnie. Przyjmuje obiekt opcji, który określa „storageBucket” i „rules” 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 tej funkcji, aby wyczyścić aplikacje między testami lub po nich (pamiętaj, że zainicjowane aplikacje z aktywnymi odbiornikami 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ą przetwarzane pomyślnie, i przetwarzana pomyślnie, jeśli dane wejściowe są odrzucane.
Użyj tego, aby potwierdzić, że odczyt lub zapis w zasobniku pamięci nie powiódł się:
firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());
assertSucceeds(pr: Promise) => Promise
Zwraca obietnicę, która jest spełniona, jeśli dane wejściowe są spełnione, i odrzucona, jeśli dane wejściowe są odrzucone.
Użyj tego, aby potwierdzić, że odczyt lub zapis w zasobniku pamięci się powiódł:
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 Firebase Test SDK do komunikacji z emulatorem.
Cloud Firestore
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
Ta metoda zwraca zainicjowaną aplikację Firebase odpowiadającą identyfikatorowi projektu i zmiennej uwierzytelniania określonym w opcjach. Użyj tej opcji, aby utworzyć aplikację uwierzytelnioną jako konkretny użytkownik, która będzie używana 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. Podczas odczytu i zapisu pomija ona reguły zabezpieczeń. Użyj tego, aby utworzyć aplikację uwierzytelnioną jako administrator, która będzie ustawiać stan testów.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Ta metoda zwraca wszystkie aktualnie zainicjowane aplikacje testowe i administracyjne.
Używaj tej opcji do czyszczenia aplikacji 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 lokalnie działającej bazy danych. Przyjmuje 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 są prawidłowe, lub która jest spełniana, jeśli dane wejściowe są nieprawidłowe. Użyj tego, aby sprawdzić, czy odczyt lub zapis w bazie danych się nie powiódł.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Ta metoda zwraca obietnicę, która jest spełniana, jeśli dane wejściowe są spełnione, i odrzucana, jeśli dane wejściowe są odrzucane. Użyj tego, aby sprawdzić, czy odczyt lub zapis w bazie danych się powiódł.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
Ta metoda usuwa wszystkie dane powiązane z określonym projektem w lokalnie działającej instancji Firestore. Użyj tej metody, aby wyczyścić dane 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 konkretny użytkownik, która będzie używana w testach.
Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie bazy danych i zastąpieniu zmiennej auth określonym w opcjach.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Użyj tej metody, aby utworzyć aplikację uwierzytelnioną jako administratora, która skonfiguruje stan testów.
Zwraca zainicjowaną aplikację Firebase administratora odpowiadającą nazwie bazy danych określonej w opcjach. Ta aplikacja pomija reguły zabezpieczeń podczas odczytywania i zapisywania danych w bazie danych.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
Użyj tej opcji, aby ustawić reguły bazy danych.
Wysyła reguły do lokalnie działającej bazy danych. Przyjmuje obiekt opcji, który określa „databaseName” i „rules” 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 tej funkcji, aby wyczyścić aplikacje między testami lub po nich (pamiętaj, że zainicjowane aplikacje z aktywnymi odbiornikami 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ą przetwarzane pomyślnie, i przetwarzana pomyślnie, jeśli dane wejściowe są odrzucane.
Użyj tego, aby sprawdzić, czy odczyt lub zapis w bazie danych się nie powiódł:
firebase.assertFails(app.database().ref("secret").once("value"));
assertSucceeds(pr: Promise) => Promise
Zwraca obietnicę, która jest spełniona, jeśli dane wejściowe są spełnione, i odrzucona, jeśli dane wejściowe są odrzucone.
Użyj tego, aby potwierdzić, że odczyt lub zapis w bazie danych się powiódł:
firebase.assertSucceeds(app.database().ref("public").once("value"));
Cloud Storage
Cloud Storage
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
Użyj tej opcji, aby utworzyć aplikację uwierzytelnioną jako konkretny użytkownik, która będzie używana w testach.
Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie zasobnika pamięci i zastąpieniu zmiennej uwierzytelniania określonym w opcjach.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
Użyj tej metody, aby utworzyć aplikację uwierzytelnioną jako administratora, która skonfiguruje stan testów.
Zwraca zainicjowaną aplikację Firebase w wersji administracyjnej odpowiadającą nazwie zasobnika pamięci podanej w opcjach. Ta aplikacja pomija reguły zabezpieczeń podczas odczytywania i zapisywania danych w zasobniku.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Użyj tego ustawienia, aby określić reguły zasobnika pamięci.
Wysyła reguły do zasobników na dane zarządzanych lokalnie. Przyjmuje obiekt opcji, który określa „storageBucket” i „rules” 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 tej funkcji, aby wyczyścić aplikacje między testami lub po nich (pamiętaj, że zainicjowane aplikacje z aktywnymi odbiornikami 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ą przetwarzane pomyślnie, i przetwarzana pomyślnie, jeśli dane wejściowe są odrzucane.
Użyj tego, aby potwierdzić, że odczyt lub zapis w zasobniku pamięci nie powiódł się:
firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());
assertSucceeds(pr: Promise) => Promise
Zwraca obietnicę, która jest spełniona, jeśli dane wejściowe są spełnione, i odrzucona, jeśli dane wejściowe są odrzucone.
Użyj tego, aby potwierdzić, że odczyt lub zapis w zasobniku pamięci się powiódł:
firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());