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

Buat laporan pengujian

Cloud Firestore dan Realtime Database keduanya mengandalkan bahasa aturan yang kuat dan ringkas yang dibuat khusus untuk mengatur keamanan informasi dan kontrol akses. Namun, karena aturan menjadi lebih panjang dan rumit, Anda mungkin memerlukan bantuan untuk men-debug kesalahan dalam perilakunya.

Emulator Firebase menyertakan kemampuan untuk menghasilkan laporan cakupan aturan, sehingga Anda dapat melihat dengan tepat apa yang dievaluasi setiap subekspresi saat Anda mereproduksi kesalahan. Laporan tersebut juga memberikan informasi tentang seberapa sering setiap kasus uji menggunakan aturan, seperti teknik "cakupan garis" tradisional.

Buat laporan

Setelah menjalankan rangkaian pengujian, Anda dapat mengakses laporan cakupan pengujian yang menunjukkan bagaimana setiap aturan keamanan Anda dievaluasi.

Untuk mendapatkan laporan, kueri endpoint yang terekspos pada emulator saat sedang berjalan. Untuk versi ramah browser, gunakan URL berikut:

Toko Api Awan

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html
 

Basis Data Waktu Nyata

http://localhost:9000/.inspect/coverage?ns=<database_name>
 

Ini memecah aturan Anda menjadi ekspresi dan subekspresi yang dapat Anda arahkan dengan mouse untuk informasi lebih lanjut, termasuk jumlah evaluasi dan nilai yang dikembalikan. Untuk versi JSON mentah dari data ini, sertakan URL berikut dalam kueri Anda:

Toko Api Awan

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage
 

Basis Data Waktu Nyata

http://localhost:9000/.inspect/coverage.json?ns=<database_name>
 

Aturan contoh debug

Untuk membuat laporan pengujian dengan mudah, gunakan quickstart emulator yang tersedia di GitHub untuk Cloud Firestore dan Realtime Database . Panduan mulai cepat ini memandu Anda menginstal dan menginisialisasi emulator dengan benar, lalu membuat pengujian sampel dari kumpulan contoh aturan.

Pertimbangkan contoh aplikasi menggunakan Cloud Firestore yang menghitung berapa kali pengguna mengklik tombol. Aplikasi ini menggunakan aturan berikut:

Toko Api Awan

 service cloud.firestore {
   match /databases/{database}/documents {
     match /counters/{counter} {
       allow read;
       allow write: if request.resource.data.value == resource.data.value +1;
     }
   }
 }
 

Untuk men-debug kesalahan dalam aturan yang ditampilkan di atas, gunakan pengujian JavaScript sampel berikut:

const counter0 = db.collection("counters").doc("0");
await firebase.assertSucceeds(counter0.set({value: 0}));

Emulator menghasilkan laporan yang tersedia di URL yang disebutkan di atas:

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html

Laporan menunjukkan kesalahan yang tidak ditentukan dan bernilai nol berikut:

Masalah dengan contoh khusus ini adalah aturan tidak membedakan antara membuat dokumen dan memperbarui dokumen. Akibatnya, penulisan tidak diperbolehkan jika dokumen tidak ada, dan dokumen tidak dapat dibuat karena tidak ada. Membedakan "tulis" menjadi dua operasi yang lebih spesifik — "buat" dan "perbarui" — menyelesaikan masalah.

Toko Api Awan

 service cloud.firestore {
   match /databases/{database}/documents {
     match /counters/{counter} {
       allow read;
       allow create: if request.resource.data.value == 0;
       allow update: if request.resource.data.value == resource.data.value +1;
     }
   }
 }
 

Laporan yang dihasilkan menunjukkan seberapa sering setiap aturan digunakan dan apa yang dikembalikan.