בניית בדיקות יחידה

Firebase Local Emulator Suite מקלה על אימות מלא של התכונות וההתנהגות של האפליקציה שלך. זה גם כלי נהדר לאימות תצורות כללי האבטחה של Firebase שלך. השתמש באמולטורים של Firebase כדי להפעיל ולהפוך בדיקות יחידות לאוטומטיות בסביבה מקומית. השיטות המתוארות במסמך זה אמורות לעזור לך כשאתה בונה ואוטומציה של בדיקות יחידות עבור האפליקציה שלך שמאמתות את הכללים שלך.

אם עדיין לא עשית זאת, הגדר את אמולטורי Firebase .

לפני שתפעיל את האמולטור

לפני שתתחיל להשתמש באמולטור, זכור את הדברים הבאים:

  • האמולטור יטען בתחילה את הכללים שצוינו בשדה firestore.rules או 'storage.rules' של קובץ firebase.json שלך. אם הקובץ לא קיים ואינך משתמש בשיטת loadFirestoreRules או 'loadStorageRules' כפי שמתואר להלן, האמולטור מתייחס לכל הפרויקטים כבעלי כללים פתוחים.
  • בעוד שרוב ערכות ה-SDK של Firebase פועלות ישירות עם האמולטורים, רק ספריית @firebase/rules-unit-testing תומכת auth לעגנית בכללי אבטחה, מה שהופך את בדיקות היחידה להרבה יותר קלות. בנוסף, הספרייה תומכת בכמה תכונות ספציפיות לאמולטור כמו ניקוי כל הנתונים, כמפורט להלן.
  • האמולטורים יקבלו גם אסימוני Firebase Auth המסופקים דרך Client SDK ויעריכו חוקים בהתאם, מה שמאפשר לחבר את האפליקציה שלך ישירות לאמולטורים באינטגרציה ובבדיקות ידניות.

הבדלים בין אמולטורים של מסד הנתונים לייצור

  • אינך חייב ליצור במפורש מופע מסד נתונים. האמולטור יצור אוטומטית כל מופע מסד נתונים שאליו ניגשים.
  • כל מסד נתונים חדש מתחיל עם כללים סגורים, כך שמשתמשים שאינם מנהלי מערכת לא יוכלו לקרוא או לכתוב.
  • כל מסד נתונים מחקה מיישם את המגבלות והמכסות של תוכנית Spark (בעיקר, זה מגביל כל מופע ל-100 חיבורים במקביל).
  • כל מסד נתונים יקבל את המחרוזת "owner" כאסימון אישור מנהל.
  • לאמולטורים אין כרגע אינטראקציות עובדות עם מוצרי Firebase אחרים. יש לציין שזרימת האימות הרגילה של Firebase לא עובדת. במקום זאת, אתה יכול להשתמש בשיטת initializeTestApp() בספריית rules-unit-testing , אשר לוקחת שדה auth . אובייקט Firebase שנוצר בשיטה זו מתנהג כאילו הוא אומת בהצלחה כמו כל ישות שאתה מספק. אם תעביר ב- null , הוא יתנהג כמשתמש לא מאומת (חוקי auth != null ייכשלו, למשל).

אינטראקציה עם אמולטור מסד הנתונים בזמן אמת

מופע Firebase Realtime Database ייצור נגיש בתת-דומיין של 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. ממשקי ה-API של הספרייה שונים באופן משמעותי. אנו ממליצים על ספריית הבדיקות v9, שהיא יותר יעילה ודורשת פחות הגדרות כדי להתחבר לאמולטורים ובכך להימנע בבטחה משימוש מקרי במשאבי ייצור. עבור תאימות לאחור, אנו ממשיכים להפוך את ספריית הבדיקות v8 לזמינה .

השתמש במודול @firebase/rules-unit-testing כדי ליצור אינטראקציה עם האמולטור שפועל באופן מקומי. אם אתה מקבל פסק זמן או שגיאות ECONNREFUSED , בדוק שוב שהאמולטור אכן פועל.

אנו ממליצים בחום להשתמש בגרסה עדכנית של Node.js כדי שתוכל להשתמש בסימון async/await . כמעט כל ההתנהגות שאולי תרצה לבדוק כוללת פונקציות אסינכרוניות, ומודול הבדיקה נועד לעבוד עם קוד מבוסס הבטחה.

ספריית V9 Rules Unit Testing מודעת תמיד לאמולטורים ולעולם לא נוגעת במשאבי הייצור שלך.

אתה מייבא את הספרייה באמצעות הצהרות ייבוא ​​מודולריות של v9. לדוגמה:

import {
  assertFails,
  assertSucceeds,
  initializeTestEnvironment
} 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 .

שיטות נפוצות ופונקציות שירות

ראה גם שיטות בדיקה ספציפיות לאמולטור באמצעות ה-API המודולרי .

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 , שמתנהג כמו משתמש Authentication מאומת. לבקשות שנוצרו באמצעות ההקשר המוחזר יצורף אסימון אימות מדומה. לחלופין, העבר אובייקט המגדיר תביעות מותאמות אישית או עקיפות עבור מטענים של אסימון אימות.

השתמש באובייקט ההקשר של הבדיקה שהוחזר בבדיקות שלך כדי לגשת לכל מופעי האמולטור שהוגדרו, כולל אלה שהוגדרו עם 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'), { ... });

שיטות ספציפיות לאמולטור

ראה גם שיטות בדיקה נפוצות ופונקציות שירות באמצעות ה-API המודולרי .

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

שיטה זו מנקה נתונים במסד הנתונים של Firestore השייכים ל- projectId שהוגדר עבור אמולטור Firestore.

RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;

שיטה זו מקבלת מופע Firestore עבור הקשר בדיקה זה. ניתן להשתמש במופע Firebase JS Client SDK המוחזר עם ממשקי API של הלקוח SDK (v9 מודולרי או v9 compat).

מסד נתונים בזמן אמת

מסד נתונים בזמן אמת

RulesTestEnvironment.clearDatabase() => Promise<void>

שיטה זו מנקה נתונים ב- Realtime Database השייכים ל- projectId שהוגדר עבור אמולטור Realtime Database.

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

קבל מופע של מסד נתונים בזמן אמת עבור הקשר בדיקה זה. ניתן להשתמש במופע Firebase JS Client SDK המוחזר עם ממשקי ה-API של ה-SDK של הלקוח (מודולרי או ברווח שמות, גרסה 9 ומעלה). השיטה מקבלת כתובת URL של מופע Realtime Database. אם צוין, מחזיר מופע עבור גרסה מדומה של מרחב השמות עם פרמטרים שחולצו מ-URL.

אחסון בענן

אחסון בענן

RulesTestEnvironment.clearStorage() => Promise<void>

שיטה זו מנקה אובייקטים ומטא נתונים בדלי אחסון השייכים ל- projectId שהוגדר עבור אמולטור Cloud Storage.

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

שיטה זו מחזירה מופע Storage שהוגדר להתחבר לאמולטור. השיטה מקבלת כתובת URL gs:// ל-Firebase Storage Bucket לבדיקה. אם צוין, מחזיר מופע Storage עבור גרסה מדומה של שם הדלי.

הפעל בדיקות יחידה מקומית עם v8 JavaScript SDK

בחר מוצר כדי לראות את השיטות המשמשות את Firebase Test SDK להתממשק עם האמולטור.

Cloud 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

שיטה זו מחזירה אפליקציית Admin 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

השתמש בזה כדי ליצור אפליקציה מאומתת כמנהלת כדי להגדיר מצב לבדיקות.

מחזירה אפליקציית admin firebase מאותחלת התואמת לשם מסד הנתונים שצוין באפשרויות. אפליקציה זו עוקפת כללי אבטחה בעת קריאה וכתיבה למסד הנתונים.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

השתמש בזה כדי להגדיר את הכללים של מסד הנתונים שלך.

שולח כללים למסד נתונים הפועל באופן מקומי. לוקח אובייקט אפשרויות שמציין את "databaseName" ואת ה"כללים" שלך כמחרוזות.

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

השתמש בזה כדי ליצור אפליקציה מאומתת כמנהלת כדי להגדיר מצב לבדיקות.

מחזירה אפליקציית admin firebase מאותחלת התואמת לשם דלי האחסון שצוין באפשרויות. אפליקציה זו עוקפת את כללי האבטחה בעת קריאה וכתיבה לדלי.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

השתמש בזה כדי להגדיר את הכללים של דלי האחסון שלך.

שולח כללים לדלי אחסון בניהול מקומי. לוקח אובייקט אפשרויות שמציין את ה"storageBucket" ואת ה"כללים" שלך כמחרוזות.

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());

API של ספריית RUT עבור JS SDK v8

בחר מוצר כדי לראות את השיטות המשמשות את Firebase Test SDK להתממשק עם האמולטור.

Cloud Firestore

Cloud 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

שיטה זו מחזירה אפליקציית Admin 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

השתמש בזה כדי ליצור אפליקציה מאומתת כמנהלת כדי להגדיר מצב לבדיקות.

מחזירה אפליקציית admin firebase מאותחלת התואמת לשם מסד הנתונים שצוין באפשרויות. אפליקציה זו עוקפת כללי אבטחה בעת קריאה וכתיבה למסד הנתונים.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

השתמש בזה כדי להגדיר את הכללים של מסד הנתונים שלך.

שולח כללים למסד נתונים הפועל באופן מקומי. לוקח אובייקט אפשרויות שמציין את "databaseName" ואת ה"כללים" שלך כמחרוזות.

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

השתמש בזה כדי ליצור אפליקציה מאומתת כמנהלת כדי להגדיר מצב לבדיקות.

מחזירה אפליקציית admin firebase מאותחלת התואמת לשם דלי האחסון שצוין באפשרויות. אפליקציה זו עוקפת את כללי האבטחה בעת קריאה וכתיבה לדלי.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

השתמש בזה כדי להגדיר את הכללים של דלי האחסון שלך.

שולח כללים לדלי אחסון בניהול מקומי. לוקח אובייקט אפשרויות שמציין את ה"storageBucket" ואת ה"כללים" שלך כמחרוזות.

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());