رابط RulesTestEnvironment

یک شی مورد استفاده برای کنترل محیط تست واحد قوانین. می تواند برای ایجاد RulesTestContext برای موقعیت های مختلف احراز هویت استفاده شود.

امضا:

export interface RulesTestEnvironment 

خواص

ویژگی تایپ کنید شرح
شبیه سازها { پایگاه داده؟: HostAndPort ; firestore؟: HostAndPort ; ذخیره سازی؟: HostAndPort ; } یک کپی فقط خواندنی از پیکربندی شبیه ساز که در ایجاد محیط آزمایشی مشخص یا کشف شده است.
شناسه پروژه رشته شناسه پروژه مشخص یا کشف شده در ایجاد محیط آزمایشی.

مواد و روش ها

روش شرح
authenticatedContext(user_id، tokenOptions) یک RulesTestContext ایجاد کنید که مانند یک کاربر تأیید شده Firebase Auth رفتار کند. درخواست‌هایی که از طریق زمینه بازگشتی ایجاد می‌شوند دارای یک نشانه Firebase Auth ساختگی خواهند بود.
پاک کردن() در انتهای کد آزمایشی خود، تابع پاکسازی را فراخوانی کنید. تمام RulesTestContext های ایجاد شده در محیط تست را نابود کنید و منابع زیربنایی را پاکسازی کنید و اجازه خروج تمیز را بدهید. این روش به هیچ وجه وضعیت را در شبیه سازها تغییر نمی دهد. برای بازنشانی داده ها بین تست ها، به clearDatabase() ، clearFirestore() و clearStorage() مراجعه کنید.
clearDatabase() تمام داده ها را در فضای نام شبیه ساز پایگاه داده بیدرنگ پاک کنید.
clearFirestore() پاک کردن داده ها در Firestore که متعلق به projectId در شبیه ساز Firestore است.
clearStorage() فایل‌های Storage و ابرداده‌ها را در همه سطل‌های شبیه‌ساز Storage پاک کنید.
unauthenticatedContext() یک RulesTestContext ایجاد کنید که مانند کلاینت هایی رفتار می کند که از طریق Firebase Auth وارد نشده اند. درخواست‌هایی که از طریق زمینه بازگشتی ایجاد می‌شوند، نشانه‌های Firebase Auth را ضمیمه نخواهند کرد.
withSecurityRulesDisabled (بازگشت به تماس)

RulesTestEnvironment.emulators

یک کپی فقط خواندنی از پیکربندی شبیه ساز که در ایجاد محیط آزمایشی مشخص یا کشف شده است.

امضا:

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

RulesTestEnvironment.projectId

شناسه پروژه مشخص یا کشف شده در ایجاد محیط آزمایشی.

امضا:

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

یک RulesTestContext ایجاد کنید که مانند یک کاربر تأیید شده Firebase Auth رفتار کند.

درخواست‌هایی که از طریق زمینه بازگشتی ایجاد می‌شوند دارای یک نشانه Firebase Auth ساختگی خواهند بود.

امضا:

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

مولفه های

پارامتر تایپ کنید شرح
شناسه کاربر رشته شناسه کاربری کاربر مقدار "user_id" و "sub" را در توکن مشخص می کند
tokenOptions TokenOptions ادعاهای سفارشی یا لغو برای بارهای توکن Firebase Auth

برمی گرداند:

RulesTestContext

مثال

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

RulesTestEnvironment.cleanup()

در انتهای کد آزمایشی خود، تابع پاکسازی را فراخوانی کنید. تمام RulesTestContext های ایجاد شده در محیط تست را نابود کنید و منابع زیربنایی را پاکسازی کنید و اجازه خروج تمیز را بدهید.

این روش به هیچ وجه وضعیت را در شبیه سازها تغییر نمی دهد. برای بازنشانی داده ها بین تست ها، به clearDatabase() مراجعه کنید. ، clearFirestore() و clearStorage() .

امضا:

cleanup(): Promise<void>;

برمی گرداند:

قول<باطل>

RulesTestEnvironment.clearDatabase()

تمام داده ها را در فضای نام شبیه ساز پایگاه داده بیدرنگ پاک کنید.

امضا:

clearDatabase(): Promise<void>;

برمی گرداند:

قول<باطل>

RulesTestEnvironment.clearFirestore()

داده ها را در پایگاه داده پیش فرض Firestore برای projectId در شبیه ساز Firestore پاک کنید.

امضا:

clearFirestore(): Promise<void>;

برمی گرداند:

قول<باطل>

RulesTestEnvironment.clearStorage()

فایل‌های Storage و ابرداده‌ها را در سطل فعال در شبیه‌ساز Storage پاک کنید.

امضا:

clearStorage(): Promise<void>;

برمی گرداند:

قول<باطل>

RulesTestEnvironment.unauthenticatedContext()

یک RulesTestContext ایجاد کنید که مانند کلاینت هایی رفتار می کند که از طریق Firebase Auth وارد نشده اند.

درخواست‌هایی که از طریق زمینه بازگشتی ایجاد می‌شوند، نشانه‌های Firebase Auth را ضمیمه نخواهند کرد.

امضا:

unauthenticatedContext(): RulesTestContext;

برمی گرداند:

RulesTestContext

مثال

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

RulesTestEnvironment.withSecurityRulesDisabled()

امضا:

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

مولفه های

پارامتر تایپ کنید شرح
پاسخ به تماس (زمینه: RulesTestContext ) => قول<باطل>

برمی گرداند:

قول<باطل>