Paquete rules-unit-testing

Funciones

Función Descripción
assertFails(pr) Confirma la promesa que se rechazó con un “permiso denegado” error.Es útil para confirmar que las reglas de seguridad rechazan una determinada solicitud. Consulta el siguiente ejemplo. Esta función reconoce errores de permiso denegado de los SDK de Database, Firestore y Storage JS.
assertSucceeds(pr) Confirma la promesa que se rechazó con un “permiso denegado” Esta es una función no-op que muestra la promesa pasada tal como está, pero se puede usar con fines de documentación en el código de prueba para enfatizar que una solicitud determinada debe tener éxito (p. ej., permitida por reglas).
inicializarTestEnvironment(config) Inicializa un entorno de pruebas para la prueba de unidades de reglas. Primero, llama a esta función para la configuración de la prueba.Requiere que se ejecuten emuladores. Esta función intenta descubrir esos emuladores a través de variables de entorno o del concentrador de Firebase Emulator si no se especifican los hosts y los puertos. Es muy recomendable especificar reglas de seguridad para los emuladores que se usan en las pruebas. Consulta un ejemplo mínimo a continuación.
withFunctionTriggersDisabled(fn) Ejecuta una función de configuración con los activadores de Cloud Functions en segundo plano inhabilitados. Se puede usar para importar datos al emulador de Realtime Database o Cloud Firestore sin activar las funciones de Cloud Functions emuladas de manera local.Este método solo funciona con Firebase CLI 8.13.0 o versiones posteriores. Esta sobrecarga solo funciona si la variable de entorno FIREBASE_EMULATOR_HUB especifica el host:port del concentrador del emulador.
withFunctionTriggersDisabled(hub, fn) Ejecuta una función de configuración con los activadores de Cloud Functions en segundo plano inhabilitados. Se puede usar para importar datos al emulador de Realtime Database o Cloud Firestore sin activar las funciones de Cloud Functions emuladas de manera local.Este método solo funciona con Firebase CLI 8.13.0 o versiones posteriores. El concentrador del emulador debe estar en ejecución, y el host y el puerto se especifican en esta sobrecarga.

Interfaces

Interfaz Descripción
HostAndPort Un objeto que contiene el nombre de host y el número de puerto de un emulador.
RulesTestContext. Un contexto de prueba que representa a un cliente. Se puede usar para acceder a los emuladores para la prueba de unidades de reglas.
RulesTestEnvironment. Es un objeto que se usa para controlar el entorno de prueba de unidades de reglas. Se puede usar para crear RulesTestContext para diferentes situaciones de autenticación.
TestEnvironmentConfig Configuración del entorno de prueba de unidades, incluidos los emuladores.

Escribe alias

Alias de tipo Descripción
EmulatorConfig Configuración para un emulador determinado.
Opciones de token Más opciones para que el token de usuario simulado se use en las pruebas, incluidas reclamaciones personalizadas especificadas por el desarrollador o anulaciones opcionales para cargas útiles de token de Firebase Auth.

assertFails()

Confirma la promesa que se rechazó con un “permiso denegado” .

Es útil para confirmar que las reglas de seguridad deniegan una determinada solicitud. Consulta el siguiente ejemplo. Esta función reconoce errores de permiso denegado de los SDK de Database, Firestore y Storage JS.

Firma:

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

Parámetros

Parámetro Tipo Descripción
pr Promesa<cualquiera> la promesa que se debe confirmar

Muestra:

Promesa<cualquiera>

Una promesa que se cumple si se rechaza la solicitud pr se rechaza con el mensaje “permission denied”. Si pr se rechaza con cualquier otro error o se resuelve, se rechaza la promesa que se muestra.

Ejemplo

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

assertSucceeds()

Confirma la promesa como exitosa.

Esta es una función no-op que muestra la promesa pasada tal como está, pero se puede usar con fines de documentación en el código de prueba para enfatizar que una solicitud determinada debe tener éxito (p.ej., permitida por reglas).

Firma:

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

Parámetros

Parámetro Tipo Descripción
pr Promesa<T>

Muestra:

Promesa<T>

Ejemplo

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

inicializaTestEnvironment().

Inicializa un entorno de pruebas para la prueba de unidades de reglas. Primero, llama a esta función para la configuración de prueba.

Requiere emuladores para ejecutarse. Esta función intenta descubrir esos emuladores a través de variables de entorno o del concentrador de Firebase Emulator si no se especifican los hosts y los puertos. Es muy recomendable especificar reglas de seguridad para los emuladores que se usan en las pruebas. Consulta un ejemplo mínimo a continuación.

Firma:

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

Parámetros

Parámetro Tipo Descripción
config TestEnvironmentConfig la configuración para emuladores. La mayoría de los campos son opcionales si pueden detectarse.

Muestra:

Promesa<RulesTestEnvironment>

una promesa que se resuelve con un entorno listo para las pruebas, o se rechaza en caso de error.

Ejemplo

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()

Ejecuta una función de configuración con los activadores de Cloud Functions en segundo plano inhabilitados. Se puede usar para importar datos al emulador de Realtime Database o Cloud Firestore sin activar Cloud Functions emulados de manera local.

Este método solo funciona con la versión 8.13.0 o posterior de Firebase CLI. Esta sobrecarga solo funciona si la variable de entorno FIREBASE_EMULATOR_HUB especifica el host:port del concentrador del emulador.

Firma:

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

Parámetros

Parámetro Tipo Descripción
fn () => TResult | Promesa<TResult> una función que puede ser síncrona o asíncrona (devuelve una promesa)

Muestra:

Promesa<TResult>

withFunctionTriggersDisabled()

Ejecuta una función de configuración con los activadores de Cloud Functions en segundo plano inhabilitados. Se puede usar para importar datos al emulador de Realtime Database o Cloud Firestore sin activar Cloud Functions emulados de manera local.

Este método solo funciona con la versión 8.13.0 o posterior de Firebase CLI. El concentrador del emulador debe estar en ejecución, y el host y el puerto se especifican en esta sobrecarga.

Firma:

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

Parámetros

Parámetro Tipo Descripción
concentrador { host: cadena; puerto: número; }. el host y el puerto de Emulator Hub (p. ej., {host: 'localhost', port: 4400})
fn () => TResult | Promesa<TResult> una función que puede ser síncrona o asíncrona (devuelve una promesa)

Muestra:

Promesa<TResult>

EmulatorConfig

Configuración para un emulador determinado.

Firma:

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

TokenOptions

Más opciones para usar el token de usuario simulado en las pruebas, incluidas reclamaciones personalizadas especificadas por el desarrollador o anulaciones opcionales para cargas útiles de token de Firebase Auth.

Firma:

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