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 terautentikasi.Permintaan yang dibuat melalui konteks yang ditampilkan akan menyertakan token Firebase Auth tiruan.
cleanup() Di bagian paling akhir dari kode pengujian Anda, panggil fungsi pembersihan. Hancurkan semua RulesTestContexts yang dibuat di lingkungan pengujian dan membersihkan resource yang mendasarinya, sehingga menghasilkan exit yang bersih.Metode ini tidak mengubah status di emulator dengan cara apa pun. Untuk mereset data antarpengujian, lihat clearDatabase(), clearFirestore(), dan clearStorage().
clearDatabase() Hapus semua data di namespace emulator Realtime Database.
clearFirestore() Menghapus 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 menyertakan token Firebase Auth.
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 pengguna. Menentukan nilai "user_id" dan "sub" di token
tokenOptions TokenOptions klaim atau penggantian kustom 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 dari kode pengujian Anda, panggil fungsi pembersihan. Hancurkan semua RulesTestContexts yang dibuat di lingkungan pengujian dan membersihkan resource yang mendasarinya, sehingga memungkinkan keluar secara bersih.

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

Tanda Tangan:

cleanup(): Promise<void>;

Hasil:

Janji<void>

RulesTestEnvironment.clearDatabase()

Hapus semua data di namespace emulator Realtime Database.

Tanda Tangan:

clearDatabase(): Promise<void>;

Hasil:

Janji<void>

RulesTestEnvironment.clearFirestore()

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

Tanda Tangan:

clearFirestore(): Promise<void>;

Hasil:

Janji<void>

RulesTestEnvironment.clearStorage()

Menghapus metadata dan file Storage di bucket active di emulator Storage.

Tanda Tangan:

clearStorage(): Promise<void>;

Hasil:

Janji<void>

RulesTestEnvironment.unauthenticatedContext()

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

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

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 (context: RulesTestContext) => Janji<void>

Hasil:

Janji<void>