Mit der Firebase Local Emulator Suite ist es einfacher, die Eigenschaften deiner App vollständig zu validieren Funktionen und Funktionsweise. Es ist auch ein praktisches Tool zum Verifizieren Ihrer Firebase Security Rules-Konfigurationen. Verwenden Sie die Firebase-Emulatoren, um Einheitentests in einer lokalen Umgebung auszuführen und zu automatisieren. Die in diesem Dokument Dieses Dokument hilft Ihnen beim Erstellen und Automatisieren von Einheitentests für Ihre App. mit denen Ihre Rules validiert wird.
Falls noch nicht geschehen, richten Sie die Firebase-Emulatoren ein.
Vor dem Starten des Emulators
Für die Verwendung des Emulators ist Folgendes zu beachten:
- Der Emulator lädt zuerst die in
firestore.rules
angegebenen Regeln. oder "storage.rules" Ihrerfirebase.json
-Datei. Wenn die Datei nicht vorhanden sind und Sie wederloadFirestoreRules
noch „loadStorageRules“ verwenden. Methode wie unten beschrieben, behandelt der Emulator alle Projekte als offene Regeln. - Während die meisten Firebase-SDKs direkt mit den Emulatoren arbeiten, unterstützt nur die
@firebase/rules-unit-testing
-Bibliothek das Mocking vonauth
in den Sicherheitsregeln. Das vereinfacht die Unittests. Darüber hinaus unterstützt die Bibliothek einige Emulator-spezifische Funktionen wie das Löschen aller Daten, wie unten aufgeführt. - Die Emulatoren akzeptieren auch Firebase-Auth-Produktionstoken, die über Client-SDKs bereitgestellt werden, und werten die Regeln entsprechend aus. Dadurch kann Ihre Anwendung bei Integrations- und manuellen Tests direkt mit den Emulatoren verbunden werden.
Unterschiede zwischen Datenbankemulatoren und Produktion
- Sie müssen keine Datenbankinstanz explizit erstellen. Der Emulator führt automatisch jede Datenbankinstanz, auf die zugegriffen wird.
- Jede neue Datenbank wird mit geschlossenen Regeln gestartet, sodass Nutzer ohne Administratorrechte nicht lesen oder schreiben können.
- Jede emulierte Datenbank wendet den Spark-Plan an. Limits und Kontingente (besonders begrenzt jede Instanz auf 100 gleichzeitige Verbindungen).
- Jede Datenbank akzeptiert den String
"owner"
als Admin-Authentifizierungstoken. - Die Emulatoren haben derzeit keine funktionierende Interaktionen mit anderen Firebase.
Produkte. Insbesondere funktioniert der normale Firebase-Authentifizierungsablauf nicht.
Stattdessen können Sie die Methode
initializeTestApp()
in der Dateirules-unit-testing
verwenden. Bibliothek, für die einauth
-Feld verwendet wird. Das Firebase-Objekt, das mit diesem verhält sich so, als wäre sie erfolgreich authentifiziert worden. Entität, die Sie angeben. Wenn Sienull
übergeben, verhält es sich wie ein nicht authentifizierter Nutzer (auth != null
-Regeln schlagen zum Beispiel fehl).
Mit dem Realtime Database-Emulator interagieren
Auf eine Firebase-Produktionsinstanz Realtime Database kann über die Subdomain von
firebaseio.com
. So können Sie auf die REST API zugreifen:
https://<database_name>.firebaseio.com/path/to/my/data.json
Der Emulator wird lokal ausgeführt und ist unter localhost:9000
verfügbar. Zum Interagieren
mit einer bestimmten Datenbankinstanz müssen Sie den Abfrageparameter ns
verwenden.
um den Datenbanknamen anzugeben.
http://localhost:9000/path/to/my/data.json?ns=<database_name>
Lokale Einheitentests mit dem JavaScript SDK der Version 9 ausführen
Firebase bietet sowohl mit dem JavaScript-SDK der Version 9 als auch mit dem SDK der Version 8 eine Unittest-Bibliothek für Sicherheitsregeln an. Die Bibliotheks-APIs unterscheiden sich erheblich. Wir empfehlen die v9-Testbibliothek, die optimiert ist und weniger Einrichtungsschritte erfordert, um eine Verbindung zu Emulatoren herzustellen und daher versehentliche Verwendung von Produktionsressourcen zu vermeiden. Aus Gründen der Abwärtskompatibilität stellen wir weiterhin die v8-Testbibliothek zur Verfügung.
Verwenden Sie das Modul @firebase/rules-unit-testing
, um den Emulator anzusprechen, der lokal ausgeführt wird. Wenn Zeitüberschreitungen oder ECONNREFUSED
-Fehler auftreten, prüfen Sie, ob der Emulator tatsächlich ausgeführt wird.
Es wird dringend empfohlen, eine aktuelle Version von Node.js zu verwenden, damit Sie die async/await
-Notation verwenden können. Fast das gesamte Verhalten, das Sie testen möchten, umfasst asynchrone Funktionen. Das Testmodul ist für die Verwendung mit Promise-basiertem Code ausgelegt.
Die v9-Regeln Einheitentest Bibliothek kennt immer die Emulatoren und greift niemals auf Ihre Produktionsressourcen zu.
Sie importieren die Bibliothek mithilfe von modularen v9-Importanweisungen. Beispiel:
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.
Nach dem Import umfasst das Implementieren von Unittest Folgendes:
RulesTestEnvironment
mit einem Aufruf voninitializeTestEnvironment
erstellen und konfigurieren- Einrichtung von Testdaten ohne Auslösung von Rules, indem Sie eine praktische Methode verwenden, mit der Sie diese vorübergehend umgehen können:
RulesTestEnvironment.withSecurityRulesDisabled
. - Einrichten von Testsuite und Pro-Test vor/nach Hooks mit Aufrufen zur Bereinigung von Testdaten und -umgebungen, z. B.
RulesTestEnvironment.cleanup()
oderRulesTestEnvironment.clearFirestore()
. - Testfälle implementieren, die Authentifizierungsstatus mit
RulesTestEnvironment.authenticatedContext
undRulesTestEnvironment.unauthenticatedContext
nachahmen
Gängige Methoden und Dienstfunktionen
Siehe auch emulator-spezifische Testmethoden mit der modularen API.
initializeTestEnvironment() => RulesTestEnvironment
Diese Funktion initialisiert eine Testumgebung für Regel-Unittest. Rufen Sie diese Funktion zuerst zum Testen der Einrichtung auf. Für eine erfolgreiche Ausführung müssen Emulatoren ausgeführt werden.
Die Funktion akzeptiert ein optionales Objekt, das eine TestEnvironmentConfig
definiert, die aus einer Projekt-ID und Einstellungen für die Emulatorkonfiguration bestehen kann.
let testEnv = await initializeTestEnvironment({ projectId: "demo-project-1234", firestore: { rules: fs.readFileSync("firestore.rules", "utf8"), }, });
RulesTestEnvironment.authenticatedContext({ user_id: string, tokenOptions?: TokenOptions }) => RulesTestContext
Diese Methode erstellt eine RulesTestContext
, die sich wie ein authentifizierter
Authentication Nutzer. Anfragen, die über den zurückgegebenen Kontext erstellt wurden, haben eine Simulation
Authentication Token angehängt. Übergeben Sie optional ein Objekt, durch das benutzerdefinierte Anforderungen definiert werden, oder
Überschreibungen für Authentication-Tokennutzlasten.
Verwenden Sie das zurückgegebene Testkontextobjekt in Ihren Tests, um auf einen Emulator zuzugreifen
Instanzen konfiguriert, einschließlich der mit initializeTestEnvironment
konfigurierten Instanzen.
// 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
Diese Methode erstellt ein RulesTestContext
, das sich wie ein Client verhält, der
nicht über Authentication angemeldet. An Anfragen, die über den zurückgegebenen Kontext erstellt werden, werden keine Firebase Auth-Token angehängt.
Verwenden Sie das zurückgegebene Testkontextobjekt in Ihren Tests, um auf alle konfigurierten Emulatorinstanzen zuzugreifen, einschließlich der mit initializeTestEnvironment
konfigurierten.
// 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()
Führen Sie eine Testeinrichtungsfunktion mit einem Kontext aus, der sich so verhält, als seien die Sicherheitsregeln deaktiviert.
Diese Methode verwendet eine Callback-Funktion, die den Kontext verwendet, der Sicherheitsregeln umgeht, und die ein Promise zurückgibt. Der Kontext wird gelöscht, sobald das Promise aufgelöst oder abgelehnt wird.
RulesTestEnvironment.cleanup()
Diese Methode löscht alle RulesTestContexts
, die in der Testumgebung erstellt wurden, und bereinigt die zugrunde liegenden Ressourcen, was einen sauberen Beendigung ermöglicht.
Diese Methode ändert den Status der Emulatoren nicht. Verwenden Sie die Methode für spezifische Daten des Anwendungsemulators, um Daten zwischen Tests zurückzusetzen.
assertSucceeds(pr: Promise<any>)) => Promise<any>
Dies ist eine Dienstfunktion für Testläufe.
Die Funktion bestätigt, dass der bereitgestellte Promise, der einen Emulator-Vorgang verpackt, ohne Verstöße gegen Sicherheitsregeln aufgelöst wird.
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });
assertFails(pr: Promise<any>)) => Promise<any>
Dies ist eine Dienstfunktion für Testläufe.
Die Funktion bestätigt, dass der bereitgestellte Promise, der einen Emulator-Vorgang verpackt, mit einem Verstoß gegen Sicherheitsregeln abgelehnt wird.
await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });
Emulator-spezifische Methoden
Siehe auch Gängige Testmethoden und Dienstprogrammfunktionen mit der modularen API
Cloud Firestore
Cloud Firestore
RulesTestEnvironment.clearFirestore() => Promise<void>
Mit dieser Methode werden Daten in der Firestore-Datenbank gelöscht, die zu der für den Firestore-Emulator konfigurierten projectId
gehören.
RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;
Diese Methode ruft eine Firestore-Instanz für diesen Testkontext ab. Die zurückgegebene Firebase JS Client SDK-Instanz kann mit den Client SDK APIs verwendet werden (v9 modular oder v9 compat).
Realtime Database
Realtime Database
RulesTestEnvironment.clearDatabase() => Promise<void>
Mit dieser Methode werden Daten in der Realtime Database gelöscht, die zum
projectId
wurde für den Realtime Database-Emulator konfiguriert.
RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;
Rufen Sie eine Realtime Database-Instanz für diesen Testkontext ab. Die zurückgegebene Firebase-JS-Datei Die Client SDK-Instanz kann mit den Client SDK APIs (modulare oder mit einem Namespace, Version 9 oder höher). Die Methode akzeptiert eine URL der Realtime Database-Instanz. Wenn angegeben, wird eine Instanz für eine emulierte Version des Namespace mit Parametern zurückgegeben, die aus der URL extrahiert wurden.
Cloud Storage
Cloud Storage
RulesTestEnvironment.clearStorage() => Promise<void>
Diese Methode löscht Objekte und Metadaten in Storage-Buckets, die zum
projectId
wurde für den Cloud Storage-Emulator konfiguriert.
RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;
Diese Methode gibt eine Storage-Instanz zurück, die für die Verbindung mit dem Emulator konfiguriert ist.
Die Methode akzeptiert eine gs://
-URL zum Firebase Storage-Bucket zum Testen. Wenn
angegeben ist, wird eine Storage-Instanz für eine emulierte Version des Bucket-Namens zurückgegeben.
Lokale Einheitentests mit dem JavaScript SDK Version 8 ausführen
Wählen Sie ein Produkt aus, um die Methoden zu sehen, die vom Firebase Test SDK für die Kommunikation mit dem Emulator verwendet werden.
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
Diese Methode gibt eine initialisierte Firebase-App zurück, die der in den Optionen angegebenen Projekt-ID und den Autorisierungsvariablen entspricht. Mit dieser Option können Sie eine Anwendung erstellen, die als spezifischer Nutzer für Tests authentifiziert wird.
firebase.initializeTestApp({ projectId: "my-test-project", auth: { uid: "alice", email: "alice@example.com" } });
initializeAdminApp({ projectId: string }) => FirebaseApp
Diese Methode liefert eine initialisierte Firebase App für Administratoren. Die Anwendung umgeht Sicherheitsregeln beim Ausführen von Lese- und Schreibvorgängen. Hiermit erstellen Sie eine Anwendung, die als Administrator authentifiziert wird, um den Status für Tests festzulegen.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Diese Methode liefert alle derzeit initialisierten Test- und Administrator-Apps.
Hiermit können Sie Apps zwischen oder nach Tests bereinigen.
Promise.all(firebase.apps().map(app => app.delete()))
loadFirestoreRules({ projectId: string, rules: Object }) => Promise
Diese Methode sendet Regeln an eine lokal ausgeführte Datenbank. Sie verwendet ein Objekt, das die Regeln als String festlegt. Verwenden Sie diese Methode, um die Regeln Ihrer Datenbank festzulegen.
firebase.loadFirestoreRules({ projectId: "my-test-project", rules: fs.readFileSync("/path/to/firestore.rules", "utf8") });
assertFails(pr: Promise) => Promise
Diese Methode gibt ein Versprechen zurück, das abgelehnt wird, wenn die Eingabe erfolgreich ist oder erfolgreich ist, wenn die Eingabe abgelehnt wird. Hiermit können Sie feststellen, ob ein Lese- oder Schreibvorgang einer Datenbank fehlschlägt.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Diese Methode gibt ein Versprechen zurück, das erfolgreich ist, wenn die Eingabe erfolgreich ist, und abgelehnt wird, wenn die Eingabe abgelehnt wird. Hiermit können Sie feststellen, ob ein Lese- oder Schreibzugriff auf eine Datenbank erfolgreich ist.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
Mit dieser Methode werden alle Daten gelöscht, die mit einem bestimmten Projekt in der lokal ausgeführten Firestore-Instanz verknüpft sind. Verwenden Sie diese Methode zur Bereinigung nach Tests.
firebase.clearFirestoreData({ projectId: "my-test-project" });
Realtime Database
Realtime Database
initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp
Mit dieser Option können Sie eine Anwendung erstellen, die als spezifischer Nutzer für Tests authentifiziert wird.
Gibt eine initialisierte Firebase-App zurück, die dem Datenbanknamen und der Authentifizierung entspricht Variablenüberschreibung in den Optionen festgelegt.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Hiermit erstellen Sie eine Anwendung, die als Administrator authentifiziert wird, um den Status für Tests festzulegen.
Gibt eine initialisierte Firebase-Administrator-App zurück, die dem Datenbanknamen entspricht die in den Optionen angegeben sind. Diese App umgeht Sicherheitsregeln beim Lesen und Schreiben in der Datenbank.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
Hiermit können Sie die Regeln Ihrer Datenbank festlegen.
Sendet Regeln an eine lokal ausgeführte Datenbank. Hier wird ein Optionsobjekt verwendet, gibt Ihren „databaseName“ an und deine „Regeln“ als Zeichenfolgen.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
Gibt alle derzeit initialisierten Test- und Administrator-Apps zurück.
Hiermit können Sie Apps zwischen oder nach Tests bereinigen. Beachten Sie, dass initialisierte Apps mit aktiven Listenern verhindern, dass JavaScript beendet wird):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Gibt ein Versprechen zurück, das abgelehnt wird, wenn die Eingabe erfolgreich ist, und erfolgreich ist, wenn die Eingabe abgelehnt wird.
Damit können Sie bestätigen, dass ein Lese- oder Schreibvorgang für eine Datenbank fehlschlägt:
firebase.assertFails(app.database().ref("secret").once("value"));
assertSucceeds(pr: Promise) => Promise
Gibt ein Versprechen zurück, das erfolgreich ist, wenn die Eingabe erfolgreich ist, und abgelehnt wird, wenn die Eingabe abgelehnt wird.
So können Sie prüfen, ob ein Lese- oder Schreibvorgang für eine Datenbank erfolgreich ist:
firebase.assertSucceeds(app.database().ref("public").once("value"));
Cloud Storage
Cloud Storage
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
Hiermit können Sie eine App erstellen, die als spezifischer Nutzer für Tests authentifiziert ist.
Gibt eine initialisierte Firebase-App zurück, die dem Namen des Storage-Buckets entspricht und die Authentifizierungsvariablen in den Optionen überschrieben.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
Hiermit erstellen Sie eine Anwendung, die als Administrator authentifiziert wird, um den Status für Tests festzulegen.
Gibt eine initialisierte Firebase-Administratoranwendung zurück, die dem Storage-Bucket entspricht Name, der in den Optionen angegeben ist. Diese App umgeht Sicherheitsregeln beim Lesen und in den Bucket schreiben.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Hiermit können Sie die Regeln für Ihren Storage-Bucket festlegen.
Sendet Regeln an einen lokal verwalteten Storage-Bucket. Es wird ein Optionsobjekt verwendet, das „storageBucket“ und „rules“ als Strings angibt.
firebase
.loadStorageRules({
storageBucket: "my-bucket",
rules: fs.readFileSync("/path/to/storage.rules", "utf8")
});
apps() => [FirebaseApp]
Gibt alle derzeit initialisierten Test- und Administrator-Apps zurück.
Hiermit können Sie Apps zwischen oder nach Tests bereinigen. Beachten Sie, dass initialisierte Apps mit aktiven Listenern verhindern, dass JavaScript beendet wird):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Gibt ein Versprechen zurück, das abgelehnt wird, wenn die Eingabe erfolgreich und erfolgreich ist, wenn der Eingabe wird abgelehnt.
So können Sie prüfen, ob Lese- oder Schreibvorgänge in einem Storage-Bucket fehlschlagen:
firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());
assertSucceeds(pr: Promise) => Promise
Gibt ein Versprechen zurück, das erfolgreich ist, wenn die Eingabe erfolgreich ist, und abgelehnt wird, wenn die Eingabe abgelehnt wird.
So können Sie prüfen, ob Lese- oder Schreibvorgänge für einen Storage-Bucket erfolgreich sind:
firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());
RUT Library API für JS SDK Version 8
Wählen Sie ein Produkt aus, um die Methoden zu sehen, die vom Firebase Test SDK für die Kommunikation mit dem Emulator verwendet werden.
Cloud Firestore
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
Diese Methode gibt eine initialisierte Firebase-App zurück, die der in den Optionen angegebenen Projekt-ID und den Autorisierungsvariablen entspricht. Mit dieser Option können Sie eine Anwendung erstellen, die als spezifischer Nutzer für Tests authentifiziert wird.
firebase.initializeTestApp({ projectId: "my-test-project", auth: { uid: "alice", email: "alice@example.com" } });
initializeAdminApp({ projectId: string }) => FirebaseApp
Diese Methode liefert eine initialisierte Firebase App für Administratoren. Die Anwendung umgeht Sicherheitsregeln beim Ausführen von Lese- und Schreibvorgängen. Hiermit erstellen Sie eine Anwendung, die als Administrator authentifiziert wird, um den Status für Tests festzulegen.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Diese Methode liefert alle derzeit initialisierten Test- und Administrator-Apps.
Hiermit können Sie Apps zwischen oder nach Tests bereinigen.
Promise.all(firebase.apps().map(app => app.delete()))
loadFirestoreRules({ projectId: string, rules: Object }) => Promise
Diese Methode sendet Regeln an eine lokal ausgeführte Datenbank. Sie verwendet ein Objekt, das die Regeln als String festlegt. Verwenden Sie diese Methode, um die Regeln Ihrer Datenbank festzulegen.
firebase.loadFirestoreRules({ projectId: "my-test-project", rules: fs.readFileSync("/path/to/firestore.rules", "utf8") });
assertFails(pr: Promise) => Promise
Diese Methode gibt ein Versprechen zurück, das abgelehnt wird, wenn die Eingabe erfolgreich ist oder erfolgreich ist, wenn die Eingabe abgelehnt wird. Hiermit können Sie feststellen, ob ein Lese- oder Schreibvorgang einer Datenbank fehlschlägt.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Diese Methode gibt ein Versprechen zurück, das erfolgreich ist, wenn die Eingabe erfolgreich ist, und abgelehnt wird, wenn die Eingabe abgelehnt wird. Hiermit können Sie feststellen, ob ein Lese- oder Schreibzugriff auf eine Datenbank erfolgreich ist.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
Mit dieser Methode werden alle Daten gelöscht, die mit einem bestimmten Projekt in der lokal ausgeführten Firestore-Instanz verknüpft sind. Verwenden Sie diese Methode zur Bereinigung nach Tests.
firebase.clearFirestoreData({ projectId: "my-test-project" });
Realtime Database
Realtime Database
initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp
Mit dieser Option können Sie eine Anwendung erstellen, die als spezifischer Nutzer für Tests authentifiziert wird.
Gibt eine initialisierte Firebase-App zurück, die dem Datenbanknamen und der Authentifizierung entspricht Variablenüberschreibung in den Optionen festgelegt.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Hiermit erstellen Sie eine Anwendung, die als Administrator authentifiziert wird, um den Status für Tests festzulegen.
Gibt eine initialisierte Firebase-Administrator-App zurück, die dem Datenbanknamen entspricht die in den Optionen angegeben sind. Diese App umgeht Sicherheitsregeln beim Lesen und Schreiben in der Datenbank.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
Hiermit können Sie die Regeln Ihrer Datenbank festlegen.
Sendet Regeln an eine lokal ausgeführte Datenbank. Hier wird ein Optionsobjekt verwendet, gibt Ihren „databaseName“ an und deine „Regeln“ als Zeichenfolgen.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
Gibt alle derzeit initialisierten Test- und Administrator-Apps zurück.
Hiermit können Sie Apps zwischen oder nach Tests bereinigen. Beachten Sie, dass initialisierte Apps mit aktiven Listenern verhindern, dass JavaScript beendet wird):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Gibt ein Versprechen zurück, das abgelehnt wird, wenn die Eingabe erfolgreich ist, und erfolgreich ist, wenn die Eingabe abgelehnt wird.
Damit können Sie bestätigen, dass ein Lese- oder Schreibvorgang für eine Datenbank fehlschlägt:
firebase.assertFails(app.database().ref("secret").once("value"));
assertSucceeds(pr: Promise) => Promise
Gibt ein Versprechen zurück, das erfolgreich ist, wenn die Eingabe erfolgreich ist, und abgelehnt wird, wenn die Eingabe abgelehnt wird.
So können Sie prüfen, ob ein Lese- oder Schreibvorgang für eine Datenbank erfolgreich ist:
firebase.assertSucceeds(app.database().ref("public").once("value"));
Cloud Storage
Cloud Storage
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
Hiermit können Sie eine App erstellen, die als spezifischer Nutzer für Tests authentifiziert ist.
Gibt eine initialisierte Firebase-App zurück, die dem Namen des Storage-Buckets entspricht und die Authentifizierungsvariablen in den Optionen überschrieben.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
Hiermit erstellen Sie eine Anwendung, die als Administrator authentifiziert wird, um den Status für Tests festzulegen.
Gibt eine initialisierte Firebase-Administratoranwendung zurück, die dem Storage-Bucket entspricht Name, der in den Optionen angegeben ist. Diese App umgeht Sicherheitsregeln beim Lesen und in den Bucket schreiben.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Hiermit können Sie die Regeln für Ihren Storage-Bucket festlegen.
Sendet Regeln an einen lokal verwalteten Storage-Bucket. Es wird ein Optionsobjekt verwendet, das „storageBucket“ und „rules“ als Strings angibt.
firebase
.loadStorageRules({
storageBucket: "my-bucket",
rules: fs.readFileSync("/path/to/storage.rules", "utf8")
});
apps() => [FirebaseApp]
Gibt alle derzeit initialisierten Test- und Administrator-Apps zurück.
Hiermit können Sie Apps zwischen oder nach Tests bereinigen. Beachten Sie, dass initialisierte Apps mit aktiven Listenern verhindern, dass JavaScript beendet wird):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Gibt ein Versprechen zurück, das abgelehnt wird, wenn die Eingabe erfolgreich und erfolgreich ist, wenn der Eingabe wird abgelehnt.
So können Sie prüfen, ob Lese- oder Schreibvorgänge in einem Storage-Bucket fehlschlagen:
firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());
assertSucceeds(pr: Promise) => Promise
Gibt ein Versprechen zurück, das erfolgreich ist, wenn die Eingabe erfolgreich ist, und abgelehnt wird, wenn die Eingabe abgelehnt wird.
So können Sie prüfen, ob Lese- oder Schreibvorgänge für einen Storage-Bucket erfolgreich sind:
firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());