paquete de pruebas unitarias de reglas

Funciones

Función Descripción
afirmar falla (pr) Afirme que la promesa será rechazada con un error de "permiso denegado". Útil para afirmar que una determinada solicitud sea denegada por las reglas de seguridad. Vea el ejemplo a continuación. Esta función reconoce los errores de permiso denegado de los SDK de Database, Firestore y Storage JS.
afirmar tiene éxito (pr) Afirme que la promesa 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 usar con fines de documentación en el código de prueba para enfatizar que una determinada solicitud debe tener éxito (por ejemplo, permitida por las reglas).
initializeTestEnvironment(config) Inicializa un entorno de prueba para las pruebas unitarias de reglas. Primero llame a esta función para la configuración de prueba. Requiere emuladores para funcionar. Esta función intenta descubrir esos emuladores a través de variables de entorno o a través del concentrador Firebase Emulator si no se especifican hosts ni puertos. Se recomienda encarecidamente especificar reglas de seguridad para los emuladores utilizados para las pruebas. Vea el ejemplo mínimo a continuación.
withFunctionTriggersDisabled(fn) Ejecute una función de configuración con los activadores de Cloud Functions en segundo plano deshabilitados. Esto se puede usar 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 la variable de entorno FIREBASE_EMULATOR_HUB especifica el puerto: host del concentrador del emulador.
withFunctionTriggersDisabled(hub, fn) Ejecute una función de configuración con los activadores de Cloud Functions en segundo plano deshabilitados. Esto se puede usar 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
host y puerto Un objeto que contiene el nombre de host y el número de puerto de un emulador.
ReglasTestContext Un contexto de prueba que representa a un cliente. Se puede usar para acceder a emuladores para pruebas unitarias de reglas.
ReglasPruebaEntorno Un objeto utilizado para controlar el entorno de prueba de la unidad de reglas. Se puede usar para crear RulesTestContext para diferentes situaciones de autenticación.
TestEnvironmentConfig Configuración del entorno de pruebas unitarias, incluidos los emuladores.

Tipo de alias

Alias ​​de tipo Descripción
EmulatorConfig Configuración para un emulador dado.
TokenOptions Más opciones para que el token de usuario simulado se use para las pruebas, incluidos los reclamos personalizados especificados por el desarrollador o anulaciones opcionales para las cargas útiles del token de Firebase Auth.

afirmar falla ()

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

Útil para afirmar que una determinada solicitud sea denegada por las reglas de seguridad. Vea el ejemplo a continuación. Esta función reconoce los 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 Escribe Descripción
relaciones públicas Promesa <cualquiera> la promesa de ser afirmada

Devoluciones:

Promesa <cualquiera>

una Promesa que se cumple si se rechaza pr 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 tiene éxito ()

Afirmar la promesa de tener éxito.

Esta es una función no operativa que devuelve la promesa aprobada tal como está, pero se puede usar con fines de documentación 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 Escribe Descripción
relaciones públicas Promesa<T>

Devoluciones:

Promesa<T>

Ejemplo

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

initializeTestEnvironment()

Inicializa un entorno de prueba para las pruebas unitarias de reglas. Primero llame a esta función para la configuración de prueba.

Requiere emuladores para funcionar. Esta función intenta descubrir esos emuladores a través de variables de entorno o a través del concentrador Firebase Emulator si no se especifican hosts ni puertos. 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 Escribe Descripción
configuración TestEnvironmentConfig la configuración para emuladores. La mayoría de los campos son opcionales si se pueden descubrir

Devoluciones:

Promise< ReglasEntorno de prueba >

una promesa que se resuelve con un entorno listo para la prueba, o se rechaza por 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()

Ejecute una función de configuración con los activadores de Cloud Functions en segundo plano deshabilitados. Esto se puede usar 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 la variable de entorno FIREBASE_EMULATOR_HUB especifica el puerto: host del concentrador del emulador.

Firma:

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

Parámetros

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

Devoluciones:

Promesa<TResultado>

withFunctionTriggersDisabled()

Ejecute una función de configuración con los activadores de Cloud Functions en segundo plano deshabilitados. Esto se puede usar 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 Escribe 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>

EmulatorConfig

Configuración para un emulador dado.

Firma:

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

TokenOptions

Más opciones para que el token de usuario simulado se use para las pruebas, incluidos los reclamos personalizados especificados 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;
};