بناء اختبارات الوحدة

تعمل مجموعة 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.

استخدم @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 .

الطرق الشائعة ووظائف المنفعة

راجع أيضًا طرق الاختبار الخاصة بالمحاكي في الإصدار 9 SDK .

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'), { ... });

طرق خاصة بالمحاكي

راجع أيضًا طرق الاختبار الشائعة ووظائف الأداة في الإصدار 9 SDK .

سحابة 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 المعياري أو الإصدار 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());