pacote de teste de unidade de regras

Funções

Função Descrição
assertFails(pr) Afirme a promessa de ser rejeitada com um erro de "permissão negada". Útil para afirmar que um determinado pedido deve ser negado pelas Regras de Segurança. Veja exemplo abaixo. Esta função reconhece erros de permissão negada dos SDKs Database, Firestore e Storage JS.
assertSucceeds(pr) Afirme a promessa de ser rejeitada com um erro de "permissão negada". Esta é uma função no-op que retorna a promessa passada como está, mas pode ser usada para fins documentais no código de teste para enfatizar que uma determinada solicitação deve ser bem-sucedida (por exemplo, permitida pelas regras).
initializeTestEnvironment(config) Inicializa um ambiente de teste para teste de unidade de regras. Chame esta função primeiro para configuração de teste. Requer emuladores em execução. Essa função tenta descobrir esses emuladores por meio de variáveis ​​de ambiente ou pelo hub do Firebase Emulator se hosts e portas não forem especificados. É altamente recomendável especificar regras de segurança para emuladores usados ​​para teste. Veja o exemplo mínimo abaixo.
withFunctionTriggersDisabled(fn) Execute uma função de configuração com acionadores do Cloud Functions em segundo plano desativados. Isso pode ser usado para importar dados para o emulador do Realtime Database ou do Cloud Firestore sem acionar o Cloud Functions emulado localmente. Este método funciona apenas com o Firebase CLI versão 8.13.0 ou superior. Essa sobrecarga funciona apenas se o host do hub do emulador:porta for especificado pela variável de ambiente FIREBASE_EMULATOR_HUB.
withFunctionTriggersDisabled(hub, fn) Execute uma função de configuração com acionadores do Cloud Functions em segundo plano desativados. Isso pode ser usado para importar dados para o emulador do Realtime Database ou do Cloud Firestore sem acionar o Cloud Functions emulado localmente. Este método funciona apenas com o Firebase CLI versão 8.13.0 ou superior. O hub do emulador deve estar em execução, cujo host e porta são especificados nessa sobrecarga.

Interfaces

Interface Descrição
HostAndPort Um objeto que contém o nome do host e o número da porta de um emulador.
RulesTestContext Um contexto de teste que representa um cliente. Pode ser usado para acessar emuladores para teste de unidade de regras.
RegrasTesteAmbiente Um objeto usado para controlar o ambiente de teste de unidade de regras. Pode ser usado para criar RulesTestContext para diferentes situações de autenticação.
TestEnvironmentConfig Configuração do ambiente de teste unitário, incluindo emuladores.

Alias ​​de tipo

Tipo de alias Descrição
EmulatorConfig Configuração para um determinado emulador.
TokenOptions Mais opções para o token de usuário simulado a ser usado para teste, incluindo declarações personalizadas especificadas pelo desenvolvedor ou substituições opcionais para cargas de token de autenticação do Firebase.

assertFails()

Afirme a promessa de ser rejeitada com um erro de "permissão negada".

Útil para afirmar que um determinado pedido deve ser negado pelas Regras de Segurança. Veja exemplo abaixo. Esta função reconhece erros de permissão negada dos SDKs Database, Firestore e Storage JS.

Assinatura:

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

Parâmetros

Parâmetro Modelo Descrição
pr Promessa <qualquer> a promessa a ser afirmada

Devoluções:

Promessa <qualquer>

uma Promessa que é cumprida se pr for rejeitada com "permissão negada". Se pr for rejeitado com qualquer outro erro ou resolvido, a promessa devolvida será rejeitada.

Exemplo

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

assertSucceeds()

Afirme a promessa de ser bem sucedido.

Esta é uma função no-op que retorna a promessa passada como está, mas pode ser usada para fins documentais no código de teste para enfatizar que uma determinada solicitação deve ser bem-sucedida (por exemplo, permitida pelas regras).

Assinatura:

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

Parâmetros

Parâmetro Modelo Descrição
pr Promessa<T>

Devoluções:

Promessa<T>

Exemplo

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

inicializeTestEnvironment()

Inicializa um ambiente de teste para teste de unidade de regras. Chame esta função primeiro para configuração de teste.

Requer emuladores em execução. Essa função tenta descobrir esses emuladores por meio de variáveis ​​de ambiente ou pelo hub do Firebase Emulator se hosts e portas não forem especificados. É altamente recomendável especificar regras de segurança para emuladores usados ​​para teste. Veja o exemplo mínimo abaixo.

Assinatura:

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

Parâmetros

Parâmetro Modelo Descrição
configuração TestEnvironmentConfig a configuração para emuladores. A maioria dos campos são opcionais se puderem ser descobertos

Devoluções:

Promessa< RegrasTesteAmbiente >

uma promessa que resolve com um ambiente pronto para teste ou rejeita em caso de erro.

Exemplo

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

Execute uma função de configuração com acionadores do Cloud Functions em segundo plano desativados. Isso pode ser usado para importar dados para o emulador do Realtime Database ou do Cloud Firestore sem acionar o Cloud Functions emulado localmente.

Este método funciona apenas com o Firebase CLI versão 8.13.0 ou superior. Essa sobrecarga funciona apenas se o host do hub do emulador:porta for especificado pela variável de ambiente FIREBASE_EMULATOR_HUB.

Assinatura:

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

Parâmetros

Parâmetro Modelo Descrição
fn () => TResult | Promessa<TResult> uma função que pode ser sincronizada ou assíncrona (retorna uma promessa)

Devoluções:

Promessa<TResult>

withFunctionTriggersDisabled()

Execute uma função de configuração com acionadores do Cloud Functions em segundo plano desativados. Isso pode ser usado para importar dados para o emulador do Realtime Database ou do Cloud Firestore sem acionar o Cloud Functions emulado localmente.

Este método funciona apenas com o Firebase CLI versão 8.13.0 ou superior. O hub do emulador deve estar em execução, cujo host e porta são especificados nessa sobrecarga.

Assinatura:

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

Parâmetros

Parâmetro Modelo Descrição
eixo { host: string; número da porta; } o host e a porta do hub do emulador (ex: {host: 'localhost', port: 4400} )
fn () => TResult | Promessa<TResult> uma função que pode ser sincronizada ou assíncrona (retorna uma promessa)

Devoluções:

Promessa<TResult>

EmulatorConfig

Configuração para um determinado emulador.

Assinatura:

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

TokenOptions

Mais opções para o token de usuário simulado a ser usado para teste, incluindo declarações personalizadas especificadas pelo desenvolvedor ou substituições opcionais para cargas de token de autenticação do Firebase.

Assinatura:

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