ממשק TestEnvironment

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

Signature:

export interface RulesTestEnvironment 

תכונות

מאפיין (property) סוג תיאור
אמולטורים { מסד הנתונים?: HostAndPort; Firestore?: HostAndPort; אחסון?: HostAndPort; } עותק לקריאה בלבד של הגדרות האמולטור שצוינו או התגלו במהלך היצירה של סביבת הבדיקה.
projectId מחרוזת מזהה הפרויקט שצוין או התגלה במהלך היצירה של סביבת הבדיקה.

שיטות

שיטה תיאור
authenticatedContext(user_id, tokenOptions) יצירת RulesTestContext שמתנהגת כמו משתמש מאומת ב-Firebase Auth.בקשות שנוצרו באמצעות ההקשר שמוחזר יכללו אסימון Firebase Auth לדוגמה.
cleanup() בסוף קוד הבדיקה, קוראים לפונקציית הניקוי. צריך להשמיד את כל RulesTestContexts שנוצרו בסביבת הבדיקה ולנקות את המשאבים הבסיסיים, וכך לאפשר יציאה נקייה.השיטה הזו לא משנה את המצב באמולטורים בשום צורה. יש לעיין בסעיפים clearDatabase(), clearFirestore() ו-clearStorage() כדי לאפס נתונים בין בדיקות.
clearDatabase() ניקוי כל הנתונים במרחב השמות של אמולטור מסד נתונים בזמן אמת.
clearFirestore() יש לנקות ב-Firestore נתונים ששייכים ל-projectId באמולטור Firestore.
clearStorage() ניקוי הקבצים והמטא-נתונים של האחסון בכל הקטגוריות באמולטור האחסון.
unauthenticatedContext() יצירת RulesTestContext שמתנהגת כמו לקוח שלא מחובר דרך Firebase Auth.לבקשות שנוצרו באמצעות ההקשר שמוחזר לא יצורפו אסימונים של Firebase Auth.
withSecurityRulesDisabled(callback)

RulesTestEnvironment.emulators

עותק לקריאה בלבד של הגדרות האמולטור שצוינו או התגלו במהלך היצירה של סביבת הבדיקה.

Signature:

readonly emulators: {
        database?: HostAndPort;
        firestore?: HostAndPort;
        storage?: HostAndPort;
    };

RulesTestEnvironment.projectId

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

Signature:

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

יצירת RulesTestContext שמתנהגת כמו משתמש מאומת ב-Firebase Auth.

לבקשות שנוצרו באמצעות ההקשר שמוחזר יצורף אסימון Firebase Auth לדוגמה.

Signature:

authenticatedContext(user_id: string, tokenOptions?: TokenOptions): RulesTestContext;

פרמטרים

פרמטר סוג תיאור
user_id מחרוזת מזהה המשתמש של המשתמש. מציין את הערך של user_id ו-"sub" באסימון
tokenOptions TokenOptions הצהרות או שינויים מברירת המחדל של מטענים ייעודיים (payloads) של אסימוני Firebase Auth

החזרות:

RulesTestContext

דוגמה

const alice = testEnv.authenticatedContext('alice');
await assertSucceeds(getDoc(alice.firestore(), '/doc/readable/by/alice'), { ... });

RulesTestEnvironment.cleanup()

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

השיטה הזו לא משנה את המצב באמולטורים בשום צורה. מידע על איפוס נתונים בין בדיקות זמין במאמרים clearDatabase(), clearFirestore() ו-clearStorage().

Signature:

cleanup(): Promise<void>;

החזרות:

Promise<void>

RulesTestEnvironment.clearDatabase()

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

Signature:

clearDatabase(): Promise<void>;

החזרות:

Promise<void>

RulesTestEnvironment.clearFirestore()

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

Signature:

clearFirestore(): Promise<void>;

החזרות:

Promise<void>

RulesTestEnvironment.clearStorage()

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

Signature:

clearStorage(): Promise<void>;

החזרות:

Promise<void>

RulesTestEnvironment.unauthenticatedContext()

יוצרים RulesTestContext שמתנהג כמו לקוח שלא מחובר דרך Firebase Auth.

לבקשות שנוצרו באמצעות ההקשר שמוחזר לא יצורפו אסימוני Auth של Firebase.

Signature:

unauthenticatedContext(): RulesTestContext;

החזרות:

RulesTestContext

דוגמה

const unauthed = testEnv.unauthenticatedContext();
await assertFails(getDoc(unauthed.firestore(), '/private/doc'), { ... });

RulesTestEnvironment.withSecurityRulesDisabled()

Signature:

withSecurityRulesDisabled(callback: (context: RulesTestContext) => Promise<void>): Promise<void>;

פרמטרים

פרמטר סוג תיאור
קריאה חוזרת (callback) (הקשר: RulesTestContext) => Promise<void>

החזרות:

Promise<void>