package de tests unitaires de règles

Les fonctions

Fonction Description
assertFails(pr) Affirmez la promesse d'être rejetée avec une erreur "autorisation refusée". Utile pour faire valoir une certaine demande à refuser par les règles de sécurité. Voir exemple ci-dessous. Cette fonction reconnaît les erreurs d'autorisation refusée des SDK Database, Firestore et Storage JS.
assertSucceeds(pr) Affirmez la promesse d'être rejetée avec une erreur "autorisation refusée". Il s'agit d'une fonction sans opération renvoyant la promesse passée telle quelle, mais peut être utilisée à des fins de documentation dans le code de test pour souligner qu'une certaine requête doit réussir (par exemple autorisée par les règles).
initializeTestEnvironment(config) Initialise un environnement de test pour les tests unitaires de règles. Appelez d’abord cette fonction pour la configuration du test. Nécessite que les émulateurs soient en cours d'exécution. Cette fonction tente de découvrir ces émulateurs via des variables d'environnement ou via le hub Firebase Emulator si les hôtes et les ports ne sont pas spécifiés. Il est fortement recommandé de spécifier des règles de sécurité pour les émulateurs utilisés pour les tests. Voir l'exemple minimal ci-dessous.
avecFunctionTriggersDisabled(fn) Exécutez une fonction de configuration avec les déclencheurs Cloud Functions en arrière-plan désactivés. Cela peut être utilisé pour importer des données dans la base de données en temps réel ou dans l'émulateur Cloud Firestore sans déclencher les fonctions Cloud émulées localement. Cette méthode ne fonctionne qu'avec Firebase CLI version 8.13.0 ou supérieure. Cette surcharge ne fonctionne que si l'hôte:port du hub de l'émulateur est spécifié par la variable d'environnement FIREBASE_EMULATOR_HUB.
withFunctionTriggersDisabled (hub, fn) Exécutez une fonction de configuration avec les déclencheurs Cloud Functions en arrière-plan désactivés. Cela peut être utilisé pour importer des données dans la base de données en temps réel ou dans l'émulateur Cloud Firestore sans déclencher les fonctions Cloud émulées localement. Cette méthode ne fonctionne qu'avec Firebase CLI version 8.13.0 ou supérieure. Le hub Emulator doit être en cours d'exécution, quel hôte et quel port sont spécifiés dans cette surcharge.

Interfaces

Interface Description
HôteEtPort Un objet contenant le nom d'hôte et le numéro de port d'un émulateur.
RèglesTestContext Un contexte de test qui représente un client. Peut être utilisé pour accéder aux émulateurs pour les tests unitaires de règles.
RèglesTestEnvironnement Un objet utilisé pour contrôler l’environnement de test unitaire des règles. Peut être utilisé pour créer RulesTestContext pour différentes situations d'authentification.
TestEnvironmentConfig Configuration de l'environnement de tests unitaires, y compris les émulateurs.

Tapez les alias

Tapez l'alias Description
Configuration de l'émulateur Configuration pour un émulateur donné.
Options de jeton Plus d'options pour le jeton d'utilisateur fictif à utiliser pour les tests, y compris les revendications personnalisées spécifiées par le développeur ou les remplacements facultatifs pour les charges utiles du jeton d'authentification Firebase.

assertFails()

Affirmez la promesse d'être rejetée avec une erreur "autorisation refusée".

Utile pour faire valoir une certaine demande à refuser par les règles de sécurité. Voir exemple ci-dessous. Cette fonction reconnaît les erreurs d'autorisation refusée des SDK Database, Firestore et Storage JS.

Signature:

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

Paramètres

Paramètre Taper Description
pr Promesse<n'importe lequel> la promesse à affirmer

Retour:

Promesse<n'importe lequel>

une promesse qui est remplie si pr est rejeté avec « autorisation refusée ». Si pr est rejeté avec une autre erreur ou résolu, la promesse renvoyée est rejetée.

Exemple

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

assertSucceeds()

Affirmez la promesse de réussir.

Il s'agit d'une fonction sans opération renvoyant la promesse passée telle quelle, mais peut être utilisée à des fins de documentation dans le code de test pour souligner qu'une certaine requête doit réussir (par exemple autorisée par les règles).

Signature:

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

Paramètres

Paramètre Taper Description
pr Promesse<T>

Retour:

Promesse<T>

Exemple

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

initializeTestEnvironment()

Initialise un environnement de test pour les tests unitaires de règles. Appelez d’abord cette fonction pour la configuration du test.

Nécessite que les émulateurs soient en cours d'exécution. Cette fonction tente de découvrir ces émulateurs via des variables d'environnement ou via le hub Firebase Emulator si les hôtes et les ports ne sont pas spécifiés. Il est fortement recommandé de spécifier des règles de sécurité pour les émulateurs utilisés pour les tests. Voir l'exemple minimal ci-dessous.

Signature:

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

Paramètres

Paramètre Taper Description
configuration TestEnvironmentConfig la configuration pour les émulateurs. La plupart des champs sont facultatifs s'ils peuvent être découverts

Retour:

Promesse < RèglesTestEnvironment >

une promesse qui se résout avec un environnement prêt pour les tests, ou qui est rejetée en cas d'erreur.

Exemple

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.
  },
  // ...
});

avecFunctionTriggersDisabled()

Exécutez une fonction de configuration avec les déclencheurs Cloud Functions en arrière-plan désactivés. Cela peut être utilisé pour importer des données dans la base de données en temps réel ou dans l'émulateur Cloud Firestore sans déclencher les fonctions Cloud émulées localement.

Cette méthode ne fonctionne qu'avec Firebase CLI version 8.13.0 ou supérieure. Cette surcharge ne fonctionne que si l'hôte:port du hub de l'émulateur est spécifié par la variable d'environnement FIREBASE_EMULATOR_HUB.

Signature:

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

Paramètres

Paramètre Taper Description
fn () => TRésultat | Promesse<TResult> une fonction qui peut être synchrone ou asynchrone (renvoie une promesse)

Retour:

Promesse<TResult>

avecFunctionTriggersDisabled()

Exécutez une fonction de configuration avec les déclencheurs Cloud Functions en arrière-plan désactivés. Cela peut être utilisé pour importer des données dans la base de données en temps réel ou dans l'émulateur Cloud Firestore sans déclencher les fonctions Cloud émulées localement.

Cette méthode ne fonctionne qu'avec Firebase CLI version 8.13.0 ou supérieure. Le hub Emulator doit être en cours d'exécution, quel hôte et quel port sont spécifiés dans cette surcharge.

Signature:

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

Paramètres

Paramètre Taper Description
moyeu { hôte : chaîne ; numéro de port; } l'hôte et le port de l'Emulator Hub (ex : {host: 'localhost', port: 4400} )
fn () => TRésultat | Promesse<TResult> une fonction qui peut être synchrone ou asynchrone (renvoie une promesse)

Retour:

Promesse<TResult>

Configuration de l'émulateur

Configuration pour un émulateur donné.

Signature:

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

Options de jeton

Plus d'options pour le jeton d'utilisateur fictif à utiliser pour les tests, y compris les revendications personnalisées spécifiées par le développeur ou les remplacements facultatifs pour les charges utiles du jeton d'authentification Firebase.

Signature:

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;
};