Antarmuka RulesTestEnvironment

Objek yang digunakan untuk mengontrol lingkungan pengujian unit aturan. Dapat digunakan untuk membuat RulesTestContext untuk berbagai situasi autentikasi.

Tanda Tangan:

export interface RulesTestEnvironment 

Properti

Properti Jenis Deskripsi
emulator { database?: HostAndPort; firestore?: HostAndPort; penyimpanan?: HostAndPort; } Salinan hanya baca dari konfigurasi emulator yang ditentukan atau ditemukan saat pembuatan lingkungan pengujian.
projectId string Project ID yang ditentukan atau ditemukan saat pembuatan lingkungan pengujian.

Metode

Metode Deskripsi
authenticatedContext(user_id, tokenOptions) Buat RulesTestContext yang berperilaku seperti pengguna Firebase Auth yang diautentikasi.Permintaan yang dibuat melalui konteks yang ditampilkan akan memiliki token Firebase Auth tiruan yang dilampirkan.
pembersihan() Di bagian paling akhir kode pengujian, panggil fungsi pembersihan. Musnahkan semua RulesTestContexts yang dibuat di lingkungan pengujian dan bersihkan resource yang mendasarinya, sehingga memungkinkan keluar secara bersih.Metode ini tidak mengubah status di emulator dengan cara apa pun. Untuk mereset data antarpengujian, lihat clearDatabase(), clearFirestore(), dan clearStorage().
clearDatabase() Menghapus semua data di namespace emulator Realtime Database.
clearFirestore() Hapus data di Firestore yang termasuk dalam projectId di emulator Firestore.
clearStorage() Menghapus metadata dan file Storage di semua bucket di emulator Storage.
unauthenticatedContext() Buat RulesTestContext yang berperilaku seperti klien yang TIDAK login melalui Firebase Auth.Permintaan yang dibuat melalui konteks yang ditampilkan tidak akan memiliki token Firebase Auth yang dilampirkan.
withSecurityRulesDisabled(callback)

RulesTestEnvironment.emulators

Salinan hanya baca dari konfigurasi emulator yang ditentukan atau ditemukan saat pembuatan lingkungan pengujian.

Tanda Tangan:

readonly emulators: {
        database?: HostAndPort;
        firestore?: HostAndPort;
        storage?: HostAndPort;
    };

RulesTestEnvironment.projectId

Project ID yang ditentukan atau ditemukan saat pembuatan lingkungan pengujian.

Tanda Tangan:

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

Buat RulesTestContext yang berperilaku seperti pengguna Firebase Auth yang diautentikasi.

Permintaan yang dibuat melalui konteks yang ditampilkan akan memiliki token Firebase Auth tiruan yang dilampirkan.

Tanda Tangan:

authenticatedContext(user_id: string, tokenOptions?: TokenOptions): RulesTestContext;

Parameter

Parameter Jenis Deskripsi
user_id string ID Pengguna milik pengguna. Menentukan nilai "user_id" dan "sub" pada token
tokenOptions TokenOptions klaim kustom atau penggantian untuk payload token Firebase Auth

Hasil:

RulesTestContext

Contoh

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

RulesTestEnvironment.cleanup()

Di bagian paling akhir kode pengujian, panggil fungsi pembersihan. Musnahkan semua RulesTestContexts yang dibuat di lingkungan pengujian dan bersihkan resource yang mendasarinya, sehingga memungkinkan keluar secara bersih.

Metode ini tidak mengubah status di emulator dengan cara apa pun. Untuk mereset data antarpengujian, lihat clearDatabase(), clearFirestore(), dan clearStorage().

Tanda Tangan:

cleanup(): Promise<void>;

Hasil:

Promise<void>

RulesTestEnvironment.clearDatabase()

Menghapus semua data di namespace emulator Realtime Database.

Tanda Tangan:

clearDatabase(): Promise<void>;

Hasil:

Promise<void>

RulesTestEnvironment.clearFirestore()

Hapus data di database Firestore default untuk projectId di emulator Firestore.

Tanda Tangan:

clearFirestore(): Promise<void>;

Hasil:

Promise<void>

RulesTestEnvironment.clearStorage()

Hapus file dan metadata Storage dalam bucket aktif di emulator Storage.

Tanda Tangan:

clearStorage(): Promise<void>;

Hasil:

Promise<void>

RulesTestEnvironment.unauthenticatedContext()

Buat RulesTestContext yang berperilaku seperti klien yang TIDAK login melalui Firebase Auth.

Permintaan yang dibuat melalui konteks yang ditampilkan tidak akan memiliki token Firebase Auth yang dilampirkan.

Tanda Tangan:

unauthenticatedContext(): RulesTestContext;

Hasil:

RulesTestContext

Contoh

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

RulesTestEnvironment.withSecurityRulesDisabled()

Tanda Tangan:

withSecurityRulesDisabled(callback: (context: RulesTestContext) => Promise<void>): Promise<void>;

Parameter

Parameter Jenis Deskripsi
callback (konteks: RulesTestContext) => Promise<void>

Hasil:

Promise<void>