יצירת בדיקות של יחידות מידה

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

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

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

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

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

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

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

אינטראקציה עם האמולטור Realtime Database

אפשר לגשת למכונה של Realtime Database ב-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>

הרצת בדיקות יחידה מקומית עם JavaScript SDK גרסה 9

Firebase מפיץ ספריית בדיקות יחידה של כללי אבטחה עם ערכת ה-SDK של JavaScript בגרסה 9 ועם ערכת ה-SDK בגרסה 8. ממשקי ה-API של הספרייה מתייחסים באופן משמעותי אחרת. מומלץ להשתמש בספריית הבדיקות של v9, שהיא פשוטה יותר נדרש פחות הגדרה כדי להתחבר לאמולטורים ובכך להימנע באופן בטוח בשימוש במשאבי ייצור. כדי לשמור על תאימות לאחור, אנחנו ממשיכים לבצע ספריית הבדיקות של V8.

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

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

ספריית v9 של 'בדיקת היחידה' תמיד מודעת לאמולטורים ואף פעם לא נוגע במשאבי ההפקה שלך.

אתם מייבאים את הספרייה באמצעות הצהרות ייבוא מודולריות ב-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.
  • הגדרת נתוני בדיקה בלי להפעיל את Rules, באמצעות שיטה נוחה שמאפשרת לעקוף אותם באופן זמני, RulesTestEnvironment.withSecurityRulesDisabled.
  • הגדרת חבילת בדיקות וכל בדיקה לפני/אחרי הוקים (hooks) עם קריאות אל לנקות את נתוני הבדיקה ואת הסביבה, כמו 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 מאומת. בקשות שנוצרו באמצעות ההקשר שהוחזר יוצגו עם הדמיה אסימון Authentication צורף. באופן אופציונלי, מעבירים אובייקט שמגדיר הצהרות מותאמות אישית או שינויים למטענים ייעודיים (payloads) של אסימונים 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, שמתנהג כמו לקוח שלא נכנס לחשבון דרך Authentication. בקשות שנוצרו באמצעות ההקשר שהוחזר לא מצורפים אסימוני Auth של Firebase.

משתמשים באובייקט ההקשר לבדיקה שמוחזר בבדיקות כדי לגשת לכל אמולטור למכונות שהוגדרו, כולל אלה שהוגדרו ב-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()

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

השיטה מקבלת פונקציית קריאה חוזרת, שמקבלת את ההקשר של עקיפת כללי האבטחה ומחזירה promise. ההקשר יושמד כשההבטחה הופך / דוחה.

RulesTestEnvironment.cleanup()

השיטה הזו משמידת את כל RulesTestContexts שנוצרו בסביבת הבדיקה שמנקה את המשאבים הבסיסיים, מה שמאפשר יציאה נקייה.

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

assertSucceeds(pr: Promise<any>)) => Promise<any>

זוהי פונקציית עזר של תרחיש בדיקה.

הפונקציה קובעת שה-Promise שסופק ועוטף פעולת אמולטור יתקבל ללא הפרות של כללי האבטחה.

await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

assertFails(pr: Promise<any>)) => Promise<any>

זוהי פונקציית עזר של תרחיש בדיקה.

הפונקציה טוענת שה-Promise שסופק עוטף את פעולת האמולטור יידחה עקב הפרה של כללי אבטחה.

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 של ה-Client SDK (מודולרי של v9 או תואם ל-v9).

Realtime Database

Realtime Database

RulesTestEnvironment.clearDatabase() => Promise<void>

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

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

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

Cloud Storage

Cloud Storage

RulesTestEnvironment.clearStorage() => Promise<void>

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

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

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

הרצת בדיקות יחידה מקומיות באמצעות v8 JavaScript SDK

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

Cloud Firestore

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

השיטה הזו מחזירה אפליקציית Firebase מאותרת לפרויקט המשתנה ID וה-auth שצוין באפשרויות. משתמשים בה ליצירת אפליקציה שאומת כמשתמש ספציפי לשימוש בבדיקות.

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] ה-method הזה מחזיר את כל אפליקציות הבדיקה והאדמין שהוגדרו כרגע. אפשר להשתמש בה כדי לנקות אפליקציות בין בדיקות או אחרין.

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

השיטה הזו מחזירה הבטחה (promise) שמתבצעת אם הקלט מסתיים בהצלחה, נדחית אם הקלט נדחה. השתמשו בו כדי לטעון אם מסד נתונים קורא או מצליחה.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

השיטה הזו מנקה את כל הנתונים שמשויכים לפרויקט מסוים במכונה מקומית של Firestore. משתמשים בשיטה הזו כדי לנקות אחרי בדיקות.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Realtime Database

Realtime Database

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

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

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

הפונקציה מחזירה הבטחה (promise) שמתבצעת אם הקלט מצליח, ודחיתה אם הקלט נדחה.

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

firebase.assertSucceeds(app.database().ref("public").once("value"));

Cloud Storage

Cloud Storage

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

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

פונקציה זו מחזירה אפליקציית Firebase מאותרתת שתואמת לשם של קטגוריית האחסון וברירת המחדל של משתנה auth שצוינו באפשרויות.

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

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

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

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

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

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

שליחת כללים לקטגוריות אחסון שמנוהלות באופן מקומי. הפונקציה מקבלת אובייקט אפשרויות שמציין את 'storageBucket' ואת 'rules' בתור מחרוזות.

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 גרסה 8

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

Cloud Firestore

Cloud Firestore

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

השיטה הזו מחזירה אפליקציית Firebase מאותרת לפרויקט המשתנה ID וה-auth שצוין באפשרויות. משתמשים בה ליצירת אפליקציה שאומת כמשתמש ספציפי לשימוש בבדיקות.

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] ה-method הזה מחזיר את כל אפליקציות הבדיקה והאדמין שהוגדרו כרגע. אפשר להשתמש בה כדי לנקות אפליקציות בין בדיקות או אחרין.

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

השיטה הזו מחזירה הבטחה (promise) שמתבצעת אם הקלט מסתיים בהצלחה, נדחית אם הקלט נדחה. השתמשו בו כדי לטעון אם מסד נתונים קורא או מצליחה.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

השיטה הזו מנקה את כל הנתונים שמשויכים לפרויקט מסוים במכונה מקומית של Firestore. משתמשים בשיטה הזו כדי לנקות אחרי בדיקות.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Realtime Database

Realtime Database

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

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

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

הפונקציה מחזירה הבטחה (promise) שמתבצעת אם הקלט מצליח, ודחיתה אם הקלט נדחה.

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

firebase.assertSucceeds(app.database().ref("public").once("value"));

Cloud Storage

Cloud Storage

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

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

פונקציה זו מחזירה אפליקציית Firebase מאותרתת שתואמת לשם של קטגוריית האחסון וברירת המחדל של משתנה auth שצוינו באפשרויות.

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

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

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

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

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

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

שליחת כללים לקטגוריות אחסון שמנוהלות באופן מקומי. הפונקציה מקבלת אובייקט אפשרויות שמציין את 'storageBucket' ואת 'rules' בתור מחרוזות.

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