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 filefirebase.json
Anda. Jika file tidak ada dan Anda tidak menggunakan metodeloadFirestoreRules
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 tiruanauth
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 libraryrules-unit-testing
, yang menggunakan kolomauth
. Objek Firebase yang dibuat menggunakan metode ini akan berperilaku seolah-olah telah berhasil diautentikasi sebagai entity apa pun yang Anda berikan. Jika Anda meneruskannull
, objek tersebut akan berperilaku sebagai pengguna yang tidak diautentikasi (misalnya, aturanauth != 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 keinitializeTestEnvironment
. - 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()
atauRulesTestEnvironment.clearFirestore()
. - Menerapkan kasus pengujian yang meniru status autentikasi menggunakan
RulesTestEnvironment.authenticatedContext
danRulesTestEnvironment.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());