paket pengujian unit aturan

Fungsi

Fungsi Keterangan
menegaskanGagal(pr) Menegaskan janji untuk ditolak dengan kesalahan "izin ditolak". Berguna untuk menegaskan permintaan tertentu untuk ditolak oleh Aturan Keamanan. Lihat contoh di bawah. Fungsi ini mengenali kesalahan penolakan izin dari Database, Firestore, dan Storage JS SDK.
menegaskanSukses(pr) Menegaskan janji untuk ditolak dengan kesalahan "izin ditolak". Ini adalah fungsi no-op yang mengembalikan janji apa adanya, namun dapat digunakan untuk tujuan dokumentasi dalam kode pengujian untuk menekankan bahwa permintaan tertentu harus berhasil (misalnya diizinkan oleh aturan).
inisialisasiTestEnvironment(config) Menginisialisasi lingkungan pengujian untuk pengujian unit aturan. Panggil fungsi ini terlebih dahulu untuk pengaturan pengujian. Membutuhkan emulator untuk berjalan. Fungsi ini mencoba menemukan emulator tersebut melalui variabel lingkungan atau melalui hub Firebase Emulator jika host dan port tidak ditentukan. Sangat disarankan untuk menentukan aturan keamanan untuk emulator yang digunakan untuk pengujian. Lihat contoh minimal di bawah ini.
denganFunctionTriggersDisabled(fn) Jalankan fungsi penyiapan dengan pemicu Cloud Functions latar belakang dinonaktifkan. Ini dapat digunakan untuk mengimpor data ke emulator Realtime Database atau Cloud Firestore tanpa memicu Cloud Functions yang ditiru secara lokal. Metode ini hanya berfungsi dengan Firebase CLI versi 8.13.0 atau lebih tinggi. Kelebihan beban ini hanya berfungsi jika host:port hub Emulator ditentukan oleh variabel lingkungan FIREBASE_EMULATOR_HUB.
denganFunctionTriggersDisabled(hub, fn) Jalankan fungsi penyiapan dengan pemicu Cloud Functions latar belakang dinonaktifkan. Ini dapat digunakan untuk mengimpor data ke emulator Realtime Database atau Cloud Firestore tanpa memicu Cloud Functions yang ditiru secara lokal. Metode ini hanya berfungsi dengan Firebase CLI versi 8.13.0 atau lebih tinggi. Hub Emulator harus berjalan, host dan port mana yang ditentukan dalam kelebihan beban ini.

Antarmuka

Antarmuka Keterangan
HostAndPort Objek yang berisi nama host dan nomor port emulator.
AturanTesKonteks Konteks pengujian yang mewakili klien. Dapat digunakan untuk mengakses emulator untuk pengujian unit aturan.
AturanTesLingkungan Objek yang digunakan untuk mengontrol lingkungan pengujian unit aturan. Dapat digunakan untuk membuat RulesTestContext untuk situasi autentikasi yang berbeda.
TestEnvironmentConfig Konfigurasi lingkungan pengujian unit, termasuk emulator.

Ketik Alias

Ketik Alias Keterangan
Konfigurasi Emulator Konfigurasi untuk emulator tertentu.
Opsi Token Lebih banyak opsi untuk token pengguna tiruan yang akan digunakan untuk pengujian, termasuk klaim khusus yang ditentukan developer atau penggantian opsional untuk payload token Firebase Auth.

menegaskanGagal()

Menegaskan janji untuk ditolak dengan kesalahan "izin ditolak".

Berguna untuk menegaskan permintaan tertentu untuk ditolak oleh Aturan Keamanan. Lihat contoh di bawah. Fungsi ini mengenali kesalahan penolakan izin dari Database, Firestore, dan Storage JS SDK.

Tanda tangan:

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

Parameter

Parameter Jenis Keterangan
pr Janji<apa saja> janji yang harus ditegaskan

Pengembalian:

Janji<apa saja>

sebuah Janji yang terpenuhi jika pr ditolak dengan "izin ditolak". Jika pr ditolak dengan kesalahan lain atau diselesaikan, janji yang dikembalikan akan ditolak.

Contoh

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

menegaskanSukses()

Tegaskan janji untuk sukses.

Ini adalah fungsi no-op yang mengembalikan janji apa adanya, namun dapat digunakan untuk tujuan dokumentasi dalam kode pengujian untuk menekankan bahwa permintaan tertentu harus berhasil (misalnya diizinkan oleh aturan).

Tanda tangan:

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

Parameter

Parameter Jenis Keterangan
pr Janji<T>

Pengembalian:

Janji<T>

Contoh

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

inisialisasiTestEnvironment()

Menginisialisasi lingkungan pengujian untuk pengujian unit aturan. Panggil fungsi ini terlebih dahulu untuk pengaturan pengujian.

Membutuhkan emulator untuk berjalan. Fungsi ini mencoba menemukan emulator tersebut melalui variabel lingkungan atau melalui hub Firebase Emulator jika host dan port tidak ditentukan. Sangat disarankan untuk menentukan aturan keamanan untuk emulator yang digunakan untuk pengujian. Lihat contoh minimal di bawah ini.

Tanda tangan:

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

Parameter

Parameter Jenis Keterangan
konfigurasi TestEnvironmentConfig konfigurasi untuk emulator. Sebagian besar bidang bersifat opsional jika dapat ditemukan

Pengembalian:

Janji< RulesTestEnvironment >

janji yang diselesaikan dengan lingkungan yang siap untuk pengujian, atau ditolak karena kesalahan.

Contoh

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.
  },
  // ...
});

denganFunctionTriggersDisabled()

Jalankan fungsi penyiapan dengan pemicu Cloud Functions latar belakang dinonaktifkan. Ini dapat digunakan untuk mengimpor data ke emulator Realtime Database atau Cloud Firestore tanpa memicu Cloud Functions yang ditiru secara lokal.

Metode ini hanya berfungsi dengan Firebase CLI versi 8.13.0 atau lebih tinggi. Kelebihan beban ini hanya berfungsi jika host:port hub Emulator ditentukan oleh variabel lingkungan FIREBASE_EMULATOR_HUB.

Tanda tangan:

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

Parameter

Parameter Jenis Keterangan
fn () => Hasil | Janji<THasil> fungsi yang mungkin sinkron atau asinkron (mengembalikan janji)

Pengembalian:

Janji<THasil>

denganFunctionTriggersDisabled()

Jalankan fungsi penyiapan dengan pemicu Cloud Functions latar belakang dinonaktifkan. Ini dapat digunakan untuk mengimpor data ke emulator Realtime Database atau Cloud Firestore tanpa memicu Cloud Functions yang ditiru secara lokal.

Metode ini hanya berfungsi dengan Firebase CLI versi 8.13.0 atau lebih tinggi. Hub Emulator harus berjalan, host dan port mana yang ditentukan dalam kelebihan beban ini.

Tanda tangan:

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

Parameter

Parameter Jenis Keterangan
pusat { tuan rumah: tali; pelabuhan: nomor; } host dan port Emulator Hub (misal: {host: 'localhost', port: 4400} )
fn () => Hasil | Janji<THasil> fungsi yang mungkin sinkron atau asinkron (mengembalikan janji)

Pengembalian:

Janji<THasil>

Konfigurasi Emulator

Konfigurasi untuk emulator tertentu.

Tanda tangan:

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

Opsi Token

Lebih banyak opsi untuk token pengguna tiruan yang akan digunakan untuk pengujian, termasuk klaim khusus yang ditentukan developer atau penggantian opsional untuk payload token Firebase Auth.

Tanda tangan:

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