Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Membangun tes unit

Firebase Local Emulator Suite mempermudah memvalidasi fitur dan perilaku aplikasi Anda sepenuhnya. Ini juga merupakan alat yang hebat untuk memverifikasi konfigurasi Aturan Keamanan Firebase Anda. Gunakan Emulator Firebase untuk menjalankan dan mengotomatiskan pengujian unit di lingkungan lokal. Metode yang diuraikan dalam dokumen ini akan membantu Anda saat membuat dan mengotomatiskan pengujian unit untuk aplikasi Anda yang memvalidasi Aturan Anda.

Jika Anda belum melakukannya, siapkan Firebase Emulators .

Sebelum Anda menjalankan emulator

Sebelum Anda mulai menggunakan emulator, ingatlah hal-hal berikut:

  • Emulator awalnya akan memuat aturan yang ditentukan di kolom firestore.rules atau 'storage.rules' pada file firebase.json Anda. Jika file tidak ada dan Anda tidak menggunakan metode loadFirestoreRules atau 'loadStorageRules' seperti yang dijelaskan di bawah, emulator akan memperlakukan semua project sebagai aturan terbuka.
  • Meskipun sebagian besar Firebase SDK bekerja dengan emulator secara langsung, hanya @firebase/rules-unit-testing yang mendukung mocking auth di Security Rules, membuat pengujian unit jauh lebih mudah. Selain itu, library mendukung beberapa fitur khusus emulator seperti menghapus semua data, seperti yang tercantum di bawah ini.
  • Emulator juga akan menerima token Firebase Auth produksi yang disediakan melalui SDK Klien dan mengevaluasi aturan yang sesuai, yang memungkinkan menghubungkan aplikasi Anda langsung ke emulator dalam integrasi dan pengujian manual.

Perbedaan antara emulator database dan produksi

  • Anda tidak perlu membuat instance database secara eksplisit. Emulator akan secara otomatis membuat instance database apa pun yang diakses.
  • Setiap database baru dimulai dengan aturan tertutup, sehingga pengguna non-admin tidak akan dapat membaca atau menulis.
  • Setiap basis data yang diemulasi menerapkan batas dan kuota paket Spark (terutama, ini membatasi setiap instans hingga 100 koneksi bersamaan).
  • Basis data apa pun akan menerima string "owner" sebagai token autentikasi admin.
  • Emulator saat ini tidak memiliki interaksi yang berfungsi dengan produk Firebase lainnya. Khususnya, alur Firebase Authentication yang normal tidak berfungsi. Sebagai gantinya, Anda bisa menggunakan metode initializeTestApp() di library rules-unit-testing , yang menggunakan kolom auth . Objek Firebase yang dibuat menggunakan metode ini berperilaku seolah-olah berhasil diautentikasi sebagai entitas apa pun yang Anda berikan. Jika Anda memasukkan null , itu akan berperilaku sebagai pengguna yang tidak diautentikasi ( aturan auth != null akan gagal, misalnya).

Berinteraksi dengan emulator Realtime Database

Instance Firebase Realtime Database produksi dapat diakses di subdomain firebaseio.com , dan Anda dapat mengakses api REST seperti ini:

https://<database_name>.firebaseio.com/path/to/my/data.json

Emulator berjalan secara lokal, dan tersedia di localhost:9000 . Untuk berinteraksi dengan instance database tertentu, Anda harus menggunakan parameter kueri ns untuk menentukan nama database.

http://localhost:9000/path/to/my/data.json?ns=<database_name>

Jalankan pengujian unit lokal dengan JavaScript SDK versi 9

Firebase mendistribusikan pustaka pengujian unit Aturan Keamanan dengan SDK JavaScript versi 9 dan SDK versi 8. API perpustakaan sangat berbeda. Kami merekomendasikan pustaka pengujian v9, yang lebih disederhanakan dan memerlukan lebih sedikit penyiapan untuk terhubung ke emulator sehingga dengan aman menghindari penggunaan sumber daya produksi yang tidak disengaja. Untuk kompatibilitas mundur, kami terus menyediakan pustaka pengujian v8 .

Gunakan @firebase/rules-unit-testing untuk berinteraksi dengan emulator yang berjalan secara lokal. Jika Anda mendapatkan waktu tunggu atau kesalahan ECONNREFUSED , periksa kembali apakah emulator benar-benar berjalan.

Kami sangat menyarankan untuk menggunakan Node.js versi terbaru sehingga Anda dapat menggunakan notasi async/await . Hampir semua perilaku yang mungkin ingin Anda uji melibatkan fungsi asinkron, dan modul pengujian dirancang untuk bekerja dengan kode berbasis Promise.

Pustaka Pengujian Unit Aturan v9 selalu mengetahui emulator dan tidak pernah menyentuh sumber daya produksi Anda.

Anda mengimpor pustaka menggunakan pernyataan impor modular v9. Sebagai contoh:

import {
  assertFails,
  assertSucceeds,
  initializeTestEnvironment,
  RulesTestEnvironment,
} from "@firebase/rules-unit-testing"

// Use `const { … } = require("@firebase/rules-unit-testing")` if imports are not supported
// Or we suggest `const testing = require("@firebase/rules-unit-testing")` if necessary.

Setelah diimpor, pengujian unit implementasi melibatkan:

  • Membuat dan mengonfigurasi RulesTestEnvironment dengan panggilan ke initializeTestEnvironment .
  • Menyiapkan data pengujian tanpa memicu Aturan, menggunakan metode praktis yang memungkinkan Anda mengabaikannya untuk sementara, RulesTestEnvironment.withSecurityRulesDisabled .
  • Menyiapkan test suite dan per-test hook sebelum/sesudah dengan panggilan untuk membersihkan data pengujian dan lingkungan, seperti RulesTestEnvironment.cleanup() atau RulesTestEnvironment.clearFirestore() .
  • Mengimplementasikan kasus pengujian yang meniru status autentikasi menggunakan RulesTestEnvironment.authenticatedContext dan RulesTestEnvironment.unauthenticatedContext .

Metode umum dan fungsi utilitas

Lihat juga metode pengujian khusus emulator di SDK v9 .

initializeTestEnvironment() => RulesTestEnvironment

Fungsi ini menginisialisasi lingkungan pengujian untuk pengujian unit aturan. Panggil fungsi ini terlebih dahulu untuk penyiapan pengujian. Eksekusi yang berhasil membutuhkan emulator untuk berjalan.

Fungsi menerima objek opsional yang mendefinisikan TestEnvironmentConfig , yang dapat terdiri dari project ID dan setelan konfigurasi emulator.

let testEnv = await initializeTestEnvironment({
  projectId: "demo-project-1234",
  firestore: {
    rules: fs.readFileSync("firestore.rules", "utf8"),
  },
});

RulesTestEnvironment.authenticatedContext({ user_id: string, tokenOptions?: TokenOptions }) => RulesTestContext

Metode ini membuat RulesTestContext , yang berperilaku seperti pengguna Otentikasi yang diautentikasi. Permintaan yang dibuat melalui konteks yang dikembalikan akan memiliki token Otentikasi tiruan yang dilampirkan. Secara opsional, berikan objek yang mendefinisikan klaim khusus atau penggantian untuk payload token Otentikasi.

Gunakan objek konteks pengujian yang dikembalikan dalam pengujian Anda untuk mengakses semua instance emulator yang dikonfigurasi, termasuk yang dikonfigurasi dengan initializeTestEnvironment .

// Assuming a Firestore app and the Firestore emulator for this example
import { setDoc } from "firebase/firestore";

const alice = testEnv.authenticatedContext("alice", { … });
// Use the Firestore instance associated with this context
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

RulesTestEnvironment.unauthenticatedContext() => RulesTestContext

Metode ini membuat RulesTestContext , yang berperilaku seperti klien yang tidak masuk melalui Otentikasi. Permintaan yang dibuat melalui konteks yang dikembalikan tidak akan menyertakan token Firebase Auth.

Gunakan objek konteks pengujian yang dikembalikan dalam pengujian Anda untuk mengakses semua instance emulator yang dikonfigurasi, termasuk yang dikonfigurasi dengan initializeTestEnvironment .

// Assuming a Cloud Storage app and the Storage emulator for this example
import { getStorage, ref, deleteObject } from "firebase/storage";

const alice = testEnv.unauthenticatedContext();

// Use the Cloud Storage instance associated with this context
const desertRef = ref(alice.storage(), 'images/desert.jpg');
await assertSucceeds(deleteObject(desertRef));

RulesTestEnvironment.withSecurityRulesDisabled()

Jalankan fungsi penyiapan pengujian dengan konteks yang berperilaku seolah-olah Aturan Keamanan dinonaktifkan.

Metode ini menggunakan fungsi callback, yang mengambil konteks melewati Aturan Keamanan dan mengembalikan sebuah janji. Konteksnya akan dihancurkan setelah janji diselesaikan/ditolak.

RulesTestEnvironment.cleanup()

Metode ini menghancurkan semua RulesTestContexts dibuat di lingkungan pengujian dan membersihkan sumber daya yang mendasarinya, memungkinkan keluar yang bersih.

Metode ini tidak mengubah status emulator dengan cara apa pun. Untuk menyetel ulang data di antara pengujian, gunakan metode hapus data khusus emulator aplikasi.

assertSucceeds(pr: Promise<any>)) => Promise<any>

Ini adalah fungsi utilitas kasus uji.

Fungsi menegaskan bahwa Janji yang disertakan yang membungkus operasi emulator akan diselesaikan tanpa pelanggaran Aturan Keamanan.

await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

assertFails(pr: Promise<any>)) => Promise<any>

Ini adalah fungsi utilitas kasus uji.

Fungsi menegaskan bahwa Janji yang disertakan yang membungkus operasi emulator akan ditolak dengan pelanggaran Aturan Keamanan.

await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });

Metode khusus emulator

Lihat juga metode pengujian umum dan fungsi utilitas di SDK v9 .

Toko Api Awan

Toko Api Awan

RulesTestEnvironment.clearFirestore() => Promise<void>

Metode ini menghapus data di database Firestore milik projectId yang dikonfigurasi untuk emulator Firestore.

RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;

Metode ini mendapatkan instance Firestore untuk konteks pengujian ini. Instance Firebase JS Client SDK yang dikembalikan dapat digunakan dengan klien SDK API (v9 modular atau v9 compat).

Basis Data Waktu Nyata

Basis Data Waktu Nyata

RulesTestEnvironment.clearDatabase() => Promise<void>

Metode ini menghapus data di Realtime Database milik projectId yang dikonfigurasi untuk emulator Realtime Database.

RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;

Dapatkan instance Realtime Database untuk konteks pengujian ini. Instance Firebase JS Client SDK yang dikembalikan dapat digunakan dengan klien SDK API (v9 modular atau v9 compat). Metode ini menerima URL instance Realtime Database. Jika ditentukan, menampilkan instance untuk versi namespace yang diemulasi dengan parameter yang diekstrak dari URL.

Penyimpanan awan

Penyimpanan awan

RulesTestEnvironment.clearStorage() => Promise<void>

Metode ini menghapus objek dan metadata di bucket penyimpanan milik projectId yang dikonfigurasi untuk emulator Cloud Storage.

RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;

Metode ini menampilkan instance Storage yang dikonfigurasi untuk terhubung ke emulator. Metode menerima url gs:// ke Firebase Storage Bucket untuk pengujian. Jika ditentukan, kembalikan instance Storage untuk versi emulasi dari nama bucket.

Jalankan pengujian unit lokal dengan SDK JavaScript v8

Pilih produk untuk melihat metode yang digunakan oleh Firebase Test SDK untuk berinteraksi dengan emulator.

Toko Api Awan

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

Metode ini mengembalikan aplikasi Firebase yang diinisialisasi sesuai dengan ID proyek dan variabel autentikasi yang ditentukan dalam opsi. Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai pengguna khusus untuk digunakan dalam pengujian.

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

Metode ini menampilkan aplikasi Firebase admin yang diinisialisasi. Aplikasi ini melewati aturan keamanan saat melakukan baca dan tulis. Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai admin untuk mengatur status pengujian.

firebase.initializeAdminApp({ projectId: "my-test-project" });
    

apps() => [FirebaseApp] Metode ini mengembalikan semua aplikasi pengujian dan admin yang saat ini diinisialisasi. Gunakan ini untuk membersihkan aplikasi di antara atau setelah pengujian.

Promise.all(firebase.apps().map(app => app.delete()))

loadFirestoreRules({ projectId: string, rules: Object }) => Promise

Metode ini mengirimkan aturan ke database yang berjalan secara lokal. Dibutuhkan objek yang menentukan aturan sebagai string. Gunakan metode ini untuk mengatur aturan database Anda.

firebase.loadFirestoreRules({
  projectId: "my-test-project",
  rules: fs.readFileSync("/path/to/firestore.rules", "utf8")
});
    

assertFails(pr: Promise) => Promise

Metode ini mengembalikan janji yang ditolak jika masukan berhasil atau yang berhasil jika masukan ditolak. Gunakan ini untuk menyatakan jika database gagal membaca atau menulis.

firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
    

assertSucceeds(pr: Promise) => Promise

Metode ini mengembalikan janji yang berhasil jika masukan berhasil dan ditolak jika masukan ditolak. Gunakan ini untuk menegaskan jika database membaca atau menulis berhasil.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

Metode ini menghapus semua data yang terkait dengan proyek tertentu dalam instance Firestore yang berjalan secara lokal. Gunakan metode ini untuk membersihkan setelah pengujian.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Basis Data Waktu Nyata

Basis Data Waktu Nyata

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai pengguna khusus untuk digunakan dalam pengujian.

Mengembalikan aplikasi firebase yang diinisialisasi sesuai dengan nama database dan penggantian variabel autentikasi yang ditentukan dalam opsi.

firebase.initializeTestApp({
  databaseName: "my-database",
  auth: { uid: "alice" }
});

initializeAdminApp({ databaseName: string }) => FirebaseApp

Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai admin guna menyiapkan status untuk pengujian.

Mengembalikan aplikasi firebase admin yang diinisialisasi sesuai dengan nama database yang ditentukan dalam opsi. Aplikasi ini melewati aturan keamanan saat membaca dan menulis ke database.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

Gunakan ini untuk mengatur aturan database Anda.

Mengirim aturan ke database yang berjalan secara lokal. Mengambil objek opsi yang menentukan "databaseName" dan "rules" Anda sebagai string.

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

Mengembalikan semua aplikasi pengujian dan admin yang saat ini diinisialisasi.

Gunakan ini untuk membersihkan aplikasi di antara atau setelah pengujian (perhatikan bahwa aplikasi yang diinisialisasi dengan pemroses aktif mencegah keluarnya JavaScript):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Mengembalikan janji yang ditolak jika masukan berhasil dan berhasil jika masukan ditolak.

Gunakan ini untuk menegaskan bahwa database gagal membaca atau menulis:

firebase.assertFails(app.database().ref("secret").once("value"));

assertSucceeds(pr: Promise) => Promise

Mengembalikan janji yang berhasil jika masukan berhasil dan ditolak jika masukan ditolak.

Gunakan ini untuk menegaskan bahwa database membaca atau menulis berhasil:

firebase.assertSucceeds(app.database().ref("public").once("value"));

Penyimpanan awan

Penyimpanan awan

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai pengguna khusus untuk digunakan dalam pengujian.

Mengembalikan aplikasi firebase yang diinisialisasi sesuai dengan nama keranjang penyimpanan dan penggantian variabel autentikasi yang ditentukan dalam opsi.

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai admin guna menyiapkan status untuk pengujian.

Mengembalikan aplikasi firebase admin yang diinisialisasi sesuai dengan nama bucket penyimpanan yang ditentukan dalam opsi. Aplikasi ini mengabaikan aturan keamanan saat membaca dan menulis ke bucket.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

Gunakan ini untuk menyetel aturan keranjang penyimpanan Anda.

Mengirim aturan ke keranjang penyimpanan yang dikelola secara lokal. Mengambil objek opsi yang menentukan "storageBucket" dan "aturan" Anda sebagai string.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

Mengembalikan semua aplikasi pengujian dan admin yang saat ini diinisialisasi.

Gunakan ini untuk membersihkan aplikasi di antara atau setelah pengujian (perhatikan bahwa aplikasi yang diinisialisasi dengan pemroses aktif mencegah keluarnya JavaScript):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Mengembalikan janji yang ditolak jika masukan berhasil dan berhasil jika masukan ditolak.

Gunakan ini untuk menegaskan bahwa keranjang penyimpanan gagal membaca atau menulis:

firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());

assertSucceeds(pr: Promise) => Promise

Mengembalikan janji yang berhasil jika masukan berhasil dan ditolak jika masukan ditolak.

Gunakan ini untuk menegaskan bahwa keranjang penyimpanan berhasil membaca atau menulis:

firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());

RUT library API untuk JS SDK v8

Pilih produk untuk melihat metode yang digunakan oleh Firebase Test SDK untuk berinteraksi dengan emulator.

Toko Api Awan

Toko Api Awan

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

Metode ini mengembalikan aplikasi Firebase yang diinisialisasi sesuai dengan ID proyek dan variabel autentikasi yang ditentukan dalam opsi. Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai pengguna khusus untuk digunakan dalam pengujian.

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

Metode ini menampilkan aplikasi Firebase admin yang diinisialisasi. Aplikasi ini melewati aturan keamanan saat melakukan baca dan tulis. Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai admin untuk mengatur status pengujian.

firebase.initializeAdminApp({ projectId: "my-test-project" });
    

apps() => [FirebaseApp] Metode ini mengembalikan semua aplikasi pengujian dan admin yang saat ini diinisialisasi. Gunakan ini untuk membersihkan aplikasi di antara atau setelah pengujian.

Promise.all(firebase.apps().map(app => app.delete()))

loadFirestoreRules({ projectId: string, rules: Object }) => Promise

Metode ini mengirimkan aturan ke database yang berjalan secara lokal. Dibutuhkan objek yang menentukan aturan sebagai string. Gunakan metode ini untuk mengatur aturan database Anda.

firebase.loadFirestoreRules({
  projectId: "my-test-project",
  rules: fs.readFileSync("/path/to/firestore.rules", "utf8")
});
    

assertFails(pr: Promise) => Promise

Metode ini mengembalikan janji yang ditolak jika masukan berhasil atau yang berhasil jika masukan ditolak. Gunakan ini untuk menyatakan jika database gagal membaca atau menulis.

firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
    

assertSucceeds(pr: Promise) => Promise

Metode ini mengembalikan janji yang berhasil jika masukan berhasil dan ditolak jika masukan ditolak. Gunakan ini untuk menegaskan jika database membaca atau menulis berhasil.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

Metode ini menghapus semua data yang terkait dengan proyek tertentu dalam instance Firestore yang berjalan secara lokal. Gunakan metode ini untuk membersihkan setelah pengujian.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Basis Data Waktu Nyata

Basis Data Waktu Nyata

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai pengguna khusus untuk digunakan dalam pengujian.

Mengembalikan aplikasi firebase yang diinisialisasi sesuai dengan nama database dan penggantian variabel autentikasi yang ditentukan dalam opsi.

firebase.initializeTestApp({
  databaseName: "my-database",
  auth: { uid: "alice" }
});

initializeAdminApp({ databaseName: string }) => FirebaseApp

Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai admin guna menyiapkan status untuk pengujian.

Mengembalikan aplikasi firebase admin yang diinisialisasi sesuai dengan nama database yang ditentukan dalam opsi. Aplikasi ini melewati aturan keamanan saat membaca dan menulis ke database.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

Gunakan ini untuk mengatur aturan database Anda.

Mengirim aturan ke database yang berjalan secara lokal. Mengambil objek opsi yang menentukan "databaseName" dan "rules" Anda sebagai string.

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

Mengembalikan semua aplikasi pengujian dan admin yang saat ini diinisialisasi.

Gunakan ini untuk membersihkan aplikasi di antara atau setelah pengujian (perhatikan bahwa aplikasi yang diinisialisasi dengan pemroses aktif mencegah keluarnya JavaScript):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Mengembalikan janji yang ditolak jika masukan berhasil dan berhasil jika masukan ditolak.

Gunakan ini untuk menegaskan bahwa database gagal membaca atau menulis:

firebase.assertFails(app.database().ref("secret").once("value"));

assertSucceeds(pr: Promise) => Promise

Mengembalikan janji yang berhasil jika masukan berhasil dan ditolak jika masukan ditolak.

Gunakan ini untuk menegaskan bahwa database membaca atau menulis berhasil:

firebase.assertSucceeds(app.database().ref("public").once("value"));

Penyimpanan awan

Penyimpanan awan

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai pengguna khusus untuk digunakan dalam pengujian.

Mengembalikan aplikasi firebase yang diinisialisasi sesuai dengan nama keranjang penyimpanan dan penggantian variabel autentikasi yang ditentukan dalam opsi.

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai admin guna menyiapkan status untuk pengujian.

Mengembalikan aplikasi firebase admin yang diinisialisasi sesuai dengan nama bucket penyimpanan yang ditentukan dalam opsi. Aplikasi ini mengabaikan aturan keamanan saat membaca dan menulis ke bucket.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

Gunakan ini untuk menyetel aturan keranjang penyimpanan Anda.

Mengirim aturan ke keranjang penyimpanan yang dikelola secara lokal. Mengambil objek opsi yang menentukan "storageBucket" dan "aturan" Anda sebagai string.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

Mengembalikan semua aplikasi pengujian dan admin yang saat ini diinisialisasi.

Gunakan ini untuk membersihkan aplikasi di antara atau setelah pengujian (perhatikan bahwa aplikasi yang diinisialisasi dengan pemroses aktif mencegah keluarnya JavaScript):

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

Mengembalikan janji yang ditolak jika masukan berhasil dan berhasil jika masukan ditolak.

Gunakan ini untuk menegaskan bahwa keranjang penyimpanan gagal membaca atau menulis:

firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());

assertSucceeds(pr: Promise) => Promise

Mengembalikan janji yang berhasil jika masukan berhasil dan ditolak jika masukan ditolak.

Gunakan ini untuk menegaskan bahwa keranjang penyimpanan berhasil membaca atau menulis:

firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());