pacote de testes de unidade de regras

Funções

Função Descrição
assertFails(pr) (link em inglês) Declarar a promessa de ser rejeitada com uma "permissão negada" Útil para declarar que uma determinada solicitação será negada pelas regras de segurança. Confira o exemplo abaixo. Essa função reconhece erros de permissão negada dos SDKs do Database, Firestore e Storage para JavaScript.
assertSucceeds(pr) (em inglês) Declarar a promessa de ser rejeitada com uma "permissão negada" Esta é uma função autônoma que retorna a promessa transmitida no estado em que se encontra, 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 por regras).
InitializeTestEnvironment(config) Inicializa um ambiente de teste para testes de unidade de regras. Chame essa função primeiro para configurar o teste.É necessário que os emuladores estejam em execução. Essa função tenta descobrir esses emuladores por meio de variáveis de ambiente ou do hub do emulador do Firebase se hosts e portas não forem especificados. É altamente recomendável especificar regras de segurança para emuladores usados em testes. Veja um exemplo mínimo abaixo.
withFunctionTriggersDisabled(fn). Executar uma função de configuração com os gatilhos do Cloud Functions em segundo plano desativados. Ele pode ser usado para importar dados para o emulador do Realtime Database ou Cloud Firestore sem acionar Cloud Functions emulado localmente.Esse método só funciona com a CLI do Firebase versão 8.13.0 ou mais recente. Essa sobrecarga só funciona se a porta host do hub do emulador for especificada pela variável de ambiente FIREBASE_EMULATOR_HUB.
withFunctionTriggersDisabled(hub, fn) Executar uma função de configuração com os gatilhos do Cloud Functions em segundo plano desativados. Ele pode ser usado para importar dados para o emulador do Realtime Database ou Cloud Firestore sem acionar Cloud Functions emulado localmente.Esse método só funciona com a CLI do Firebase versão 8.13.0 ou mais recente. O hub do emulador precisa estar em execução, qual host e porta são especificados nessa sobrecarga.

Interfaces

Interface Descrição
HostAndPort (link em inglês) Um objeto que contém o nome do host e o número da porta de um emulador.
RulesTestContext (link em inglês) Um contexto de teste que representa um cliente. Pode ser usado para acessar emuladores para teste de unidade de regras.
RulesTestEnvironment (link em inglês) 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 (link em inglês) Configuração do ambiente de teste de unidade, incluindo emuladores.

Aliases de tipos

Alias de tipo Descrição
EmulatorConfig (em inglês) Configuração para um determinado emulador.
TokenOptions (em inglês) Mais opções para o token de usuário simulado a ser usado para testes, incluindo declarações personalizadas especificadas pelo desenvolvedor ou substituições opcionais para payloads de tokens do Firebase Auth.

assertFails()

Declarar a promessa de ser rejeitada com uma "permissão negada" erro.

Útil para declarar que determinada solicitação será negada pelas regras de segurança. Confira o exemplo abaixo. Essa função reconhece erros de permissão negada dos SDKs do Database, Firestore e Storage para JavaScript.

Assinatura:

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

Parâmetros

Parâmetro Tipo Descrição
PR Promessa<qualquer> a promessa a ser declarada

Retorna:

Promessa<qualquer>

uma promessa que será cumprida se pr for rejeitada com "permission denied". Se pr for rejeitado com qualquer outro erro ou resolvido, a promessa retornada será rejeitada.

Exemplo

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

assertSucceeds()

Declare a promessa de sucesso.

Essa é uma função autônoma que retorna a promessa transmitida no estado em que se encontra, 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 por regras).

Assinatura:

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

Parâmetros

Parâmetro Tipo Descrição
PR Promessa<T>

Retorna:

Promessa<T>

Exemplo

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

inicializeTestEnvironment().

Inicializa um ambiente de teste para testes de unidade de regras. Chame essa função primeiro para configurar o teste.

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

Assinatura:

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

Parâmetros

Parâmetro Tipo Descrição
config TestEnvironmentConfig (link em inglês) a configuração dos emuladores. A maioria dos campos é opcional se eles puderem ser descobertos

Retorna:

Promessa<RulesTestEnvironment>

uma promessa que é resolvida com um ambiente pronto para teste ou rejeitada 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()

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

Este método só funciona com a CLI do Firebase versão 8.13.0 ou mais recente. Essa sobrecarga só funciona se o host:porta do hub do emulador 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 Tipo Descrição
fn () => Resultado | Promessa<TResult> uma função que pode ser síncrona ou assíncrona (retorna uma promessa)

Retorna:

Promessa<TResult>

withFunctionTriggersDisabled()

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

Este método só funciona com a CLI do Firebase versão 8.13.0 ou mais recente. O hub do emulador precisa estar em execução, qual 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 Tipo Descrição
hub { host: string; port: number; } O host e a porta do Hub do emulador (por exemplo: {host: 'localhost', port: 4400})
fn () => Resultado | Promessa<TResult> uma função que pode ser síncrona ou assíncrona (retorna uma promessa)

Retorna:

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 testes, incluindo declarações personalizadas especificadas pelo desenvolvedor ou substituições opcionais para payloads de tokens do Firebase Auth.

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