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 podczas tworzenia i automatyzowania testów jednostkowych dla Twojej 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.ruleslubstorage.rulesw plikufirebase.json. Jeśli plik nie istnieje, a nie używasz metodyloadFirestoreRulesaniloadStorageRulesopisanej poniżej, emulator traktuje wszystkie projekty jako mające otwarte reguły. - Chociaż większość pakietów Firebase SDK współpracuje bezpośrednio z emulatorami, tylko biblioteka
@firebase/rules-unit-testingobsługuje tworzenie kopii zapasowychauthw regułach zabezpieczeń, co znacznie ułatwia przeprowadzanie testów jednostkowych. Ponadto biblioteka obsługuje kilka funkcji specyficznych dla emulatorów, jak np. czyszczenie wszystkich danych, jak wymieniono poniżej. - Emulatory będą również akceptować produkcyjne tokeny uwierzytelniania Firebase dostarczane za pośrednictwem zestawów SDK klienta i odpowiednio oceniać reguły, co pozwoli na bezpośrednie połączenie aplikacji z emulatorami podczas testów 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 użytkownik uzyska 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 stosuje limity i kwoty planu Spark (co najważniejsze, ogranicza ono każdą instancję do 100 równoczesnych połączeń).
- Każda baza danych zaakceptuje ciąg
"owner"jako token uwierzytelniający administratora. - Emulatory nie współpracują obecnie z innymi produktami Firebase. Warto zauważyć, że standardowy proces uwierzytelniania Firebase nie działa.
Zamiast tego możesz użyć metody
initializeTestApp()z bibliotekirules-unit-testing, która przyjmuje poleauth. Obiekt Firebase utworzony przy użyciu tej metody zachowuje się tak, jakby pomyślnie przeszedł uwierzytelnienie jako dowolna podana jednostka. Jeśli przekażesznull, będzie się zachowywać jak użytkownik niezautoryzowany (np. regułyauth != nullzakończą się niepowodzeniem).
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>
Uruchamianie 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 bibliotek znacznie się różnią. Zalecamy bibliotekę testową v9, która jest bardziej uproszczona i wymaga mniejszej liczby konfiguracji w celu połączenia z emulatorami, dzięki czemu można 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 pojawiają się komunikaty o przekroczeniu limitu czasu lub błędy ECONNREFUSED, sprawdź dokładnie, czy emulator faktycznie działa.
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 v9 Rules Unit Testing zawsze jest świadoma emulatorów i nigdy nie korzysta z zasobów produkcyjnych.
Bibliotekę importuje się za pomocą modularnych poleceń importu v9. 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 wdrożenie testów jednostkowych obejmuje:
- Tworzenie i konfigurowanie
RulesTestEnvironmentz 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.authenticatedContextiRulesTestEnvironment.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ł. Wywołaj tę funkcję najpierw w celu przeprowadzenia konfiguracji testowej. Aby wykonać poprawnie, konieczne jest uruchomienie emulatorów.
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"), }, });
clearFirestoreData.
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ą miały dołączony token mockAuthentication. Opcjonalnie możesz przekazać obiekt definiujący niestandardowe roszczenia lub zastąpienia dla Authentication ładunków tokena.
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().doc('/users/alice'), { ... });
RulesTestEnvironment.unauthenticatedContext() => RulesTestContext
Ta metoda tworzy RulesTestContext, który zachowuje się jak klient, który nie jest zalogowany przez 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 omijania zasad bezpieczeństwa i zwraca obietnicę. Kontekst zostanie zniszczony, gdy obietnica zostanie spełniona lub odrzucona.
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 ta potwierdza, że dostarczona obietnica obejmująca operację emulatora zostanie rozwiązana bez naruszenia reguł bezpieczeństwa.
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });assertFails(pr: Promise<any>)) => Promise<any>
Jest to funkcja pomocnicza przypadku testowego.
Funkcja sprawdza, czy podana obietnica opakowująca operację emulatora zostanie odrzucona 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 testu. Zwróconą instancję Firebase JS Client SDK można wykorzystać z interfejsami API klienckiego SDK (wersja modułowa v9 lub zgodna z v9).
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 Realtime Database instancję dla tego kontekstu testowego. Zwróconą instancję pakietu Firebase JS Client SDK można używać 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 określono, zwraca wystąpienie emulowanej wersji przestrzeni nazw z parametrami wyodrębnionymi z adresu URL.
Cloud Storage
Cloud Storage
RulesTestEnvironment.clearStorage() => Promise<void>
Ta metoda czyści obiekty i metadane w kontenerach pamięci masowej należących do projectId skonfigurowanych dla emulatora Cloud Storage.
RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;
Ta metoda zwraca instancję Storage skonfigurowaną do łączenia się z emulatorem.
Metoda akceptuje adres URL gs:// do obiektu Firebase Storage Bucket w celu przetestowania. Jeśli określono, zwraca instancję magazynu dla emulowanej wersji nazwy kontenera.
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ę administracyjną Firebase. Ta aplikacja omija reguły bezpieczeństwa podczas odczytu i zapisu. Użyj tej metody, 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ą poprawne, albo jest udana, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby sprawdzić, czy odczyt lub zapis bazy danych się nie powiedzie.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Ta metoda zwraca obietnicę, która zostaje spełniona, jeśli dane wejściowe są poprawne, lub zostaje odrzucona, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby sprawdzić, 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 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 tego, aby utworzyć aplikację uwierzytelnianą jako określony użytkownik do użytku w testach.
Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie bazy danych i nadpisaniu zmiennej uwierzytelniania określonej w opcjach.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Użyj tej metody, aby utworzyć aplikację uwierzytelnioną jako administrator, która skonfiguruje stan testów.
Zwraca zainicjowaną aplikację administracyjną Firebase 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 tego, aby ustawić reguły swojej 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 metody, 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 zostaną zaakceptowane, i akceptowana, jeśli dane wejściowe zostaną odrzucone.
Użyj tego, aby potwierdzić, ż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 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 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 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 administrator, która skonfiguruje stan testów.
Zwraca zainicjowaną aplikację Firebase administratora 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 lokalnie zarządzanych kontenerów pamięci masowej. 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 metody, 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 się powiodą, i jest potwierdzona, jeśli dane wejściowe zostaną odrzucone.
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 SDK w JS 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ę administracyjną Firebase. Ta aplikacja omija reguły bezpieczeństwa podczas odczytu i zapisu. Użyj tej metody, 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ą poprawne, albo jest udana, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby sprawdzić, czy odczyt lub zapis bazy danych się nie powiedzie.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Ta metoda zwraca obietnicę, która zostaje spełniona, jeśli dane wejściowe są poprawne, lub zostaje odrzucona, jeśli dane wejściowe zostaną odrzucone. Użyj tego, aby sprawdzić, 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 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 tego, aby utworzyć aplikację uwierzytelnianą jako określony użytkownik do użytku w testach.
Zwraca zainicjowaną aplikację Firebase odpowiadającą nazwie bazy danych i nadpisaniu zmiennej uwierzytelniania określonej w opcjach.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Użyj tej metody, aby utworzyć aplikację uwierzytelnioną jako administrator, która skonfiguruje stan testów.
Zwraca zainicjowaną aplikację administracyjną Firebase 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 tego, aby ustawić reguły swojej 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 metody, 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 zostaną zaakceptowane, i akceptowana, jeśli dane wejściowe zostaną odrzucone.
Użyj tego, aby potwierdzić, ż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 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 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 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 administrator, która skonfiguruje stan testów.
Zwraca zainicjowaną aplikację Firebase administratora 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 lokalnie zarządzanych kontenerów pamięci masowej. 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 metody, 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 się powiodą, i jest potwierdzona, jeśli dane wejściowe zostaną odrzucone.
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());