Rules-Unit-Testing-Paket

Funktionen

Funktion Beschreibung
behauptenFails(pr) Behaupten Sie, dass das Versprechen mit dem Fehler „Berechtigung verweigert“ abgelehnt wird. Nützlich, um eine bestimmte Anforderung durch Sicherheitsregeln abzulehnen. Siehe Beispiel unten. Diese Funktion erkennt Berechtigungsverweigerungsfehler von Datenbank-, Firestore- und Storage-JS-SDKs.
behauptenSucceeds(pr) Behaupten Sie, dass das Versprechen mit dem Fehler „Berechtigung verweigert“ abgelehnt wird. Dies ist eine No-Op-Funktion, die das übergebene Versprechen unverändert zurückgibt, aber zu Dokumentationszwecken im Testcode verwendet werden kann, um hervorzuheben, dass eine bestimmte Anforderung erfolgreich sein sollte (z. B. durch Regeln zulässig).
initializeTestEnvironment(config) Initialisiert eine Testumgebung für Regeleinheitentests. Rufen Sie diese Funktion zuerst für den Testaufbau auf. Erfordert die Ausführung von Emulatoren. Diese Funktion versucht, diese Emulatoren über Umgebungsvariablen oder über den Firebase-Emulator-Hub zu erkennen, wenn Hosts und Ports nicht angegeben sind. Es wird dringend empfohlen, Sicherheitsregeln für Emulatoren festzulegen, die zum Testen verwendet werden. Siehe Minimalbeispiel unten.
withFunctionTriggersDisabled(fn) Führen Sie eine Setup-Funktion mit deaktivierten Cloud Functions-Auslösern im Hintergrund aus. Dies kann verwendet werden, um Daten in die Echtzeitdatenbank oder den Cloud Firestore-Emulator zu importieren, ohne lokal emulierte Cloud-Funktionen auszulösen. Diese Methode funktioniert nur mit Firebase CLI Version 8.13.0 oder höher. Diese Überladung funktioniert nur, wenn der Host:Port des Emulator-Hubs durch die Umgebungsvariable FIREBASE_EMULATOR_HUB angegeben wird.
withFunctionTriggersDisabled(hub, fn) Führen Sie eine Setup-Funktion mit deaktivierten Cloud Functions-Auslösern im Hintergrund aus. Dies kann verwendet werden, um Daten in die Echtzeitdatenbank oder den Cloud Firestore-Emulator zu importieren, ohne lokal emulierte Cloud-Funktionen auszulösen. Diese Methode funktioniert nur mit Firebase CLI Version 8.13.0 oder höher. Der Emulator-Hub muss ausgeführt werden, dessen Host und Port in dieser Überladung angegeben sind.

Schnittstellen

Schnittstelle Beschreibung
HostAndPort Ein Objekt, das den Hostnamen und die Portnummer eines Emulators enthält.
RulesTestContext Ein Testkontext, der einen Client darstellt. Kann verwendet werden, um auf Emulatoren für Regeleinheitentests zuzugreifen.
RulesTestEnvironment Ein Objekt, das zur Steuerung der Testumgebung der Regeleinheit verwendet wird. Kann zum Erstellen von RulesTestContext für verschiedene Authentifizierungssituationen verwendet werden.
TestEnvironmentConfig Konfiguration der Unit-Testumgebung, einschließlich Emulatoren.

Geben Sie Aliase ein

Geben Sie Alias ​​ein Beschreibung
EmulatorConfig Konfiguration für einen bestimmten Emulator.
TokenOptionen Weitere Optionen für das Scheinbenutzer-Token, das zum Testen verwendet werden soll, einschließlich vom Entwickler angegebener benutzerdefinierter Ansprüche oder optionaler Überschreibungen für Firebase-Auth-Token-Nutzlasten.

behauptenFails()

Behaupten Sie, dass das Versprechen mit dem Fehler „Berechtigung verweigert“ abgelehnt wird.

Nützlich, um eine bestimmte Anforderung durch Sicherheitsregeln abzulehnen. Siehe Beispiel unten. Diese Funktion erkennt Berechtigungsverweigerungsfehler von Datenbank-, Firestore- und Storage-JS-SDKs.

Unterschrift:

export declare function assertFails(pr: Promise<any>): Promise<any>;

Parameter

Parameter Typ Beschreibung
pr Versprochen<any> das einzulösende Versprechen

Kehrt zurück:

Versprochen<any>

ein Versprechen, das erfüllt wird, wenn pr mit „permission denied“ abgelehnt wird. Wenn pr mit einem anderen Fehler abgelehnt oder gelöst wird, wird das zurückgegebene Versprechen abgelehnt.

Beispiel

const unauthed = testEnv.unauthenticatedContext();
await assertFails(getDoc(unauthed.firestore(), '/private/doc'), { ... });

behauptenSucceeds()

Machen Sie das Erfolgsversprechen geltend.

Dies ist eine No-Op-Funktion, die das übergebene Versprechen unverändert zurückgibt, aber zu Dokumentationszwecken im Testcode verwendet werden kann, um hervorzuheben, dass eine bestimmte Anforderung erfolgreich sein sollte (z. B. durch Regeln zulässig).

Unterschrift:

export declare function assertSucceeds<T>(pr: Promise<T>): Promise<T>;

Parameter

Parameter Typ Beschreibung
pr Versprechen<T>

Kehrt zurück:

Versprechen<T>

Beispiel

const alice = testEnv.authenticatedContext('alice');
await assertSucceeds(getDoc(alice.firestore(), '/doc/readable/by/alice'), { ... });

initializeTestEnvironment()

Initialisiert eine Testumgebung für Regeleinheitentests. Rufen Sie diese Funktion zuerst für den Testaufbau auf.

Erfordert die Ausführung von Emulatoren. Diese Funktion versucht, diese Emulatoren über Umgebungsvariablen oder über den Firebase-Emulator-Hub zu erkennen, wenn Hosts und Ports nicht angegeben sind. Es wird dringend empfohlen, Sicherheitsregeln für Emulatoren festzulegen, die zum Testen verwendet werden. Siehe Minimalbeispiel unten.

Unterschrift:

export declare function initializeTestEnvironment(config: TestEnvironmentConfig): Promise<RulesTestEnvironment>;

Parameter

Parameter Typ Beschreibung
config TestEnvironmentConfig die Konfiguration für Emulatoren. Die meisten Felder sind optional, wenn sie entdeckt werden können

Kehrt zurück:

Versprechen< RulesTestEnvironment >

ein Versprechen, das mit einer zum Testen bereiten Umgebung aufgelöst oder bei Fehler abgelehnt wird.

Beispiel

const testEnv = await initializeTestEnvironment({
  firestore: {
    rules: fs.readFileSync("/path/to/firestore.rules", "utf8"), // Load rules from file
    // host and port can be omitted if they can be discovered from the hub.
  },
  // ...
});

withFunctionTriggersDisabled()

Führen Sie eine Setup-Funktion mit deaktivierten Cloud Functions-Auslösern im Hintergrund aus. Dies kann verwendet werden, um Daten in die Echtzeitdatenbank oder den Cloud Firestore-Emulator zu importieren, ohne lokal emulierte Cloud-Funktionen auszulösen.

Diese Methode funktioniert nur mit Firebase CLI Version 8.13.0 oder höher. Diese Überladung funktioniert nur, wenn der Host:Port des Emulator-Hubs durch die Umgebungsvariable FIREBASE_EMULATOR_HUB angegeben wird.

Unterschrift:

export declare function withFunctionTriggersDisabled<TResult>(fn: () => TResult | Promise<TResult>): Promise<TResult>;

Parameter

Parameter Typ Beschreibung
fn () => TResult | Versprechen<TResult> eine Funktion, die synchron oder asynchron sein kann (gibt ein Versprechen zurück)

Kehrt zurück:

Versprechen<TResult>

withFunctionTriggersDisabled()

Führen Sie eine Setup-Funktion mit deaktivierten Cloud Functions-Auslösern im Hintergrund aus. Dies kann verwendet werden, um Daten in die Echtzeitdatenbank oder den Cloud Firestore-Emulator zu importieren, ohne lokal emulierte Cloud-Funktionen auszulösen.

Diese Methode funktioniert nur mit Firebase CLI Version 8.13.0 oder höher. Der Emulator-Hub muss ausgeführt werden, dessen Host und Port in dieser Überladung angegeben sind.

Unterschrift:

export declare function withFunctionTriggersDisabled<TResult>(hub: {
    host: string;
    port: number;
}, fn: () => TResult | Promise<TResult>): Promise<TResult>;

Parameter

Parameter Typ Beschreibung
Nabe { host: string; Port-Nummer; } der Host und Port des Emulator Hub (z. B. {host: 'localhost', port: 4400} )
fn () => TResult | Versprechen<TResult> eine Funktion, die synchron oder asynchron sein kann (gibt ein Versprechen zurück)

Kehrt zurück:

Versprechen<TResult>

EmulatorConfig

Konfiguration für einen bestimmten Emulator.

Unterschrift:

export declare type EmulatorConfig = {
    rules?: string;
} & (HostAndPort | {});

TokenOptionen

Weitere Optionen für das Scheinbenutzer-Token, das zum Testen verwendet werden soll, einschließlich vom Entwickler angegebener benutzerdefinierter Ansprüche oder optionaler Überschreibungen für Firebase-Auth-Token-Nutzlasten.

Unterschrift:

export declare type TokenOptions = {
    iat?: number;
    exp?: number;
    auth_time?: number;
    provider_id?: 'anonymous';
    email?: string;
    email_verified?: boolean;
    phone_number?: string;
    name?: string;
    picture?: string;
    firebase?: {
        sign_in_provider: FirebaseSignInProvider;
        identities?: {
            [provider in FirebaseSignInProvider]?: string[];
        };
    };
    aud?: string;
    iss?: string;
    [claim: string]: unknown;
    uid?: never;
    sub?: never;
    user_id?: never;
};