Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

المحاكي جناح Firebase المحلية تجعل من السهل للتحقق من صحة تماما التطبيق الخاص بك ميزات والسلوك . إنها أيضًا أداة رائعة للتحقق من تكوينات قواعد أمان Firebase. استخدم محاكيات Firebase لتشغيل وأتمتة اختبارات الوحدة في بيئة محلية. يجب أن تساعدك الطرق الموضحة في هذا المستند أثناء إنشاء اختبارات الوحدة وتشغيلها تلقائيًا لتطبيقك الذي يتحقق من صحة القواعد الخاصة بك.

إذا كنت لم تقم بذلك بالفعل، إعداد Firebase المحاكيات .

قبل تشغيل المحاكي

قبل البدء في استخدام المحاكي ، ضع في اعتبارك ما يلي:

  • سوف المحاكي تحميل في البداية القواعد المحددة في firestore.rules أو الحقل 'storage.rules' في ل firebase.json الملف. إذا لم يكن الملف موجودا، وكنت لا تستخدم loadFirestoreRules أو الطريقة "loadStorageRules" كما هو موضح أدناه، يعامل المحاكي جميع المشاريع وجود قواعد مفتوحة.
  • بينما معظم Firebase تطوير البرامج العمل مع محاكاة مباشرة، إلا أن @firebase/rules-unit-testing الدعم مكتبة ساخرا auth في قواعد الأمن، جعل وحدة اختبارات أسهل بكثير. بالإضافة إلى ذلك ، تدعم المكتبة بعض الميزات الخاصة بالمحاكي مثل مسح جميع البيانات ، كما هو موضح أدناه.
  • ستقبل المحاكيات أيضًا رموز Firebase Auth المميزة للإنتاج المقدمة من خلال Client SDKs وتقييم القواعد وفقًا لذلك ، مما يسمح بربط تطبيقك مباشرةً بالمحاكيات في التكامل والاختبارات اليدوية.

الاختلافات بين محاكيات قاعدة البيانات والإنتاج

  • لا يتعين عليك إنشاء طبعة قاعدة بيانات بشكل صريح. سيقوم المحاكي تلقائيًا بإنشاء أي مثيل قاعدة بيانات يتم الوصول إليه.
  • تبدأ كل قاعدة بيانات جديدة بقواعد مغلقة ، لذلك لن يتمكن المستخدمون غير الإداريين من القراءة أو الكتابة.
  • تنطبق لكل قاعدة بيانات يحتذى به في خطة سبارك الحدود والحصص (وأبرزها، وهذا حدود كل حالة إلى 100 الاتصالات المتزامنة).
  • لن يقبل أي قاعدة بيانات السلسلة "owner" كما المسير المصادقة رمزية.
  • لا تحتوي برامج المحاكاة حاليًا على تفاعلات عملية مع منتجات Firebase الأخرى. والجدير بالذكر أن تدفق مصادقة Firebase العادي لا يعمل. بدلا من ذلك، يمكنك استخدام initializeTestApp() الأسلوب في rules-unit-testing المكتبة، والتي تأخذ auth المجال. يتصرف كائن Firebase الذي تم إنشاؤه باستخدام هذه الطريقة كما لو أنه قد تمت مصادقته بنجاح ككيان تقدمه. إذا كنت تمر في null ، وسوف تتصرف كمستخدم مصادق ( auth != null ستفشل قواعد، على سبيل المثال).

التفاعل مع محاكي Realtime Database

A إنتاج Firebase الحقيقي المثال قاعدة بيانات يمكن الوصول إليها في مجال فرعي من firebaseio.com ، ويمكنك الوصول إلى API REST مثل هذا:

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 ، وهي أكثر انسيابية وتتطلب إعدادًا أقل للاتصال بالمحاكيات وبالتالي تجنب الاستخدام العرضي لموارد الإنتاج بأمان. من أجل التوافق الى الوراء، ونحن نواصل جعل مكتبة اختبار V8 المتاحة .

استخدام @firebase/rules-unit-testing وحدة لتتفاعل مع المحاكي أن يعمل محليا. إذا كنت تحصل على مهلة أو ECONNREFUSED الأخطاء، انقر نقرا مزدوجا الاختيار المحاكي يعمل فعلا.

ونحن نوصي بشدة باستخدام النسخة الأخيرة من نود.جي إس بحيث يمكنك استخدام 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 .

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

انظر أيضا طرق الاختبار-منافس معين في SDK V9 .

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

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

انظر أيضا طرق الاختبار المشترك والوظائف ذات المنفعة في SDK V9 .

سحابة 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>

هذه الطريقة يزيل البيانات في قاعدة البيانات في الوقت الحقيقي الذي ينتمي إلى projectId تكوين المضاهاة قاعدة البيانات في الوقت الحقيقي.

RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;

احصل على مثيل Realtime Database لسياق الاختبار هذا. يمكن استخدام مثيل Firebase JS Client SDK الذي تم إرجاعه مع واجهات برمجة تطبيقات SDK للعميل (الإصدار 9 المعياري أو الإصدار 9 المتوافق). تقبل الطريقة عنوان URL لمثيل Realtime Database. إذا تم تحديده ، يتم عرض مثيل لإصدار تمت محاكاته لمساحة الاسم مع معلمات مستخرجة من URL.

سحابة التخزين

سحابة التخزين

RulesTestEnvironment.clearStorage() => Promise<void>

هذه الطريقة يزيل الكائنات والفوقية في دلاء تخزين تابعة ل projectId تكوين المضاهاة سحابة التخزين.

RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;

تقوم هذه الطريقة بإرجاع نسخة تخزين تم تكوينها للاتصال بالمحاكي. طريقة يقبل gs:// رابط إلى 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());