חבילת כללים-יחידת בדיקות

פונקציות

פוּנקצִיָה תיאור
assertFails(pr) טען את ההבטחה להידחות בשגיאת "הרשאה נדחתה". שימושי לטעון שבקשה מסוימת תידחה על ידי כללי האבטחה. ראה דוגמה למטה. פונקציה זו מזהה שגיאות שנדחו בהרשאה מ-Database, Firestore ו-SDK SDK של Storage.
assertSucceeds(pr) טען את ההבטחה להידחות בשגיאת "הרשאה נדחתה". זוהי פונקציה ללא הפעלה המחזירה את ההבטחה שהועברה כפי שהיא, אך ניתן להשתמש בה למטרות תיעודיות בקוד הבדיקה כדי להדגיש כי בקשה מסוימת צריכה להצליח (למשל, מותר לפי כללים).
initializeTestEnvironment(config) מאתחל סביבת בדיקה לבדיקת יחידת כללים. קרא תחילה לפונקציה זו להגדרת בדיקה. דורש אמולטורים לפעול. פונקציה זו מנסה לגלות את אותם אמולטורים באמצעות משתני סביבה או דרך רכזת Firebase Emulator אם המארחים והיציאות אינם מצוינים. מומלץ מאוד לציין כללי אבטחה עבור אמולטורים המשמשים לבדיקה. ראה דוגמה מינימלית למטה.
withFunctionTriggersDisabled(fn) הפעל פונקציית הגדרה עם מפעילי ענן ברקע מושבתים. זה יכול לשמש כדי לייבא נתונים לתוך Realtime Database או אמולטור Cloud Firestore מבלי להפעיל פונקציות ענן בחיקוי מקומי. שיטה זו פועלת רק עם Firebase CLI גרסה 8.13.0 ומעלה. עומס יתר זה פועל רק אם מארח הרכזת Emulator:port מצוין על ידי משתנה הסביבה FIREBASE_EMULATOR_HUB.
withFunctionTriggersDisabled(hub, fn) הפעל פונקציית הגדרה עם מפעילי ענן ברקע מושבתים. זה יכול לשמש כדי לייבא נתונים לתוך Realtime Database או אמולטור Cloud Firestore מבלי להפעיל פונקציות ענן בחיקוי מקומי. שיטה זו פועלת רק עם Firebase CLI גרסה 8.13.0 ומעלה. רכזת האמולטור חייבת לפעול, איזה מארח ויציאה מוגדרים בעומס יתר זה.

ממשקים

מִמְשָׁק תיאור
HostAndPort אובייקט המכיל את שם המארח ומספר היציאה של אמולטור.
RulesTestContext הקשר בדיקה המייצג לקוח. ניתן להשתמש כדי לגשת לאמולטורים לבדיקת יחידת כללים.
RulesTestEnvironment אובייקט המשמש לשליטה בסביבת הבדיקה של יחידת הכללים. יכול לשמש ליצירת RulesTestContext עבור מצבי אימות שונים.
TestEnvironmentConfig תצורה של סביבת בדיקת היחידה, כולל אמולטורים.

הקלד כינויים

הקלד כינוי תיאור
EmulatorConfig תצורה עבור אמולטור נתון.
TokenOptions אפשרויות נוספות לשימוש באסימון המשתמש המדומה לבדיקה, כולל תביעות מותאמות אישית שצוינו על ידי מפתח או עקיפות אופציונליות עבור עומסי אסימון Firebase Auth.

assertFails()

טען את ההבטחה להידחות בשגיאת "הרשאה נדחתה".

שימושי לטעון שבקשה מסוימת תידחה על ידי כללי האבטחה. ראה דוגמה למטה. פונקציה זו מזהה שגיאות שנדחו בהרשאה מ-Database, Firestore ו-SDK SDK של Storage.

חֲתִימָה:

export declare function assertFails(pr: Promise<any>): Promise<any>;

פרמטרים

פָּרָמֶטֶר סוּג תיאור
יחסי ציבור מבטיח<כל> ההבטחה שתיקבע

החזרות:

מבטיח<כל>

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

דוגמא

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

assertSucceeds()

טען את ההבטחה להצליח.

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

חֲתִימָה:

export declare function assertSucceeds<T>(pr: Promise<T>): Promise<T>;

פרמטרים

פָּרָמֶטֶר סוּג תיאור
יחסי ציבור הבטחה<T>

החזרות:

הבטחה<T>

דוגמא

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

initializeTestEnvironment()

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

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

חֲתִימָה:

export declare function initializeTestEnvironment(config: TestEnvironmentConfig): Promise<RulesTestEnvironment>;

פרמטרים

פָּרָמֶטֶר סוּג תיאור
תצורה TestEnvironmentConfig התצורה של אמולטורים. רוב השדות הם אופציונליים אם ניתן לגלות אותם

החזרות:

הבטחה< RulesTestEnvironment >

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

דוגמא

const testEnv = await initializeTestEnvironment({
  firestore: {
    rules: fs.readFileSync("/path/to/firestore.rules", "utf8"), // Load rules from file
    // host and port can be omitted if they can be discovered from the hub.
  },
  // ...
});

withFunctionTriggersDisabled()

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

שיטה זו פועלת רק עם Firebase CLI גרסה 8.13.0 ומעלה. עומס יתר זה פועל רק אם מארח הרכזת Emulator:port מצוין על ידי משתנה הסביבה FIREBASE_EMULATOR_HUB.

חֲתִימָה:

export declare function withFunctionTriggersDisabled<TResult>(fn: () => TResult | Promise<TResult>): Promise<TResult>;

פרמטרים

פָּרָמֶטֶר סוּג תיאור
fn () => TResult | הבטחה<TResult> פונקציה שעשויה להיות מסונכרנת או אסינכרונית (מחזירה הבטחה)

החזרות:

הבטחה<TResult>

withFunctionTriggersDisabled()

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

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

חֲתִימָה:

export declare function withFunctionTriggersDisabled<TResult>(hub: {
    host: string;
    port: number;
}, fn: () => TResult | Promise<TResult>): Promise<TResult>;

פרמטרים

פָּרָמֶטֶר סוּג תיאור
רכזת { מארח: מחרוזת; יציאה: מספר; } המארח והיציאה של Emulator Hub (לדוגמה: {host: 'localhost', port: 4400} )
fn () => TResult | הבטחה<TResult> פונקציה שעשויה להיות מסונכרנת או אסינכרונית (מחזירה הבטחה)

החזרות:

הבטחה<TResult>

EmulatorConfig

תצורה עבור אמולטור נתון.

חֲתִימָה:

export declare type EmulatorConfig = {
    rules?: string;
} & (HostAndPort | {});

TokenOptions

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

חֲתִימָה:

export declare type TokenOptions = {
    iat?: number;
    exp?: number;
    auth_time?: number;
    provider_id?: 'anonymous';
    email?: string;
    email_verified?: boolean;
    phone_number?: string;
    name?: string;
    picture?: string;
    firebase?: {
        sign_in_provider: FirebaseSignInProvider;
        identities?: {
            [provider in FirebaseSignInProvider]?: string[];
        };
    };
    aud?: string;
    iss?: string;
    [claim: string]: unknown;
    uid?: never;
    sub?: never;
    user_id?: never;
};