Firebase Local Emulator Suite اعتبارسنجی کامل ویژگیها و رفتار برنامه شما را آسانتر میکند. همچنین یک ابزار عالی برای تأیید پیکربندی Firebase Security Rules شما است. از شبیه سازهای Firebase برای اجرا و خودکارسازی تست های واحد در یک محیط محلی استفاده کنید. روشهای ذکر شده در این سند باید به شما در ساختن و خودکارسازی آزمایشهای واحد برای برنامهتان کمک کند که Rules شما را تأیید میکند.
اگر قبلاً این کار را نکردهاید، شبیهسازهای Firebase را راهاندازی کنید .
قبل از اجرای شبیه ساز
قبل از شروع استفاده از شبیه ساز، موارد زیر را در نظر داشته باشید:
- شبیه ساز ابتدا قوانین مشخص شده در فیلد
firestore.rules
یا "storage.rules" فایلfirebase.json
شما را بارگیری می کند. اگر فایل وجود نداشته باشد و از روشloadFirestoreRules
یا 'loadStorageRules' همانطور که در زیر توضیح داده شده است استفاده نکنید، شبیه ساز همه پروژه ها را دارای قوانین باز تلقی می کند. - در حالی که اکثر SDKهای Firebase مستقیماً با شبیهسازها کار میکنند، فقط کتابخانه
@firebase/rules-unit-testing
auth
تمسخر آمیز در قوانین امنیتی پشتیبانی میکند و آزمایشهای واحد را بسیار آسانتر میکند. علاوه بر این، کتابخانه از چند ویژگی خاص شبیه ساز مانند پاک کردن همه داده ها، همانطور که در زیر فهرست شده است، پشتیبانی می کند. - شبیه سازها همچنین توکن های Firebase Auth تولیدی ارائه شده از طریق Client SDK را می پذیرند و قوانین را بر اساس آن ارزیابی می کنند، که اجازه می دهد برنامه شما را مستقیماً به شبیه سازها در یکپارچه سازی و آزمایش های دستی متصل کنید.
تفاوت بین شبیه ساز پایگاه داده و تولید
- شما مجبور نیستید به طور صریح یک نمونه پایگاه داده ایجاد کنید. شبیه ساز به طور خودکار هر نمونه پایگاه داده ای را که به آن دسترسی داشته باشید ایجاد می کند.
- هر پایگاه داده جدید با قوانین بسته شروع می شود، بنابراین کاربران غیر مدیر قادر به خواندن یا نوشتن نخواهند بود.
- هر پایگاه داده شبیه سازی شده محدودیت ها و سهمیه های طرح Spark را اعمال می کند (به ویژه این که هر نمونه را به 100 اتصال همزمان محدود می کند).
- هر پایگاه داده ای رشته
"owner"
را به عنوان یک نشانه اعتبار مدیریت می پذیرد. - شبیه سازها در حال حاضر تعامل کاری با سایر محصولات Firebase ندارند. قابل ذکر است، جریان عادی Firebase Authentication کار نمی کند. در عوض، میتوانید از متد
initializeTestApp()
در کتابخانهrules-unit-testing
استفاده کنید که یک فیلدauth
میگیرد. شی Firebase ایجاد شده با استفاده از این روش به گونه ای رفتار می کند که گویی با موفقیت به عنوان هر موجودی که ارائه می کنید احراز هویت شده است. اگرnull
را پاس کنید، مانند یک کاربر احراز هویت نشده رفتار می کند (مثلاًauth != null
با شکست مواجه می شوند).
تعامل با شبیه ساز Realtime Database
نمونه تولیدی Firebase Realtime Database در زیر دامنه firebaseio.com
قابل دسترسی است، و میتوانید به api REST مانند این دسترسی داشته باشید:
https://<database_name>.firebaseio.com/path/to/my/data.json
شبیه ساز به صورت محلی اجرا می شود و در localhost:9000
موجود است. برای تعامل با یک نمونه پایگاه داده خاص، باید از پارامتر query ns
برای تعیین نام پایگاه داده استفاده کنید.
http://localhost:9000/path/to/my/data.json?ns=<database_name>
تست های واحد محلی را با نسخه 9 JavaScript SDK اجرا کنید
Firebase یک کتابخانه تست واحد قوانین امنیتی را با نسخه 9 JavaScript SDK و نسخه 8 SDK خود توزیع می کند. APIهای کتابخانه به طور قابل توجهی متفاوت هستند. ما کتابخانه آزمایشی v9 را توصیه میکنیم که سادهتر است و برای اتصال به شبیهسازها به تنظیمات کمتری نیاز دارد و بنابراین از استفاده تصادفی از منابع تولید جلوگیری میکند. برای سازگاری به عقب، ما همچنان کتابخانه آزمایش v8 را در دسترس قرار می دهیم.
از ماژول @firebase/rules-unit-testing
برای تعامل با شبیه ساز که به صورت محلی اجرا می شود استفاده کنید. اگر با وقفه زمانی یا خطاهای ECONNREFUSED
مواجه شدید، دوباره بررسی کنید که شبیه ساز واقعاً در حال اجرا است.
ما قویاً توصیه می کنیم از نسخه اخیر Node.js استفاده کنید تا بتوانید از نماد async/await
استفاده کنید. تقریباً تمام رفتارهایی که ممکن است بخواهید آزمایش کنید شامل توابع ناهمزمان است و ماژول تست برای کار با کد مبتنی بر Promise طراحی شده است.
کتابخانه v9 Rules Unit Testing همیشه از شبیه سازها آگاه است و هرگز منابع تولید شما را لمس نمی کند.
شما کتابخانه را با استفاده از دستورات واردات مدولار 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
. - راهاندازی مجموعه آزمایشی و قلابهای هر آزمون قبل و بعد از آن با فراخوانی برای پاکسازی دادههای آزمایش و محیط، مانند
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 ساختگی پیوست خواهند داشت. به صورت اختیاری، یک شی را ارسال کنید که ادعاها یا لغو سفارشی را برای بارهای توکن 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 وارد نشده اند. درخواستهایی که از طریق زمینه بازگشتی ایجاد میشوند، نشانههای Firebase Auth را ضمیمه نخواهند کرد.
برای دسترسی به نمونههای شبیهساز پیکربندیشده، از جمله مواردی که با 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()
یک تابع راه اندازی آزمایشی را با زمینه ای اجرا کنید که به گونه ای رفتار می کند که گویی قوانین امنیتی غیرفعال شده اند.
این متد یک تابع callback می گیرد که زمینه Security-Rules-bypassing را می گیرد و یک وعده را برمی گرداند. پس از رفع / رد قول، زمینه از بین می رود.
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های SDK کلاینت (v9 مدولار یا v9 compat) استفاده کرد.
Realtime Database
Realtime Database
RulesTestEnvironment.clearDatabase() => Promise<void>
این روش دادههای Realtime Database را که به projectId
پیکربندی شده برای شبیهساز Realtime Database تعلق دارد، پاک میکند.
RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;
یک نمونه Realtime Database برای این زمینه آزمایشی دریافت کنید. نمونه Firebase JS Client SDK برگشتی را می توان با APIهای SDK کلاینت (مژولار یا فضای نام، نسخه 9 یا بالاتر) استفاده کرد. این روش یک URL از نمونه پایگاه داده Realtime را می پذیرد. اگر مشخص شده باشد، یک نمونه برای یک نسخه شبیه سازی شده از فضای نام با پارامترهای استخراج شده از URL برمی گرداند.
Cloud Storage
Cloud Storage
RulesTestEnvironment.clearStorage() => Promise<void>
این روش اشیاء و ابرداده ها را در سطل های ذخیره سازی متعلق به projectId
پیکربندی شده برای شبیه ساز Cloud Storage پاک می کند.
RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;
این روش یک نمونه Storage را که برای اتصال به شبیه ساز پیکربندی شده است برمی گرداند. این روش یک gs://
url را در سطل ذخیره سازی 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]
این روش تمام برنامههای آزمایشی و مدیریت اولیه را برمیگرداند. از این برای پاکسازی برنامه ها بین یا بعد از آزمایش استفاده کنید.
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
این روش قولی را برمیگرداند که در صورت موفقیت ورودی موفق است و در صورت رد شدن ورودی رد میشود. از این برای اثبات موفقیت در خواندن یا نوشتن پایگاه داده استفاده کنید.
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 اولیه مطابق با نام پایگاه داده و نادیده گرفتن متغیر auth مشخص شده در گزینه ها را برمی گرداند.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
از این برای ایجاد یک برنامه احراز هویت شده به عنوان سرپرست برای تنظیم وضعیت برای آزمایش استفاده کنید.
یک برنامه firebase مدیریت اولیه مطابق با نام پایگاه داده مشخص شده در گزینه ها را برمی گرداند. این برنامه هنگام خواندن و نوشتن در پایگاه داده قوانین امنیتی را دور می زند.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
از این برای تنظیم قوانین پایگاه داده خود استفاده کنید.
قوانین را به یک پایگاه داده در حال اجرا محلی ارسال می کند. یک شی گزینه را می گیرد که "نام پایگاه داده" و "قوانین" شما را به عنوان رشته ها مشخص می کند.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
همه برنامههای آزمایشی و مدیریت اولیهشده فعلی را برمیگرداند.
از این برای پاکسازی برنامهها بین یا بعد از آزمایشها استفاده کنید (توجه داشته باشید که برنامههای اولیه با شنوندههای فعال از خروج جاوا اسکریپت جلوگیری میکنند):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
وعده ای را برمی گرداند که در صورت موفقیت ورودی رد می شود و در صورت رد ورودی موفق می شود.
از این برای تأیید اینکه یک پایگاه داده خواندن یا نوشتن ناموفق است، استفاده کنید:
firebase.assertFails(app.database().ref("secret").once("value"));
assertSucceeds(pr: Promise) => Promise
قولی را برمیگرداند که در صورت موفقیت ورودی موفق شود و در صورت رد شدن ورودی رد میشود.
از این برای اثبات موفقیت آمیز خواندن یا نوشتن پایگاه داده استفاده کنید:
firebase.assertSucceeds(app.database().ref("public").once("value"));
Cloud Storage
Cloud Storage
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
از این برای ایجاد یک برنامه تأیید شده به عنوان یک کاربر خاص برای استفاده در آزمایشات استفاده کنید.
یک برنامه firebase اولیه مطابق با نام سطل ذخیره سازی و نادیده گرفتن متغیر تأیید مشخص شده در گزینه ها را برمی گرداند.
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" و "قوانین" شما را به عنوان رشته ها مشخص می کند.
firebase
.loadStorageRules({
storageBucket: "my-bucket",
rules: fs.readFileSync("/path/to/storage.rules", "utf8")
});
apps() => [FirebaseApp]
همه برنامههای آزمایشی و مدیریت اولیهشده فعلی را برمیگرداند.
از این برای پاکسازی برنامهها بین یا بعد از آزمایشها استفاده کنید (توجه داشته باشید که برنامههای اولیه با شنوندههای فعال از خروج جاوا اسکریپت جلوگیری میکنند):
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 v8
برای مشاهده روشهایی که 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]
این روش تمام برنامههای آزمایشی و مدیریت اولیه را برمیگرداند. از این برای پاکسازی برنامه ها بین یا بعد از آزمایش استفاده کنید.
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
این روش قولی را برمیگرداند که در صورت موفقیت ورودی موفق است و در صورت رد شدن ورودی رد میشود. از این برای اثبات موفقیت در خواندن یا نوشتن پایگاه داده استفاده کنید.
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 اولیه مطابق با نام پایگاه داده و نادیده گرفتن متغیر auth مشخص شده در گزینه ها را برمی گرداند.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
از این برای ایجاد یک برنامه احراز هویت شده به عنوان سرپرست برای تنظیم وضعیت برای آزمایش استفاده کنید.
یک برنامه firebase مدیریت اولیه مطابق با نام پایگاه داده مشخص شده در گزینه ها را برمی گرداند. این برنامه هنگام خواندن و نوشتن در پایگاه داده قوانین امنیتی را دور می زند.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
از این برای تنظیم قوانین پایگاه داده خود استفاده کنید.
قوانین را به یک پایگاه داده در حال اجرا محلی ارسال می کند. یک شی گزینه را می گیرد که "نام پایگاه داده" و "قوانین" شما را به عنوان رشته ها مشخص می کند.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
تمام برنامههای آزمایشی و مدیریت اولیهشده فعلی را برمیگرداند.
از این برای پاکسازی برنامهها بین یا بعد از آزمایشها استفاده کنید (توجه داشته باشید که برنامههای اولیه با شنوندههای فعال از خروج جاوا اسکریپت جلوگیری میکنند):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
وعده ای را برمی گرداند که در صورت موفقیت ورودی رد می شود و در صورت رد ورودی موفق می شود.
از این برای تأیید اینکه یک پایگاه داده خواندن یا نوشتن ناموفق است، استفاده کنید:
firebase.assertFails(app.database().ref("secret").once("value"));
assertSucceeds(pr: Promise) => Promise
قولی را برمیگرداند که در صورت موفقیت ورودی موفق شود و در صورت رد شدن ورودی رد میشود.
از این برای اثبات موفقیت آمیز خواندن یا نوشتن پایگاه داده استفاده کنید:
firebase.assertSucceeds(app.database().ref("public").once("value"));
Cloud Storage
Cloud Storage
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
از این برای ایجاد یک برنامه تأیید شده به عنوان یک کاربر خاص برای استفاده در آزمایشات استفاده کنید.
یک برنامه firebase اولیه مطابق با نام سطل ذخیره سازی و نادیده گرفتن متغیر تأیید مشخص شده در گزینه ها را برمی گرداند.
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" و "قوانین" شما را به عنوان رشته ها مشخص می کند.
firebase
.loadStorageRules({
storageBucket: "my-bucket",
rules: fs.readFileSync("/path/to/storage.rules", "utf8")
});
apps() => [FirebaseApp]
همه برنامههای آزمایشی و مدیریت اولیهشده فعلی را برمیگرداند.
از این برای پاکسازی برنامهها بین یا بعد از آزمایشها استفاده کنید (توجه داشته باشید که برنامههای اولیه با شنوندههای فعال از خروج جاوا اسکریپت جلوگیری میکنند):
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());