حزمة اختبار وحدة القواعد

المهام

وظيفة وصف
تأكيد الفشل (العلاقات العامة) تأكيد الوعد المراد رفضه مع ظهور الخطأ "تم رفض الإذن". من المفيد التأكيد على طلب معين سيتم رفضه بواسطة قواعد الأمان. انظر المثال أدناه. تتعرف هذه الوظيفة على أخطاء رفض الأذونات من مجموعات SDK لقاعدة البيانات وFirestore وStorage JS.
تأكيد النجاح (العلاقات العامة) تأكيد الوعد المراد رفضه مع ظهور الخطأ "تم رفض الإذن". هذه دالة no-op تقوم بإرجاع الوعد الذي تم تمريره كما هو، ولكن يمكن استخدامها لأغراض توثيقية في كود الاختبار للتأكيد على ضرورة نجاح طلب معين (على سبيل المثال، تسمح به القواعد).
تهيئةTestEnvironment(التكوين) تهيئة بيئة اختبار لاختبار وحدة القواعد. قم باستدعاء هذه الوظيفة أولاً لإعداد الاختبار. يتطلب تشغيل المحاكيات. تحاول هذه الوظيفة اكتشاف تلك المحاكيات عبر متغيرات البيئة أو من خلال مركز Firebase Emulator إذا لم يتم تحديد المضيفين والمنافذ. يوصى بشدة بتحديد قواعد الأمان للمحاكيات المستخدمة للاختبار. انظر الحد الأدنى من المثال أدناه.
مع تعطيل مشغلات الوظيفة (fn) قم بتشغيل وظيفة الإعداد مع تعطيل مشغلات وظائف السحابة الخلفية. يمكن استخدام هذا لاستيراد البيانات إلى قاعدة بيانات Realtime أو محاكي Cloud Firestore دون تشغيل وظائف السحابة التي تمت مضاهاتها محليًا. تعمل هذه الطريقة فقط مع إصدار Firebase CLI 8.13.0 أو أعلى. يعمل هذا التحميل الزائد فقط إذا تم تحديد منفذ مضيف محور المحاكي بواسطة متغير البيئة FIREBASE_EMULATOR_HUB.
مع تعطيل مشغلات الوظيفة (المحور، الجبهة الوطنية) قم بتشغيل وظيفة الإعداد مع تعطيل مشغلات وظائف السحابة الخلفية. يمكن استخدام هذا لاستيراد البيانات إلى قاعدة بيانات Realtime أو محاكي Cloud Firestore دون تشغيل وظائف السحابة التي تمت مضاهاتها محليًا. تعمل هذه الطريقة فقط مع إصدار Firebase CLI 8.13.0 أو أعلى. يجب أن يكون محور المحاكي قيد التشغيل، والذي تم تحديد المضيف والمنفذ في هذا التحميل الزائد.

واجهات

واجهه المستخدم وصف
HostAndPort كائن يحتوي على اسم المضيف ورقم المنفذ الخاص بالمحاكي.
RulesTestContext سياق اختبار يمثل العميل. يمكن استخدامها للوصول إلى المحاكيات لاختبار وحدة القواعد.
RulesTestEnvironment كائن يستخدم للتحكم في بيئة اختبار وحدة القواعد. يمكن استخدامه لإنشاء RulesTestContext لمواقف المصادقة المختلفة.
تكوين بيئة الاختبار تكوين بيئة اختبار الوحدة، بما في ذلك المحاكيات.

اكتب الأسماء المستعارة

اكتب الاسم المستعار وصف
تكوين المحاكي التكوين لمحاكي معين.
خيارات الرمز المزيد من الخيارات لرمز المستخدم الوهمي الذي سيتم استخدامه للاختبار، بما في ذلك المطالبات المخصصة التي يحددها المطور أو التجاوزات الاختيارية لحمولات رمز Firebase Auth المميز.

تأكيدفشل ()

تأكيد الوعد المراد رفضه مع ظهور الخطأ "تم رفض الإذن".

من المفيد التأكيد على طلب معين سيتم رفضه بواسطة قواعد الأمان. انظر المثال أدناه. تتعرف هذه الوظيفة على أخطاء رفض الأذونات من مجموعات SDK لقاعدة البيانات وFirestore وStorage JS.

إمضاء:

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

حدود

معامل يكتب وصف
العلاقات العامة وعد<أي> الوعد الذي يجب تأكيده

عائدات:

وعد<أي>

الوعد الذي يتم الوفاء به إذا تم رفض العلاقات العامة مع "رفض الإذن". إذا تم رفض pr مع وجود أي خطأ آخر أو تم حله، فسيتم رفض الوعد الذي تم إرجاعه.

مثال

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

تأكيد النجاح ()

أكد الوعد بالنجاح.

هذه دالة no-op تقوم بإرجاع الوعد الذي تم تمريره كما هو، ولكن يمكن استخدامها لأغراض توثيقية في كود الاختبار للتأكيد على ضرورة نجاح طلب معين (على سبيل المثال، تسمح به القواعد).

إمضاء:

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

تهيئةTestEnvironment()

تهيئة بيئة اختبار لاختبار وحدة القواعد. قم باستدعاء هذه الوظيفة أولاً لإعداد الاختبار.

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

إمضاء:

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

حدود

معامل يكتب وصف
التكوين تكوين بيئة الاختبار التكوين لمحاكيات. معظم الحقول اختيارية إذا كان من الممكن اكتشافها

عائدات:

وعد< 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.
  },
  // ...
});

معFunctionTriggersDisabled()

قم بتشغيل وظيفة الإعداد مع تعطيل مشغلات وظائف السحابة الخلفية. يمكن استخدام هذا لاستيراد البيانات إلى قاعدة بيانات Realtime أو محاكي Cloud Firestore دون تشغيل وظائف السحابة التي تمت مضاهاتها محليًا.

تعمل هذه الطريقة فقط مع إصدار Firebase CLI 8.13.0 أو أعلى. يعمل هذا التحميل الزائد فقط إذا تم تحديد منفذ مضيف محور المحاكي بواسطة متغير البيئة FIREBASE_EMULATOR_HUB.

إمضاء:

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

حدود

معامل يكتب وصف
fn () => TRالنتيجة | الوعد<TRالنتيجة> وظيفة قد تكون متزامنة أو غير متزامنة (ترجع وعدًا)

عائدات:

الوعد<TRالنتيجة>

معFunctionTriggersDisabled()

قم بتشغيل وظيفة الإعداد مع تعطيل مشغلات وظائف السحابة الخلفية. يمكن استخدام هذا لاستيراد البيانات إلى قاعدة بيانات Realtime أو محاكي 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 () => TRالنتيجة | الوعد<TRالنتيجة> وظيفة قد تكون متزامنة أو غير متزامنة (ترجع وعدًا)

عائدات:

الوعد<TRالنتيجة>

تكوين المحاكي

التكوين لمحاكي معين.

إمضاء:

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

خيارات الرمز

المزيد من الخيارات لرمز المستخدم الوهمي الذي سيتم استخدامه للاختبار، بما في ذلك المطالبات المخصصة التي يحددها المطور أو التجاوزات الاختيارية لحمولات رمز 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;
};