paquete de pruebas unitarias de reglas

Funciones

Función Descripción
afirmarFalla(pr) Afirme la promesa de ser rechazada con un error de "permiso denegado". Útil para hacer valer una determinada solicitud que las Reglas de seguridad denegarán. Vea el ejemplo a continuación. Esta función reconoce errores de permiso denegado de los SDK de Database, Firestore y Storage JS.
afirmarSucceeds(pr) Afirme la promesa de ser rechazada con un error de "permiso denegado". Esta es una función no operativa que devuelve la promesa aprobada tal como está, pero se puede utilizar con fines documentales en el código de prueba para enfatizar que una determinada solicitud debe tener éxito (por ejemplo, permitida por las reglas).
inicializarEntornodeprueba(config) Inicializa un entorno de prueba para pruebas unitarias de reglas. Llame a esta función primero para la configuración de la prueba. Requiere que se estén ejecutando emuladores. Esta función intenta descubrir esos emuladores a través de variables de entorno o mediante el centro de Firebase Emulator si los hosts y los puertos no están especificados. Se recomienda encarecidamente especificar reglas de seguridad para los emuladores utilizados para las pruebas. Vea el ejemplo mínimo a continuación.
conFunctionTriggersDisabled(fn) Ejecute una función de configuración con los activadores de Cloud Functions en segundo plano deshabilitados. Esto se puede utilizar para importar datos a Realtime Database o al emulador de Cloud Firestore sin activar Cloud Functions emuladas localmente. Este método solo funciona con Firebase CLI versión 8.13.0 o superior. Esta sobrecarga solo funciona si el host del concentrador del emulador: puerto está especificado por la variable de entorno FIREBASE_EMULATOR_HUB.
conFunctionTriggersDisabled(hub, fn) Ejecute una función de configuración con los activadores de Cloud Functions en segundo plano deshabilitados. Esto se puede utilizar para importar datos a Realtime Database o al emulador de Cloud Firestore sin activar Cloud Functions emuladas localmente. Este método solo funciona con Firebase CLI versión 8.13.0 o superior. El concentrador del emulador debe estar ejecutándose, cuyo host y puerto se especifican en esta sobrecarga.

Interfaces

Interfaz Descripción
HostYPuerto Un objeto que contiene el nombre de host y el número de puerto de un emulador.
ReglasContexto de prueba Un contexto de prueba que representa a un cliente. Se puede utilizar para acceder a emuladores para pruebas unitarias de reglas.
ReglasEntorno de prueba Un objeto utilizado para controlar el entorno de prueba unitaria de reglas. Se puede utilizar para crear RulesTestContext para diferentes situaciones de autenticación.
Configuración del entorno de prueba Configuración del entorno de pruebas unitarias, incluidos emuladores.

Tipo de alias

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

afirmarFalla()

Afirme la promesa de ser rechazada con un error de "permiso denegado".

Útil para hacer valer una determinada solicitud que las Reglas de seguridad denegarán. Vea el ejemplo a continuación. 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 a ser afirmada

Devoluciones:

Promesa <cualquiera>

una Promesa que se cumple si pr se rechaza con "permiso denegado". Si pr se rechaza con cualquier otro error o se resuelve, la promesa devuelta se rechaza.

Ejemplo

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

afirmar éxitos()

Haga valer la promesa de tener éxito.

Esta es una función no operativa que devuelve la promesa aprobada tal como está, pero se puede utilizar con fines documentales en el código de prueba para enfatizar que una determinada solicitud debe tener éxito (por ejemplo, permitida por las reglas).

Firma:

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

Parámetros

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

Devoluciones:

Promesa<T>

Ejemplo

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

inicializarEntornodePrueba()

Inicializa un entorno de prueba para pruebas unitarias de reglas. Llame a esta función primero para la configuración de la prueba.

Requiere que se estén ejecutando emuladores. Esta función intenta descubrir esos emuladores a través de variables de entorno o mediante el centro de Firebase Emulator si los hosts y los puertos no están especificados. Se recomienda encarecidamente especificar reglas de seguridad para los emuladores utilizados para las pruebas. Vea el ejemplo mínimo a continuación.

Firma:

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

Parámetros

Parámetro Tipo Descripción
configuración Configuración del entorno de prueba la configuración para emuladores. La mayoría de los campos son opcionales si se pueden descubrir.

Devoluciones:

Promesa < ReglasEntorno de prueba >

una promesa que se resuelve con un entorno listo para realizar 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.
  },
  // ...
});

conFunctionTriggersDisabled()

Ejecute una función de configuración con los activadores de Cloud Functions en segundo plano deshabilitados. Esto se puede utilizar para importar datos a Realtime Database o al emulador de Cloud Firestore sin activar Cloud Functions emuladas localmente.

Este método solo funciona con Firebase CLI versión 8.13.0 o superior. Esta sobrecarga solo funciona si el host del concentrador del emulador: puerto está especificado por la variable de entorno FIREBASE_EMULATOR_HUB.

Firma:

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

Parámetros

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

Devoluciones:

Promesa<TResultado>

conFunctionTriggersDisabled()

Ejecute una función de configuración con los activadores de Cloud Functions en segundo plano deshabilitados. Esto se puede utilizar para importar datos a Realtime Database o al emulador de Cloud Firestore sin activar Cloud Functions emuladas localmente.

Este método solo funciona con Firebase CLI versión 8.13.0 o superior. El concentrador del emulador debe estar ejecutándose, cuyo host y 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
centro { anfitrión: cadena; número de puerto; } el host y el puerto de Emulator Hub (por ejemplo: {host: 'localhost', port: 4400} )
fn () => TResultado | Promesa<TResultado> una función que puede ser sincronizada o asíncrona (devuelve una promesa)

Devoluciones:

Promesa<TResultado>

Configuración del emulador

Configuración para un emulador determinado.

Firma:

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

Opciones de token

Más opciones para usar el token de usuario simulado en pruebas, incluidas reclamaciones personalizadas especificadas por el desarrollador o anulaciones opcionales para las cargas útiles del 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;
};