pacchetto di test unitari di regole

Funzioni

Funzione Descrizione
assertFails(pr) Dichiara la promessa da rifiutare con un errore "permesso negato". Utile per far valere una determinata richiesta da negare dalle Regole di Sicurezza. Vedi l'esempio qui sotto. Questa funzione riconosce gli errori di autorizzazione negata dagli SDK Database, Firestore e Storage JS.
assertSucceeds(pr) Dichiara la promessa da rifiutare con un errore "permesso negato". Questa è una funzione no-op che restituisce la promessa passata così com'è, ma può essere utilizzata per scopi di documentazione nel codice di test per enfatizzare che una determinata richiesta dovrebbe avere successo (ad esempio consentita dalle regole).
inizializzaTestEnvironment(config) Inizializza un ambiente di test per lo unit test delle regole. Chiamare prima questa funzione per l'impostazione del test. Richiede che gli emulatori siano in esecuzione. Questa funzione tenta di scoprire tali emulatori tramite variabili di ambiente o tramite l'hub dell'emulatore Firebase se host e porte non sono specificati. Si consiglia vivamente di specificare le regole di sicurezza per gli emulatori utilizzati per i test. Vedi l'esempio minimo di seguito.
conFunctionTriggerDisabilitati(fn) Esegui una funzione di configurazione con i trigger Cloud Functions in background disabilitati. Può essere utilizzato per importare dati nel Realtime Database o nell'emulatore Cloud Firestore senza attivare le Cloud Functions emulate localmente. Questo metodo funziona solo con la CLI Firebase versione 8.13.0 o successiva. Questo sovraccarico funziona solo se l'hub dell'emulatore host:port è specificato dalla variabile di ambiente FIREBASE_EMULATOR_HUB.
conFunctionTriggerDisabled(hub, fn) Esegui una funzione di configurazione con i trigger Cloud Functions in background disabilitati. Può essere utilizzato per importare dati nel Realtime Database o nell'emulatore Cloud Firestore senza attivare le Cloud Functions emulate localmente. Questo metodo funziona solo con la CLI Firebase versione 8.13.0 o successiva. L'hub dell'emulatore deve essere in esecuzione e l'host e la porta specificati in questo sovraccarico.

Interfacce

Interfaccia Descrizione
HostAndPort Un oggetto contenente il nome host e il numero di porta di un emulatore.
RulesTestContext Un contesto di test che rappresenta un client. Può essere utilizzato per accedere agli emulatori per i test unitari delle regole.
RulesTestEnvironment Un oggetto utilizzato per controllare l'ambiente di test unitario delle regole. Può essere utilizzato per creare RulesTestContext per diverse situazioni di autenticazione.
TestAmbienteConfig Configurazione dell'ambiente di unit test, inclusi gli emulatori.

Digitare Alias

Digita Alias Descrizione
EmulatorConfig Configurazione per un determinato emulatore.
Opzioni token Altre opzioni per il token utente fittizio da utilizzare per i test, incluse attestazioni personalizzate specificate dallo sviluppatore o sostituzioni facoltative per i payload del token Firebase Auth.

assertFails()

Dichiara la promessa da rifiutare con un errore "permesso negato".

Utile per far valere una determinata richiesta da negare dalle Regole di Sicurezza. Vedi l'esempio qui sotto. Questa funzione riconosce gli errori di autorizzazione negata dagli SDK Database, Firestore e Storage JS.

Firma:

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

Parametri

Parametro Tipo Descrizione
pr Promesso<qualsiasi> la promessa da far valere

Ritorna:

Promesso<qualsiasi>

una Promessa che viene mantenuta se il pr viene rifiutato con "permesso negato". Se pr viene rifiutato con qualsiasi altro errore o risolto, la promessa restituita viene rifiutata.

Esempio

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

assertSucceeds()

Affermare la promessa di avere successo.

Questa è una funzione no-op che restituisce la promessa passata così com'è, ma può essere utilizzata per scopi di documentazione nel codice di test per enfatizzare che una determinata richiesta dovrebbe avere successo (ad esempio consentita dalle regole).

Firma:

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

Parametri

Parametro Tipo Descrizione
pr Promesso<T>

Ritorna:

Promesso<T>

Esempio

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

inizializzaTestAmbiente()

Inizializza un ambiente di test per lo unit test delle regole. Chiamare prima questa funzione per l'impostazione del test.

Richiede che gli emulatori siano in esecuzione. Questa funzione tenta di scoprire tali emulatori tramite variabili di ambiente o tramite l'hub dell'emulatore Firebase se host e porte non sono specificati. Si consiglia vivamente di specificare le regole di sicurezza per gli emulatori utilizzati per i test. Vedi l'esempio minimo di seguito.

Firma:

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

Parametri

Parametro Tipo Descrizione
config TestAmbienteConfig la configurazione per gli emulatori. La maggior parte dei campi sono facoltativi se possono essere scoperti

Ritorna:

Promessa< RulesTestEnvironment >

una promessa che si risolve con un ambiente pronto per il test o che si rifiuta in caso di errore.

Esempio

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

Esegui una funzione di configurazione con i trigger Cloud Functions in background disabilitati. Può essere utilizzato per importare dati nel Realtime Database o nell'emulatore Cloud Firestore senza attivare le Cloud Functions emulate localmente.

Questo metodo funziona solo con la CLI Firebase versione 8.13.0 o successiva. Questo sovraccarico funziona solo se l'hub dell'emulatore host:port è specificato dalla variabile di ambiente FIREBASE_EMULATOR_HUB.

Firma:

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

Parametri

Parametro Tipo Descrizione
ecc () => TResult | Promessa<TResult> una funzione che può essere sincronizzata o asincrona (restituisce una promessa)

Ritorna:

Promessa<TResult>

conFunctionTriggersDisabled()

Esegui una funzione di configurazione con i trigger Cloud Functions in background disabilitati. Può essere utilizzato per importare dati nel Realtime Database o nell'emulatore Cloud Firestore senza attivare le Cloud Functions emulate localmente.

Questo metodo funziona solo con la CLI Firebase versione 8.13.0 o successiva. L'hub dell'emulatore deve essere in esecuzione e l'host e la porta specificati in questo sovraccarico.

Firma:

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

Parametri

Parametro Tipo Descrizione
centro {ospite: stringa; numero di porta; } l'host e la porta dell'hub dell'emulatore (es: {host: 'localhost', port: 4400} )
ecc () => TResult | Promessa<TResult> una funzione che può essere sincronizzata o asincrona (restituisce una promessa)

Ritorna:

Promessa<TResult>

EmulatorConfig

Configurazione per un determinato emulatore.

Firma:

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

Opzioni token

Altre opzioni per il token utente fittizio da utilizzare per i test, incluse attestazioni personalizzate specificate dallo sviluppatore o sostituzioni facoltative per i payload del token 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;
};