Mem-build pengujian unit

Firebase Local Emulator Suite memudahkan Anda untuk sepenuhnya memvalidasi fitur dan perilaku aplikasi. Firebase Local Emulator Suite juga bagus untuk memverifikasi konfigurasi Aturan Keamanan Firebase Anda. Gunakan Emulator Firebase untuk menjalankan dan mengotomatiskan pengujian unit di lingkungan lokal. Metode yang diuraikan pada dokumen ini akan membantu Anda dalam membangun dan mengotomatiskan pengujian unit untuk aplikasi Anda yang memvalidasi Aturan Anda.

Siapkan Firebase Emulator jika belum melakukannya.

Sebelum menjalankan emulator

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

  • Pertama, emulator akan memuat aturan yang ditentukan dalam 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 project yang memiliki aturan terbuka.
  • Meskipun sebagian besar Firebase SDK dapat langsung berfungsi dengan emulator, hanya library @firebase/rules-unit-testing yang mendukung tiruan auth pada Aturan Keamanan, sehingga mempermudah pengujian unit. Selain itu, library ini 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, sehingga aplikasi Anda dapat terhubung langsung ke emulator dalam pengujian manual dan integrasi.

Perbedaan antara emulator database dan produksi

  • Anda tidak harus membuat instance database secara eksplisit. Emulator akan otomatis membuat instance database yang diakses.
  • Setiap database baru dimulai dengan aturan tertutup, sehingga pengguna selain admin tidak dapat melakukan pembacaan atau penulisan.
  • Setiap database yang diemulasi menerapkan batas dan kuota paket Spark (terutama, hal ini membatasi setiap instance hingga 100 koneksi serentak).
  • Setiap database akan menerima string "owner" sebagai token autentikasi admin.
  • Emulator saat ini tidak memiliki interaksi yang berfungsi dengan produk Firebase lainnya. Secara khusus, alur Firebase Authentication normal tidak akan berfungsi. Sebagai gantinya, Anda dapat menggunakan metode initializeTestApp() di library rules-unit-testing, yang menggunakan kolom auth. Objek Firebase yang dibuat menggunakan metode ini akan berperilaku seolah-olah telah berhasil diautentikasi sebagai entity apa pun yang Anda berikan. Jika Anda meneruskan null, objek tersebut akan berperilaku sebagai pengguna yang tidak diautentikasi (misalnya, aturan auth != null akan gagal).

Berinteraksi dengan emulator Realtime Database

Instance Firebase Realtime Database produksi dapat diakses di subdomain firebaseio.com, dan Anda dapat mengakses REST API 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>

Menjalankan pengujian unit lokal dengan JavaScript SDK versi 9

Firebase mendistribusikan library pengujian unit Aturan Keamanan dengan JavaScript SDK versi 9 dan SDK versi 8. API library sangat berbeda. Kami merekomendasikan library pengujian v9, yang lebih sederhana dan memerlukan lebih sedikit penyiapan untuk terhubung ke emulator sehingga dapat dengan aman menghindari penggunaan resource produksi secara tidak sengaja. Untuk kompatibilitas mundur, kami terus menyediakan library pengujian v8.

Gunakan modul @firebase/rules-unit-testing untuk berinteraksi dengan emulator yang berjalan secara lokal. Jika Anda menemukan error ECONNREFUSED atau waktu tunggu, periksa kembali apakah emulator sedang berjalan atau tidak.

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

Library Pengujian Unit Aturan v9 selalu mengetahui keberadaan emulator dan tidak pernah menyentuh resource produksi Anda.

Anda mengimpor library menggunakan pernyataan impor modular v9. 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, penerapan pengujian unit 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 rangkaian pengujian dan per-pengujian sebelum/setelah hook dengan panggilan untuk membersihkan data dan lingkungan pengujian, seperti RulesTestEnvironment.cleanup() atau RulesTestEnvironment.clearFirestore().
  • Menerapkan kasus pengujian yang meniru status autentikasi menggunakan RulesTestEnvironment.authenticatedContext dan RulesTestEnvironment.unauthenticatedContext.

Metode dan fungsi utilitas yang umum

Lihat juga metode pengujian khusus emulator menggunakan API modular.

initializeTestEnvironment() => RulesTestEnvironment

Fungsi ini menginisialisasi lingkungan pengujian untuk pengujian unit aturan. Panggil fungsi ini terlebih dahulu untuk penyiapan pengujian. Emulator harus berjalan agar eksekusi dapat berhasil dilakukan.

Fungsi ini menerima objek opsional yang menentukan 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 Authentication yang terautentikasi. Permintaan yang dibuat melalui konteks yang ditampilkan akan memiliki token Authentication tiruan yang dilampirkan. Secara opsional, teruskan objek yang menentukan klaim kustom atau penggantian untuk payload token Authentication.

Gunakan objek konteks pengujian yang ditampilkan dalam pengujian Anda untuk mengakses 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 login melalui Authentication. Permintaan yang dibuat melalui konteks yang ditampilkan tidak akan dilampiri token Firebase Auth.

Gunakan objek konteks pengujian yang ditampilkan dalam pengujian Anda untuk mengakses 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()

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

Metode ini menggunakan fungsi callback yang mengambil konteks pengabaian Aturan Keamanan dan menampilkan promise. Konteks akan dimusnahkan setelah promise me-resolve/menolak.

RulesTestEnvironment.cleanup()

Metode ini menghapus semua RulesTestContexts yang dibuat di lingkungan pengujian dan membersihkan resource yang mendasarinya, sehingga memungkinkan keluar secara bersih.

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

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

Ini adalah fungsi utilitas kasus pengujian.

Fungsi ini menegaskan bahwa Promise yang disediakan dan menggabungkan 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 pengujian.

Fungsi ini menegaskan bahwa Promise yang disediakan dan menggabungkan operasi emulator akan ditolak dengan pelanggaran Aturan Keamanan.

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

Metode khusus emulator

Lihat juga metode pengujian dan fungsi utilitas yang umum menggunakan API modular.

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

Metode ini menghapus data dalam database Firestore yang termasuk dalam projectId yang dikonfigurasi untuk emulator Firestore.

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

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

Realtime Database

Realtime Database

RulesTestEnvironment.clearDatabase() => Promise<void>

Metode ini menghapus data di Realtime Database yang termasuk dalam 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 ditampilkan dapat digunakan dengan API SDK klien (modular atau namespace, versi 9 atau yang lebih baru). Metode ini menerima URL instance Realtime Database. Jika ditentukan, instance untuk versi namespace yang diemulasi ditampilkan dengan parameter yang diekstrak dari URL.

Cloud Storage

Cloud Storage

RulesTestEnvironment.clearStorage() => Promise<void>

Metode ini menghapus objek dan metadata dalam 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 ini menerima URL gs:// ke Bucket Firebase Storage untuk pengujian. Jika ditentukan, akan menampilkan instance Storage untuk versi nama bucket yang diemulasikan.

Menjalankan pengujian unit lokal dengan JavaScript SDK v8

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

Cloud Firestore

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

Metode ini menampilkan aplikasi Firebase yang diinisialisasi sesuai dengan project ID dan variabel autentikasi yang ditentukan pada opsi. Gunakan metode ini untuk membuat aplikasi yang diautentikasi sebagai pengguna khusus untuk digunakan pada 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 mengabaikan aturan keamanan saat melakukan pembacaan dan penulisan. Gunakan metode ini untuk membuat aplikasi yang diautentikasi sebagai admin guna menetapkan status untuk pengujian.

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

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

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

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

Metode ini mengirim aturan ke database yang berjalan secara lokal. Diperlukan objek yang menentukan aturan sebagai string. Gunakan metode ini untuk menetapkan aturan database Anda.

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

assertFails(pr: Promise) => Promise

Metode ini menampilkan promise yang ditolak jika input berhasil, atau promise yang berhasil jika input ditolak. Gunakan metode ini untuk menegaskan jika pembacaan atau penulisan database gagal.

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

assertSucceeds(pr: Promise) => Promise

Metode ini menampilkan promise yang berhasil jika input berhasil, dan promise yang ditolak jika input ditolak. Gunakan metode ini untuk menegaskan jika pembacaan atau penulisan database berhasil.

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

clearFirestoreData({ projectId: string }) => Promise

Metode ini menghapus semua data yang terkait dengan project tertentu pada instance Firestore yang berjalan secara lokal. Gunakan metode ini untuk melakukan pembersihan setelah pengujian.

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

Realtime Database

Realtime Database

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

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

Menampilkan 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 metode ini untuk membuat aplikasi yang diautentikasi sebagai admin guna menyiapkan status untuk pengujian.

Menampilkan aplikasi Firebase admin yang diinisialisasi sesuai dengan nama database yang ditentukan dalam opsi. Aplikasi ini mengabaikan aturan keamanan saat melakukan pembacaan dan penulisan ke database.

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

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

Gunakan metode ini untuk menetapkan aturan database Anda.

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

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

apps() => [FirebaseApp]

Menampilkan semua aplikasi admin dan pengujian yang saat ini diinisialisasi.

Gunakan metode ini untuk membersihkan data aplikasi di antara pengujian atau setelah pengujian (perhatikan bahwa aplikasi yang diinisialisasi dengan pemroses aktif membuat JavaScript tidak bisa keluar):

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

assertFails(pr: Promise) => Promise

Menampilkan promise yang ditolak jika input berhasil, dan promise yang berhasil jika input ditolak.

Gunakan metode ini untuk menegaskan bahwa pembacaan atau penulisan database gagal:

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

assertSucceeds(pr: Promise) => Promise

Menampilkan promise yang berhasil jika input berhasil, dan promise yang ditolak jika input ditolak.

Gunakan metode ini untuk menegaskan bahwa pembacaan atau penulisan database berhasil:

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

Cloud Storage

Cloud Storage

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

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

Menampilkan aplikasi Firebase yang diinisialisasi sesuai dengan nama bucket penyimpanan dan penggantian variabel autentikasi yang ditentukan dalam opsi.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

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

Menampilkan aplikasi Firebase admin yang diinisialisasi sesuai dengan nama bucket penyimpanan yang ditentukan dalam opsi. Aplikasi ini mengabaikan aturan keamanan saat melakukan pembacaan dan penulisan ke bucket.

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

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

Gunakan metode ini untuk menetapkan aturan bucket penyimpanan Anda.

Mengirimkan aturan ke bucket penyimpanan yang dikelola secara lokal. Memerlukan objek opsi yang menentukan "storageBucket" dan "rules" Anda sebagai string.

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

apps() => [FirebaseApp]

Menampilkan semua aplikasi admin dan pengujian yang saat ini diinisialisasi.

Gunakan metode ini untuk membersihkan data aplikasi di antara pengujian atau setelah pengujian (perhatikan bahwa aplikasi yang diinisialisasi dengan pemroses aktif membuat JavaScript tidak bisa keluar):

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

assertFails(pr: Promise) => Promise

Menampilkan promise yang ditolak jika input berhasil, dan promise yang berhasil jika input ditolak.

Gunakan metode ini untuk menegaskan bahwa pembacaan atau penulisan bucket penyimpanan gagal:

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

assertSucceeds(pr: Promise) => Promise

Menampilkan promise yang berhasil jika input berhasil, dan promise yang ditolak jika input ditolak.

Gunakan metode ini untuk menegaskan bahwa pembacaan atau penulisan bucket penyimpanan berhasil:

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

API library RUT untuk JS SDK v8

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

Cloud Firestore

Cloud Firestore

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

Metode ini menampilkan aplikasi Firebase yang diinisialisasi sesuai dengan project ID dan variabel autentikasi yang ditentukan pada opsi. Gunakan metode ini untuk membuat aplikasi yang diautentikasi sebagai pengguna khusus untuk digunakan pada 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 mengabaikan aturan keamanan saat melakukan pembacaan dan penulisan. Gunakan metode ini untuk membuat aplikasi yang diautentikasi sebagai admin guna menetapkan status untuk pengujian.

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

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

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

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

Metode ini mengirim aturan ke database yang berjalan secara lokal. Diperlukan objek yang menentukan aturan sebagai string. Gunakan metode ini untuk menetapkan aturan database Anda.

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

assertFails(pr: Promise) => Promise

Metode ini menampilkan promise yang ditolak jika input berhasil, atau promise yang berhasil jika input ditolak. Gunakan metode ini untuk menegaskan jika pembacaan atau penulisan database gagal.

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

assertSucceeds(pr: Promise) => Promise

Metode ini menampilkan promise yang berhasil jika input berhasil, dan promise yang ditolak jika input ditolak. Gunakan metode ini untuk menegaskan jika pembacaan atau penulisan database berhasil.

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

clearFirestoreData({ projectId: string }) => Promise

Metode ini menghapus semua data yang terkait dengan project tertentu pada instance Firestore yang berjalan secara lokal. Gunakan metode ini untuk melakukan pembersihan setelah pengujian.

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

Realtime Database

Realtime Database

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

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

Menampilkan 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 metode ini untuk membuat aplikasi yang diautentikasi sebagai admin guna menyiapkan status untuk pengujian.

Menampilkan aplikasi Firebase admin yang diinisialisasi sesuai dengan nama database yang ditentukan dalam opsi. Aplikasi ini mengabaikan aturan keamanan saat melakukan pembacaan dan penulisan ke database.

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

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

Gunakan metode ini untuk menetapkan aturan database Anda.

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

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

apps() => [FirebaseApp]

Menampilkan semua aplikasi admin dan pengujian yang saat ini diinisialisasi.

Gunakan metode ini untuk membersihkan data aplikasi di antara pengujian atau setelah pengujian (perhatikan bahwa aplikasi yang diinisialisasi dengan pemroses aktif membuat JavaScript tidak bisa keluar):

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

assertFails(pr: Promise) => Promise

Menampilkan promise yang ditolak jika input berhasil, dan promise yang berhasil jika input ditolak.

Gunakan metode ini untuk menegaskan bahwa pembacaan atau penulisan database gagal:

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

assertSucceeds(pr: Promise) => Promise

Menampilkan promise yang berhasil jika input berhasil, dan promise yang ditolak jika input ditolak.

Gunakan metode ini untuk menegaskan bahwa pembacaan atau penulisan database berhasil:

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

Cloud Storage

Cloud Storage

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

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

Menampilkan aplikasi Firebase yang diinisialisasi sesuai dengan nama bucket penyimpanan dan penggantian variabel autentikasi yang ditentukan dalam opsi.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

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

Menampilkan aplikasi Firebase admin yang diinisialisasi sesuai dengan nama bucket penyimpanan yang ditentukan dalam opsi. Aplikasi ini mengabaikan aturan keamanan saat melakukan pembacaan dan penulisan ke bucket.

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

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

Gunakan metode ini untuk menetapkan aturan bucket penyimpanan Anda.

Mengirimkan aturan ke bucket penyimpanan yang dikelola secara lokal. Memerlukan objek opsi yang menentukan "storageBucket" dan "rules" Anda sebagai string.

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

apps() => [FirebaseApp]

Menampilkan semua aplikasi admin dan pengujian yang saat ini diinisialisasi.

Gunakan metode ini untuk membersihkan data aplikasi di antara pengujian atau setelah pengujian (perhatikan bahwa aplikasi yang diinisialisasi dengan pemroses aktif membuat JavaScript tidak bisa keluar):

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

assertFails(pr: Promise) => Promise

Menampilkan promise yang ditolak jika input berhasil, dan promise yang berhasil jika input ditolak.

Gunakan metode ini untuk menegaskan bahwa pembacaan atau penulisan bucket penyimpanan gagal:

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

assertSucceeds(pr: Promise) => Promise

Menampilkan promise yang berhasil jika input berhasil, dan promise yang ditolak jika input ditolak.

Gunakan metode ini untuk menegaskan bahwa pembacaan atau penulisan bucket penyimpanan berhasil:

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