تعمل مجموعة Firebase Local Emulator Suite على تسهيل التحقق الكامل من صحة ميزات التطبيق وسلوكه . إنها أيضًا أداة رائعة للتحقق من تكوينات قواعد أمان Firebase. استخدم محاكيات Firebase لتشغيل وأتمتة اختبارات الوحدة في بيئة محلية. يجب أن تساعدك الطرق الموضحة في هذا المستند أثناء إنشاء اختبارات الوحدة وتشغيلها تلقائيًا لتطبيقك الذي يتحقق من صحة القواعد الخاصة بك.
إذا لم تكن قد قمت بذلك بالفعل ، فقم بإعداد محاكيات Firebase .
قبل تشغيل المحاكي
قبل البدء في استخدام المحاكي ، ضع في اعتبارك ما يلي:
- سيقوم المحاكي في البداية بتحميل القواعد المحددة في
firestore.rules
أو حقل "storage.rules" لملفfirebase.json
الخاص بك. إذا لم يكن الملف موجودًا ولم تستخدم طريقةloadFirestoreRules
أو طريقة "loadStorageRules" كما هو موضح أدناه ، فإن المحاكي يعامل جميع المشاريع على أنها ذات قواعد مفتوحة. - بينما تعمل معظم حزم Firebase SDK مع المحاكيات مباشرةً ، تدعم مكتبة
@firebase/rules-unit-testing
فقطauth
السخرية في قواعد الأمان ، مما يجعل اختبارات الوحدة أسهل بكثير. بالإضافة إلى ذلك ، تدعم المكتبة بعض الميزات الخاصة بالمحاكي مثل مسح جميع البيانات ، كما هو موضح أدناه. - ستقبل المحاكيات أيضًا رموز Firebase Auth المميزة للإنتاج المقدمة من خلال Client SDKs وتقييم القواعد وفقًا لذلك ، مما يسمح بربط تطبيقك مباشرةً بالمحاكيات في التكامل والاختبارات اليدوية.
الاختلافات بين محاكيات قاعدة البيانات والإنتاج
- لا يتعين عليك إنشاء طبعة قاعدة بيانات بشكل صريح. سيقوم المحاكي تلقائيًا بإنشاء أي مثيل قاعدة بيانات يتم الوصول إليه.
- تبدأ كل قاعدة بيانات جديدة بقواعد مغلقة ، لذلك لن يتمكن المستخدمون غير الإداريين من القراءة أو الكتابة.
- تطبق كل قاعدة بيانات تمت مضاهاتها حدود وحصص خطة Spark (وعلى الأخص ، يحد هذا كل مثيل بـ 100 اتصال متزامن).
- ستقبل أي قاعدة بيانات السلسلة
"owner"
كرمز مميز للمصادقة المسؤول. - لا تحتوي برامج المحاكاة حاليًا على تفاعلات عملية مع منتجات Firebase الأخرى. والجدير بالذكر أن تدفق مصادقة Firebase العادي لا يعمل. بدلاً من ذلك ، يمكنك استخدام طريقة
initializeTestApp()
في مكتبةrules-unit-testing
، والتي تأخذ حقلauth
. يتصرف كائن Firebase الذي تم إنشاؤه باستخدام هذه الطريقة كما لو أنه قد تمت مصادقته بنجاح ككيان تقدمه. إذا مررت قيمةnull
، فسوف تتصرف كمستخدم غير مصدق (auth != null
، على سبيل المثال).
التفاعل مع محاكي Realtime Database
يمكن الوصول إلى مثيل قاعدة بيانات إنتاج Firebase Realtime في نطاق فرعي من firebaseio.com
، ويمكنك الوصول إلى REST api كما يلي:
https://<database_name>.firebaseio.com/path/to/my/data.json
يعمل المحاكي محليًا ، ومتاح على localhost:9000
. للتفاعل مع طبعة قاعدة بيانات معينة ، يجب عليك استخدام معلمة الاستعلام ns
لتحديد اسم قاعدة البيانات.
http://localhost:9000/path/to/my/data.json?ns=<database_name>
قم بتشغيل اختبارات الوحدة المحلية باستخدام الإصدار 9 من JavaScript SDK
يوزع Firebase مكتبة اختبار وحدة قواعد الأمان مع الإصدار 9 من JavaScript SDK والإصدار 8 SDK. تختلف واجهات برمجة التطبيقات الخاصة بالمكتبة اختلافًا كبيرًا. نوصي بمكتبة اختبار الإصدار 9 ، وهي أكثر انسيابية وتتطلب إعدادًا أقل للاتصال بالمحاكيات وبالتالي تجنب الاستخدام العرضي لموارد الإنتاج بأمان. للتوافق مع الإصدارات السابقة ، نواصل إتاحة مكتبة اختبار الإصدار 8 .
- طرق الاختبار الشائعة ووظائف الأداة المساعدة في الإصدار 9 SDK
- طرق الاختبار الخاصة بالمحاكي في الإصدار 9 SDK
استخدم وحدة @firebase/rules-unit-testing
للتفاعل مع المحاكي الذي يعمل محليًا. إذا حصلت على أخطاء مهلة أو أخطاء ECONNREFUSED
، فتحقق جيدًا من تشغيل المحاكي بالفعل.
نوصي بشدة باستخدام إصدار حديث من Node.js حتى تتمكن من استخدام تدوين async/await
. تتضمن جميع السلوكيات التي قد ترغب في اختبارها تقريبًا وظائف غير متزامنة ، وقد تم تصميم وحدة الاختبار للعمل مع التعليمات البرمجية المستندة إلى Promise.
مكتبة v9 Rules Unit Testing دائمًا على دراية بالمحاكيات ولا تلمس أبدًا موارد الإنتاج الخاصة بك.
يمكنك استيراد المكتبة باستخدام عبارات الاستيراد المعيارية v9. على سبيل المثال:
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.
بمجرد الاستيراد ، يتضمن تنفيذ اختبارات الوحدة ما يلي:
- إنشاء وتكوين
RulesTestEnvironment
مع استدعاءinitializeTestEnvironment
. - إعداد بيانات الاختبار دون تشغيل القواعد ، باستخدام طريقة ملائمة تسمح لك بتجاوزها مؤقتًا ،
RulesTestEnvironment.withSecurityRulesDisabled
. - إعداد مجموعة الاختبار وكل اختبار قبل / بعد الخطافات مع استدعاءات لتنظيف بيانات الاختبار والبيئة ، مثل
RulesTestEnvironment.cleanup()
أوRulesTestEnvironment.clearFirestore()
. - تنفيذ حالات الاختبار التي تحاكي حالات المصادقة باستخدام
RulesTestEnvironment.authenticatedContext
وRulesTestEnvironment.unauthenticatedContext
.
الطرق الشائعة ووظائف المنفعة
راجع أيضًا طرق الاختبار الخاصة بالمحاكي باستخدام واجهة برمجة التطبيقات المعيارية .
initializeTestEnvironment() => RulesTestEnvironment
تعمل هذه الوظيفة على تهيئة بيئة اختبار لاختبار وحدة القواعد. اتصل بهذه الوظيفة أولاً لإعداد الاختبار. يتطلب التنفيذ الناجح تشغيل المحاكيات.
تقبل الوظيفة كائنًا اختياريًا يحدد TestEnvironmentConfig
، والذي يمكن أن يتكون من معرف المشروع وإعدادات تكوين المحاكي.
let testEnv = await initializeTestEnvironment({ projectId: "demo-project-1234", firestore: { rules: fs.readFileSync("firestore.rules", "utf8"), }, });
RulesTestEnvironment.authenticatedContext({ user_id: string, tokenOptions?: TokenOptions }) => RulesTestContext
تقوم هذه الطريقة بإنشاء RulesTestContext
، الذي يتصرف مثل مستخدم مصادقة مصدق عليه. الطلبات التي تم إنشاؤها عبر السياق الذي تم إرجاعه سيكون لها رمز مصادقة وهمي مرفق. اختياريًا ، قم بتمرير كائن يحدد المطالبات المخصصة أو يتجاوز حمولات رمز المصادقة.
استخدم كائن سياق الاختبار الذي تم إرجاعه في اختباراتك للوصول إلى أي مثيلات محاكي تم تكوينها ، بما في ذلك تلك التي تم تكوينها باستخدام 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
تنشئ هذه الطريقة RulesTestContext
، والتي تتصرف مثل عميل لم يتم تسجيل دخوله عبر المصادقة. الطلبات التي تم إنشاؤها عبر السياق الذي تم إرجاعه لن يتم إرفاق رموز Firebase Auth المميزة.
استخدم كائن سياق الاختبار الذي تم إرجاعه في اختباراتك للوصول إلى أي مثيلات محاكي تم تكوينها ، بما في ذلك تلك التي تم تكوينها باستخدام 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()
قم بتشغيل وظيفة إعداد اختبار مع سياق يتصرف كما لو تم تعطيل قواعد الأمان.
تأخذ هذه الطريقة وظيفة رد الاتصال ، والتي تأخذ سياق تجاوز قواعد الأمان وتعيد وعدًا. سيتم تدمير السياق بمجرد أن يحل الوعد / يرفض.
RulesTestEnvironment.cleanup()
تعمل هذه الطريقة على تدمير جميع RulesTestContexts
التي تم إنشاؤها في بيئة الاختبار وتنظيف الموارد الأساسية ، مما يسمح بخروج نظيف.
هذه الطريقة لا تغير حالة المحاكيات بأي شكل من الأشكال. لإعادة تعيين البيانات بين الاختبارات ، استخدم طريقة البيانات الواضحة الخاصة بمحاكي التطبيق.
assertSucceeds(pr: Promise<any>)) => Promise<any>
هذه وظيفة مفيدة لحالة الاختبار.
تؤكد الوظيفة أنه سيتم حل الوعد المقدم الذي يغلف عملية المحاكي بدون انتهاكات لقواعد الأمان.
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });
assertFails(pr: Promise<any>)) => Promise<any>
هذه وظيفة مفيدة لحالة الاختبار.
تؤكد الوظيفة أن الوعد المقدم الذي يغلف عملية المحاكي سيتم رفضه بانتهاك قواعد الأمان.
await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });
طرق خاصة بالمحاكي
راجع أيضًا طرق الاختبار الشائعة ووظائف الأداة باستخدام واجهة برمجة التطبيقات المعيارية .
سحابة Firestore
سحابة Firestore
RulesTestEnvironment.clearFirestore() => Promise<void>
تعمل هذه الطريقة على مسح البيانات الموجودة في قاعدة بيانات Firestore التي تنتمي إلى projectId
الذي تم تكوينه لمحاكي Firestore.
RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;
تحصل هذه الطريقة على مثيل Firestore لسياق الاختبار هذا. يمكن استخدام مثيل Firebase JS Client SDK الذي تم إرجاعه مع واجهات برمجة تطبيقات SDK للعميل (الإصدار 9 المعياري أو الإصدار 9 المتوافق).
قاعدة بيانات الوقت الفعلي
قاعدة بيانات الوقت الفعلي
RulesTestEnvironment.clearDatabase() => Promise<void>
تعمل هذه الطريقة على مسح البيانات الموجودة في Realtime Database التي تنتمي إلى projectId
المكون لمحاكي Realtime Database.
RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;
احصل على مثيل Realtime Database لسياق الاختبار هذا. يمكن استخدام مثيل Firebase JS Client SDK الذي تم إرجاعه مع واجهات برمجة تطبيقات SDK للعميل (معيارية أو ذات مساحة اسم ، الإصدار 9 أو أحدث). تقبل الطريقة عنوان URL لمثيل Realtime Database. إذا تم تحديده ، يتم عرض مثيل لإصدار تمت محاكاته لمساحة الاسم مع معلمات مستخرجة من URL.
سحابة التخزين
سحابة التخزين
RulesTestEnvironment.clearStorage() => Promise<void>
تعمل هذه الطريقة على مسح الكائنات والبيانات الوصفية في حاويات التخزين التي تنتمي إلى projectId
الذي تم تكوينه لمحاكي Cloud Storage.
RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;
تقوم هذه الطريقة بإرجاع مثيل تخزين تم تكوينه للاتصال بالمحاكي. يقبل الأسلوب gs://
url إلى مجموعة تخزين Firebase للاختبار. إذا تم تحديده ، يتم إرجاع مثيل التخزين لإصدار تمت مضاهاته من اسم الحاوية.
قم بتشغيل اختبارات الوحدة المحلية باستخدام الإصدار 8 من JavaScript SDK
حدد منتجًا لمعرفة الطرق المستخدمة بواسطة Firebase Test SDK للتفاعل مع المحاكي.
سحابة Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
تعرض هذه الطريقة تطبيق Firebase مهيأ يتوافق مع معرّف المشروع ومتغير المصادقة المحدد في الخيارات. استخدم هذا لإنشاء تطبيق مصادق عليه كمستخدم معين لاستخدامه في الاختبارات.
firebase.initializeTestApp({ projectId: "my-test-project", auth: { uid: "alice", email: "alice@example.com" } });
initializeAdminApp({ projectId: string }) => FirebaseApp
تعرض هذه الطريقة تطبيق Firebase للمشرف تمت تهيئته. يتجاوز هذا التطبيق قواعد الأمان عند إجراء عمليات القراءة والكتابة. استخدم هذا لإنشاء تطبيق مصادق عليه كمسؤول لتعيين حالة الاختبارات.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
تعرض هذه الطريقة جميع تطبيقات الإدارة والاختبار التي تمت تهيئتها حاليًا. استخدم هذا لتنظيف التطبيقات بين الاختبارات أو بعدها.
Promise.all(firebase.apps().map(app => app.delete()))
loadFirestoreRules({ projectId: string, rules: Object }) => Promise
ترسل هذه الطريقة القواعد إلى قاعدة بيانات قيد التشغيل محليًا. يأخذ كائنًا يحدد القواعد كسلسلة. استخدم هذه الطريقة لتعيين قواعد قاعدة البيانات الخاصة بك.
firebase.loadFirestoreRules({ projectId: "my-test-project", rules: fs.readFileSync("/path/to/firestore.rules", "utf8") });
assertFails(pr: Promise) => Promise
تُرجع هذه الطريقة وعدًا تم رفضه إذا نجح الإدخال أو نجح في حالة رفض الإدخال. استخدم هذا لتأكيد فشل قراءة قاعدة البيانات أو كتابتها.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
ترجع هذه الطريقة وعدًا ينجح إذا نجح الإدخال ويتم رفضه إذا تم رفض الإدخال. استخدم هذا لتأكيد نجاح قاعدة البيانات التي تمت قراءتها أو كتابتها.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
تقوم هذه الطريقة بمسح جميع البيانات المرتبطة بمشروع معين في مثيل Firestore الذي يتم تشغيله محليًا. استخدم هذه الطريقة للتنظيف بعد الاختبارات.
firebase.clearFirestoreData({ projectId: "my-test-project" });
قاعدة بيانات الوقت الفعلي
قاعدة بيانات الوقت الفعلي
initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp
استخدم هذا لإنشاء تطبيق مصادق عليه كمستخدم معين لاستخدامه في الاختبارات.
إرجاع تطبيق Firebase مهيأ يتوافق مع اسم قاعدة البيانات وتجاوز متغير المصادقة المحدد في الخيارات.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
استخدم هذا لإنشاء تطبيق مصدق عليه كمسؤول لإعداد حالة الاختبارات.
يُرجع تطبيق مشرف Firebase مهيأ يتوافق مع اسم قاعدة البيانات المحدد في الخيارات. يتجاوز هذا التطبيق قواعد الأمان عند القراءة والكتابة في قاعدة البيانات.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
استخدم هذا لتعيين قواعد قاعدة البيانات الخاصة بك.
يرسل القواعد إلى قاعدة بيانات قيد التشغيل محليًا. يأخذ كائن خيارات يحدد "اسم قاعدة البيانات" و "القواعد" كسلاسل.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
تُرجع جميع تطبيقات الإدارة والاختبار التي تمت تهيئتها حاليًا.
استخدم هذا لتنظيف التطبيقات بين الاختبارات أو بعدها (لاحظ أن التطبيقات التي تمت تهيئتها مع المستمعين النشطين تمنع JavaScript من الخروج):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
يُرجع وعدًا تم رفضه في حالة نجاح الإدخال ونجاحه إذا تم رفض الإدخال.
استخدم هذا لتأكيد فشل قراءة قاعدة البيانات أو كتابتها:
firebase.assertFails(app.database().ref("secret").once("value"));
assertSucceeds(pr: Promise) => Promise
إرجاع وعد ينجح إذا نجح الإدخال ورفضه إذا تم رفض الإدخال.
استخدم هذا لتأكيد نجاح قاعدة البيانات في القراءة أو الكتابة:
firebase.assertSucceeds(app.database().ref("public").once("value"));
سحابة التخزين
سحابة التخزين
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
استخدم هذا لإنشاء تطبيق مصادق عليه كمستخدم معين لاستخدامه في الاختبارات.
يُرجع تطبيق Firebase المهيأ المطابق لاسم حاوية التخزين وتجاوز متغير المصادقة المحدد في الخيارات.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
استخدم هذا لإنشاء تطبيق مصدق عليه كمسؤول لإعداد حالة الاختبارات.
يُرجع تطبيق مشرف Firebase تمت تهيئته يتوافق مع اسم حاوية التخزين المحدد في الخيارات. يتجاوز هذا التطبيق قواعد الأمان عند القراءة والكتابة في الدلو.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
استخدم هذا لتعيين قواعد حاوية التخزين الخاصة بك.
يرسل القواعد إلى حاويات التخزين المُدارة محليًا. يأخذ كائن خيارات يحدد "سعة التخزين" و "القواعد" كسلاسل.
firebase
.loadStorageRules({
storageBucket: "my-bucket",
rules: fs.readFileSync("/path/to/storage.rules", "utf8")
});
apps() => [FirebaseApp]
تُرجع جميع تطبيقات الإدارة والاختبار التي تمت تهيئتها حاليًا.
استخدم هذا لتنظيف التطبيقات بين الاختبارات أو بعدها (لاحظ أن التطبيقات التي تمت تهيئتها مع المستمعين النشطين تمنع JavaScript من الخروج):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
يُرجع وعدًا تم رفضه في حالة نجاح الإدخال ونجاحه إذا تم رفض الإدخال.
استخدم هذا لتأكيد فشل قراءة أو كتابة حاوية التخزين:
firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());
assertSucceeds(pr: Promise) => Promise
إرجاع وعد ينجح إذا نجح الإدخال ورفضه إذا تم رفض الإدخال.
استخدم هذا للتأكيد على نجاح قراءة أو كتابة حاوية التخزين:
firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());
واجهة برمجة تطبيقات مكتبة RUT لـ JS SDK v8
حدد منتجًا لمعرفة الطرق المستخدمة بواسطة Firebase Test SDK للتفاعل مع المحاكي.
سحابة Firestore
سحابة Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
تعرض هذه الطريقة تطبيق Firebase مهيأ يتوافق مع معرّف المشروع ومتغير المصادقة المحدد في الخيارات. استخدم هذا لإنشاء تطبيق مصادق عليه كمستخدم معين لاستخدامه في الاختبارات.
firebase.initializeTestApp({ projectId: "my-test-project", auth: { uid: "alice", email: "alice@example.com" } });
initializeAdminApp({ projectId: string }) => FirebaseApp
تعرض هذه الطريقة تطبيق Firebase للمشرف تمت تهيئته. يتجاوز هذا التطبيق قواعد الأمان عند إجراء عمليات القراءة والكتابة. استخدم هذا لإنشاء تطبيق مصادق عليه كمسؤول لتعيين حالة الاختبارات.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
تعرض هذه الطريقة جميع تطبيقات الإدارة والاختبار التي تمت تهيئتها حاليًا. استخدم هذا لتنظيف التطبيقات بين الاختبارات أو بعدها.
Promise.all(firebase.apps().map(app => app.delete()))
loadFirestoreRules({ projectId: string, rules: Object }) => Promise
ترسل هذه الطريقة القواعد إلى قاعدة بيانات قيد التشغيل محليًا. يأخذ كائنًا يحدد القواعد كسلسلة. استخدم هذه الطريقة لتعيين قواعد قاعدة البيانات الخاصة بك.
firebase.loadFirestoreRules({ projectId: "my-test-project", rules: fs.readFileSync("/path/to/firestore.rules", "utf8") });
assertFails(pr: Promise) => Promise
تُرجع هذه الطريقة وعدًا تم رفضه إذا نجح الإدخال أو نجح في حالة رفض الإدخال. استخدم هذا لتأكيد فشل قراءة قاعدة البيانات أو كتابتها.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
ترجع هذه الطريقة وعدًا ينجح إذا نجح الإدخال ويتم رفضه إذا تم رفض الإدخال. استخدم هذا لتأكيد نجاح قاعدة البيانات التي تمت قراءتها أو كتابتها.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
تقوم هذه الطريقة بمسح جميع البيانات المرتبطة بمشروع معين في مثيل Firestore الذي يتم تشغيله محليًا. استخدم هذه الطريقة للتنظيف بعد الاختبارات.
firebase.clearFirestoreData({ projectId: "my-test-project" });
قاعدة بيانات الوقت الفعلي
قاعدة بيانات الوقت الفعلي
initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp
استخدم هذا لإنشاء تطبيق مصادق عليه كمستخدم معين لاستخدامه في الاختبارات.
إرجاع تطبيق Firebase مهيأ يتوافق مع اسم قاعدة البيانات وتجاوز متغير المصادقة المحدد في الخيارات.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
استخدم هذا لإنشاء تطبيق مصدق عليه كمسؤول لإعداد حالة الاختبارات.
يُرجع تطبيق مشرف Firebase مهيأ يتوافق مع اسم قاعدة البيانات المحدد في الخيارات. يتجاوز هذا التطبيق قواعد الأمان عند القراءة والكتابة في قاعدة البيانات.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
استخدم هذا لتعيين قواعد قاعدة البيانات الخاصة بك.
يرسل القواعد إلى قاعدة بيانات قيد التشغيل محليًا. يأخذ كائن خيارات يحدد "اسم قاعدة البيانات" و "القواعد" كسلاسل.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
تُرجع جميع تطبيقات الإدارة والاختبار التي تمت تهيئتها حاليًا.
استخدم هذا لتنظيف التطبيقات بين الاختبارات أو بعدها (لاحظ أن التطبيقات التي تمت تهيئتها مع المستمعين النشطين تمنع JavaScript من الخروج):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
يُرجع وعدًا تم رفضه في حالة نجاح الإدخال ونجاحه إذا تم رفض الإدخال.
استخدم هذا لتأكيد فشل قراءة قاعدة البيانات أو كتابتها:
firebase.assertFails(app.database().ref("secret").once("value"));
assertSucceeds(pr: Promise) => Promise
إرجاع وعد ينجح إذا نجح الإدخال ورفضه إذا تم رفض الإدخال.
استخدم هذا لتأكيد نجاح قاعدة البيانات في القراءة أو الكتابة:
firebase.assertSucceeds(app.database().ref("public").once("value"));
سحابة التخزين
سحابة التخزين
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
استخدم هذا لإنشاء تطبيق مصادق عليه كمستخدم معين لاستخدامه في الاختبارات.
يُرجع تطبيق Firebase المهيأ المطابق لاسم حاوية التخزين وتجاوز متغير المصادقة المحدد في الخيارات.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
استخدم هذا لإنشاء تطبيق مصدق عليه كمسؤول لإعداد حالة الاختبارات.
يُرجع تطبيق مشرف Firebase تمت تهيئته يتوافق مع اسم حاوية التخزين المحدد في الخيارات. يتجاوز هذا التطبيق قواعد الأمان عند القراءة والكتابة في الدلو.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
استخدم هذا لتعيين قواعد حاوية التخزين الخاصة بك.
يرسل القواعد إلى حاويات التخزين المُدارة محليًا. يأخذ كائن خيارات يحدد "سعة التخزين" و "القواعد" كسلاسل.
firebase
.loadStorageRules({
storageBucket: "my-bucket",
rules: fs.readFileSync("/path/to/storage.rules", "utf8")
});
apps() => [FirebaseApp]
تُرجع جميع تطبيقات الإدارة والاختبار التي تمت تهيئتها حاليًا.
استخدم هذا لتنظيف التطبيقات بين الاختبارات أو بعدها (لاحظ أن التطبيقات التي تمت تهيئتها مع المستمعين النشطين تمنع JavaScript من الخروج):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
يُرجع وعدًا تم رفضه في حالة نجاح الإدخال ونجاحه إذا تم رفض الإدخال.
استخدم هذا لتأكيد فشل قراءة أو كتابة حاوية التخزين:
firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());
assertSucceeds(pr: Promise) => Promise
إرجاع وعد ينجح إذا نجح الإدخال ورفضه إذا تم رفض الإدخال.
استخدم هذا للتأكيد على نجاح قراءة أو كتابة حاوية التخزين:
firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());