Build-Einheitentests

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" Ihrer firebase.json-Datei. Wenn die Datei nicht vorhanden sind und Sie weder loadFirestoreRules 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 von auth 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 Datei rules-unit-testing verwenden. Bibliothek, für die ein auth-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 Sie null ü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 von initializeTestEnvironment 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() oder RulesTestEnvironment.clearFirestore().
  • Testfälle implementieren, die Authentifizierungsstatus mit RulesTestEnvironment.authenticatedContext und RulesTestEnvironment.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());