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

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Firebase Local Emulator Suite memudahkan untuk memvalidasi sepenuhnya fitur dan perilaku aplikasi Anda . Ini juga merupakan alat yang hebat untuk memverifikasi konfigurasi Aturan Keamanan Firebase Anda. Gunakan Firebase Emulator 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 yang memvalidasi Aturan Anda.

Jika Anda belum melakukannya, siapkan Firebase Emulators .

Sebelum Anda menjalankan emulator

Sebelum Anda mulai menggunakan emulator, perhatikan hal berikut:

  • Emulator awalnya akan memuat aturan yang ditentukan di bidang firestore.rules atau 'storage.rules' dari 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 proyek sebagai memiliki aturan terbuka.
  • Meskipun sebagian besar SDK Firebase bekerja dengan emulator secara langsung, hanya @firebase/rules-unit-testing yang mendukung auth tiruan di Aturan Keamanan, sehingga pengujian unit menjadi lebih mudah. Selain itu, perpustakaan 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 harus 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 database 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 normal tidak berfungsi. Sebagai gantinya, Anda bisa menggunakan metode initializeTestApp() di pustaka rules-unit-testing , yang menggunakan bidang auth . Objek Firebase yang dibuat menggunakan metode ini berperilaku seolah-olah telah berhasil diautentikasi sebagai entitas apa pun yang Anda berikan. Jika Anda memasukkan null , itu akan berperilaku sebagai pengguna yang tidak diautentikasi ( 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 query ns untuk menentukan nama database.

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

Jalankan pengujian unit lokal dengan versi 9 JavaScript SDK

Firebase mendistribusikan library pengujian unit Aturan Keamanan dengan SDK JavaScript versi 9 dan SDK versi 8. API perpustakaan sangat berbeda. Kami merekomendasikan library pengujian v9, yang lebih ramping 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 error timeout atau 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 perpustakaan 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, penerapan unit test melibatkan:

  • Membuat dan mengonfigurasi RulesTestEnvironment dengan panggilan ke initializeTestEnvironment .
  • Menyiapkan data pengujian tanpa memicu Aturan, menggunakan metode praktis yang memungkinkan Anda untuk mengabaikannya untuk sementara, RulesTestEnvironment.withSecurityRulesDisabled .
  • Menyiapkan test suite dan hook per-test sebelum/sesudah dengan panggilan untuk membersihkan data dan lingkungan pengujian, seperti RulesTestEnvironment.cleanup() atau RulesTestEnvironment.clearFirestore() .
  • Menerapkan kasus uji 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 pengaturan pengujian. Eksekusi yang berhasil membutuhkan emulator untuk dijalankan.

Fungsi menerima objek opsional yang mendefinisikan TestEnvironmentConfig , yang dapat terdiri dari ID proyek dan pengaturan 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, teruskan objek yang mendefinisikan klaim khusus atau penggantian untuk muatan token Otentikasi.

Gunakan objek konteks pengujian yang dikembalikan dalam pengujian Anda untuk mengakses setiap 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 ditampilkan tidak akan menyertakan token Firebase Auth.

Gunakan objek konteks pengujian yang dikembalikan dalam pengujian Anda untuk mengakses setiap 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 mengambil fungsi panggilan balik, yang mengambil konteks melewati Aturan Keamanan dan mengembalikan janji. Konteksnya akan hancur 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 clear data khusus emulator aplikasi.

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

Ini adalah fungsi utilitas kasus uji.

Fungsi tersebut menegaskan bahwa Promise 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 tersebut menegaskan bahwa Promise 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 .

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

Metode ini menghapus data dalam 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 API SDK klien (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 API SDK klien (v9 modular atau v9 compat). Metode ini menerima URL instance Realtime Database. Jika ditentukan, menampilkan instance untuk versi emulasi namespace dengan parameter yang diekstrak dari URL.

Penyimpanan awan

Penyimpanan awan

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 mengembalikan instance Storage yang dikonfigurasi untuk terhubung ke emulator. Metode ini menerima url gs:// ke Keranjang Penyimpanan Firebase untuk pengujian. Jika ditentukan, menampilkan instance Storage untuk versi nama bucket yang diemulasi.

Jalankan pengujian unit lokal dengan SDK JavaScript 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 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 tertentu untuk digunakan dalam pengujian.

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

initializeAdminApp({ projectId: string }) => FirebaseApp

Metode ini mengembalikan aplikasi Firebase admin yang diinisialisasi. Aplikasi ini melewati aturan keamanan saat melakukan membaca dan menulis. Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai admin untuk menyetel status pengujian.

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

apps() => [FirebaseApp] Metode ini mengembalikan semua aplikasi admin dan pengujian 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 input berhasil atau yang berhasil jika input ditolak. Gunakan ini untuk menegaskan jika database membaca atau menulis gagal.

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

assertSucceeds(pr: Promise) => Promise

Metode ini mengembalikan janji yang berhasil jika input berhasil dan ditolak jika input 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 tertentu untuk digunakan dalam pengujian.

Mengembalikan aplikasi firebase yang diinisialisasi terkait 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 "namadatabase" dan "aturan" Anda sebagai string.

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

apps() => [FirebaseApp]

Mengembalikan semua pengujian dan aplikasi admin yang saat ini diinisialisasi.

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

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

assertFails(pr: Promise) => Promise

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

Gunakan ini untuk menegaskan bahwa database membaca atau menulis gagal:

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

assertSucceeds(pr: Promise) => Promise

Mengembalikan janji yang berhasil jika input berhasil dan ditolak jika input 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 tertentu untuk digunakan dalam pengujian.

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

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

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

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

Gunakan ini untuk menetapkan aturan keranjang penyimpanan Anda.

Mengirim aturan ke bucket 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 pengujian dan aplikasi admin yang saat ini diinisialisasi.

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

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

assertFails(pr: Promise) => Promise

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

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

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

assertSucceeds(pr: Promise) => Promise

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

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

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

API perpustakaan 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 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 tertentu untuk digunakan dalam pengujian.

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

initializeAdminApp({ projectId: string }) => FirebaseApp

Metode ini mengembalikan aplikasi Firebase admin yang diinisialisasi. Aplikasi ini melewati aturan keamanan saat melakukan membaca dan menulis. Gunakan ini untuk membuat aplikasi yang diautentikasi sebagai admin untuk menyetel status pengujian.

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

apps() => [FirebaseApp] Metode ini mengembalikan semua aplikasi admin dan pengujian 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 input berhasil atau yang berhasil jika input ditolak. Gunakan ini untuk menegaskan jika database membaca atau menulis gagal.

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

assertSucceeds(pr: Promise) => Promise

Metode ini mengembalikan janji yang berhasil jika input berhasil dan ditolak jika input 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 tertentu untuk digunakan dalam pengujian.

Mengembalikan aplikasi firebase yang diinisialisasi terkait 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 "namadatabase" dan "aturan" Anda sebagai string.

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

apps() => [FirebaseApp]

Mengembalikan semua pengujian dan aplikasi admin yang saat ini diinisialisasi.

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

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

assertFails(pr: Promise) => Promise

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

Gunakan ini untuk menegaskan bahwa database membaca atau menulis gagal:

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

assertSucceeds(pr: Promise) => Promise

Mengembalikan janji yang berhasil jika input berhasil dan ditolak jika input 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 tertentu untuk digunakan dalam pengujian.

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

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

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

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

Gunakan ini untuk menetapkan aturan keranjang penyimpanan Anda.

Mengirim aturan ke bucket 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 pengujian dan aplikasi admin yang saat ini diinisialisasi.

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

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

assertFails(pr: Promise) => Promise

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

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

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

assertSucceeds(pr: Promise) => Promise

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

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

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