Catch up on highlights from Firebase at Google I/O 2023. Learn more

यूनिट परीक्षण बनाएं

फायरबेस लोकल एम्यूलेटर सूट आपके ऐप की सुविधाओं और व्यवहार को पूरी तरह से मान्य करना आसान बनाता है। यह आपके फायरबेस सुरक्षा नियम कॉन्फ़िगरेशन को सत्यापित करने के लिए भी एक बढ़िया टूल है। स्थानीय वातावरण में इकाई परीक्षणों को चलाने और स्वचालित करने के लिए फायरबेस एमुलेटर का उपयोग करें। इस दस्तावेज़ में बताए गए तरीकों से आपको अपने ऐप के लिए इकाई परीक्षण बनाने और स्वचालित करने में मदद मिलेगी जो आपके नियमों को मान्य करता है।

यदि आपने पहले से नहीं किया है, तो Firebase Emulators सेट अप करें

एमुलेटर चलाने से पहले

इससे पहले कि आप एमुलेटर का उपयोग करना शुरू करें, निम्नलिखित बातों का ध्यान रखें:

  • एमुलेटर शुरू में आपकी firebase.json फ़ाइल के firestore.rules या 'storage.rules' फ़ील्ड में निर्दिष्ट नियमों को लोड करेगा। यदि फ़ाइल मौजूद नहीं है और आप नीचे बताए अनुसार loadFirestoreRules या 'loadStorageRules' विधि का उपयोग नहीं करते हैं, तो एमुलेटर सभी परियोजनाओं को खुले नियमों के रूप में मानता है।
  • जबकि अधिकांश फायरबेस एसडीके सीधे एमुलेटर के साथ काम करते हैं, केवल @firebase/rules-unit-testing लाइब्रेरी सुरक्षा नियमों में मॉकिंग auth समर्थन करती है, जिससे यूनिट परीक्षण बहुत आसान हो जाता है। इसके अलावा, पुस्तकालय कुछ एमुलेटर-विशिष्ट सुविधाओं का समर्थन करता है, जैसे कि नीचे सूचीबद्ध सभी डेटा को साफ़ करना।
  • एमुलेटर क्लाइंट एसडीके के माध्यम से प्रदान किए गए उत्पादन फायरबेस ऑथ टोकन को भी स्वीकार करेंगे और तदनुसार नियमों का मूल्यांकन करेंगे, जो एकीकरण और मैनुअल परीक्षणों में आपके एप्लिकेशन को सीधे एमुलेटर से जोड़ने की अनुमति देता है।

डेटाबेस एमुलेटर और उत्पादन के बीच अंतर

  • आपको स्पष्ट रूप से डेटाबेस उदाहरण बनाने की आवश्यकता नहीं है। एम्यूलेटर स्वचालित रूप से एक्सेस किए गए किसी डेटाबेस इंस्टेंस को बनाएगा।
  • प्रत्येक नया डेटाबेस बंद नियमों के साथ शुरू होता है, इसलिए गैर-व्यवस्थापक उपयोगकर्ता पढ़ने या लिखने में सक्षम नहीं होंगे।
  • प्रत्येक अनुकरणीय डेटाबेस स्पार्क योजना सीमा और कोटा लागू करता है (सबसे विशेष रूप से, यह प्रत्येक उदाहरण को 100 समवर्ती कनेक्शनों तक सीमित करता है)।
  • कोई भी डेटाबेस स्ट्रिंग "owner" व्यवस्थापक ऑथ टोकन के रूप में स्वीकार करेगा।
  • एमुलेटर वर्तमान में अन्य फायरबेस उत्पादों के साथ काम करने की बातचीत नहीं करते हैं। विशेष रूप से, सामान्य फायरबेस प्रमाणीकरण प्रवाह काम नहीं करता है। इसके बजाय, आप rules-unit-testing लाइब्रेरी में initializeTestApp() पद्धति का उपयोग कर सकते हैं, जो एक auth फ़ील्ड लेता है। इस पद्धति का उपयोग करके बनाया गया फायरबेस ऑब्जेक्ट ऐसा व्यवहार करता है जैसे आपने जो भी इकाई प्रदान की है, उसे सफलतापूर्वक प्रमाणित कर दिया गया है। यदि आप null पास करते हैं, तो यह एक अप्रमाणित उपयोगकर्ता के रूप में व्यवहार करेगा ( auth != null नियम विफल हो जाएंगे, उदाहरण के लिए)।

रीयलटाइम डेटाबेस एमुलेटर के साथ इंटरैक्ट करना

एक उत्पादन फायरबेस रीयलटाइम डेटाबेस उदाहरण firebaseio.com के एक उपडोमेन पर पहुँचा जा सकता है, और आप इस तरह से REST एपीआई तक पहुँच सकते हैं:

https://<database_name>.firebaseio.com/path/to/my/data.json

एमुलेटर स्थानीय रूप से चलता है, और localhost:9000 पर उपलब्ध है। किसी विशिष्ट डेटाबेस उदाहरण के साथ इंटरैक्ट करने के लिए, आपको डेटाबेस नाम निर्दिष्ट करने के लिए ns क्वेरी पैरामीटर का उपयोग करना होगा।

http://localhost:9000/path/to/my/data.json?ns=<database_name>

संस्करण 9 JavaScript SDK के साथ स्थानीय इकाई परीक्षण चलाएँ

फायरबेस अपने संस्करण 9 जावास्क्रिप्ट एसडीके और इसके संस्करण 8 एसडीके दोनों के साथ एक सुरक्षा नियम इकाई परीक्षण पुस्तकालय वितरित करता है। लाइब्रेरी एपीआई काफी अलग हैं। हम v9 परीक्षण लाइब्रेरी की अनुशंसा करते हैं, जो अधिक सुव्यवस्थित है और एमुलेटर से कनेक्ट करने के लिए कम सेटअप की आवश्यकता होती है और इस प्रकार उत्पादन संसाधनों के आकस्मिक उपयोग से सुरक्षित रूप से बचती है। पश्चगामी संगतता के लिए, हम v8 परीक्षण लाइब्रेरी को उपलब्ध कराना जारी रखते हैं।

स्थानीय रूप से चलने वाले एमुलेटर के साथ इंटरैक्ट करने के लिए @firebase/rules-unit-testing मॉड्यूल का उपयोग करें। यदि आपको टाइमआउट या ECONNREFUSED त्रुटियां मिलती हैं, तो दोबारा जांच लें कि एमुलेटर वास्तव में चल रहा है या नहीं।

हम दृढ़ता से Node.js के हाल के संस्करण का उपयोग करने की सलाह देते हैं ताकि आप async/await संकेतन का उपयोग कर सकें। आप जिन व्यवहारों का परीक्षण करना चाहते हैं उनमें से लगभग सभी में अतुल्यकालिक कार्य शामिल हैं, और परीक्षण मॉड्यूल को वादा-आधारित कोड के साथ काम करने के लिए डिज़ाइन किया गया है।

v9 रूल्स यूनिट टेस्टिंग लाइब्रेरी हमेशा इम्यूलेटर के बारे में जागरूक रहती है और कभी भी आपके उत्पादन संसाधनों को नहीं छूती है।

आप v9 मॉड्यूलर आयात विवरण का उपयोग करके लाइब्रेरी आयात करते हैं। उदाहरण के लिए:

import {
  assertFails,
  assertSucceeds,
  initializeTestEnvironment,
  RulesTestEnvironment,
} 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.

एक बार आयात किए जाने के बाद, इकाई परीक्षणों को लागू करने में शामिल हैं:

  • initializeTestEnvironment पर कॉल के साथ एक RulesTestEnvironment बनाना और कॉन्फ़िगर करना।
  • नियमों को ट्रिगर किए बिना परीक्षण डेटा सेट करना, एक सुविधा विधि का उपयोग करके जो आपको अस्थायी रूप से उन्हें बायपास करने की अनुमति देता है, RulesTestEnvironment.withSecurityRulesDisabled
  • टेस्ट डेटा और पर्यावरण को साफ करने के लिए कॉल के साथ हुक के पहले/बाद में टेस्ट सूट और प्रति-टेस्ट सेट अप करना, जैसे RulesTestEnvironment.cleanup() या RulesTestEnvironment.clearFirestore()
  • उन परीक्षण मामलों को लागू करना जो RulesTestEnvironment.authenticatedContext और RulesTestEnvironment.unauthenticatedContext कॉन्टेक्स्ट का उपयोग करके प्रमाणीकरण की नकल करते हैं।

सामान्य तरीके और उपयोगिता कार्य

मॉड्यूलर एपीआई का उपयोग करके एमुलेटर-विशिष्ट परीक्षण विधियों को भी देखें।

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 बनाता है, जो प्रमाणित प्रमाणीकरण उपयोगकर्ता की तरह व्यवहार करता है। लौटाए गए संदर्भ के माध्यम से किए गए अनुरोधों में नकली प्रमाणीकरण टोकन संलग्न होगा। वैकल्पिक रूप से, ऑथेंटिकेशन टोकन पेलोड के लिए कस्टम दावों या ओवरराइड को परिभाषित करने वाला ऑब्जेक्ट पास करें।

किसी भी कॉन्फ़िगर किए गए एमुलेटर इंस्टेंस को एक्सेस करने के लिए अपने परीक्षणों में लौटाए गए परीक्षण संदर्भ ऑब्जेक्ट का उपयोग करें, जिसमें 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 बनाता है, जो प्रमाणीकरण के माध्यम से लॉग इन नहीं होने वाले क्लाइंट की तरह व्यवहार करता है। लौटाए गए संदर्भ के माध्यम से बनाए गए अनुरोधों में फायरबेस ऑथ टोकन संलग्न नहीं होंगे।

किसी भी कॉन्फ़िगर किए गए एमुलेटर इंस्टेंस को एक्सेस करने के लिए अपने परीक्षणों में लौटाए गए परीक्षण संदर्भ ऑब्जेक्ट का उपयोग करें, जिसमें 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()

ऐसे संदर्भ के साथ परीक्षण सेटअप फ़ंक्शन चलाएँ जो ऐसा व्यवहार करता है मानो सुरक्षा नियम अक्षम किए गए हों.

यह विधि एक कॉलबैक फ़ंक्शन लेती है, जो सुरक्षा-नियमों को दरकिनार करते हुए संदर्भ लेती है और एक वादा लौटाती है। वादा हल/अस्वीकार होने पर संदर्भ नष्ट हो जाएगा।

RulesTestEnvironment.cleanup()

यह विधि परीक्षण वातावरण में बनाए गए सभी RulesTestContexts नष्ट कर देती है और अंतर्निहित संसाधनों को साफ कर देती है, जिससे एक स्वच्छ निकास की अनुमति मिलती है।

यह विधि किसी भी तरह से एमुलेटर की स्थिति को नहीं बदलती है। परीक्षणों के बीच डेटा को रीसेट करने के लिए, एप्लिकेशन एमुलेटर-विशिष्ट स्पष्ट डेटा पद्धति का उपयोग करें।

assertSucceeds(pr: Promise<any>)) => Promise<any>

यह एक टेस्ट केस यूटिलिटी फंक्शन है।

फ़ंक्शन का दावा है कि एक एमुलेटर ऑपरेशन को लपेटने वाले आपूर्ति किए गए वादे को सुरक्षा नियमों के उल्लंघन के बिना हल किया जाएगा।

await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

assertFails(pr: Promise<any>)) => Promise<any>

यह एक टेस्ट केस यूटिलिटी फंक्शन है।

फ़ंक्शन का दावा है कि एक एमुलेटर ऑपरेशन को लपेटने वाला आपूर्ति किया गया वादा सुरक्षा नियमों के उल्लंघन के साथ खारिज कर दिया जाएगा।

await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });

एमुलेटर-विशिष्ट तरीके

मॉड्यूलर एपीआई का उपयोग करके सामान्य परीक्षण विधियों और उपयोगिता कार्यों को भी देखें।

क्लाउड फायरस्टोर

क्लाउड फायरस्टोर

RulesTestEnvironment.clearFirestore() => Promise<void>

यह विधि फायरस्टार डेटाबेस में डेटा को साफ करती है जो कि फायरस्टोर एमुलेटर के लिए कॉन्फ़िगर किए गए projectId से संबंधित है।

RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;

इस विधि को इस परीक्षण संदर्भ के लिए फायरस्टोर उदाहरण मिलता है। लौटाए गए फायरबेस जेएस क्लाइंट एसडीके उदाहरण का उपयोग क्लाइंट एसडीके एपीआई (वी 9 मॉड्यूलर या वी 9 कंपैट) के साथ किया जा सकता है।

रीयलटाइम डेटाबेस

रीयलटाइम डेटाबेस

RulesTestEnvironment.clearDatabase() => Promise<void>

यह विधि रीयलटाइम डेटाबेस में डेटा को साफ़ करती है जो रीयलटाइम डेटाबेस एमुलेटर के लिए कॉन्फ़िगर किए गए projectId से संबंधित है।

RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;

इस परीक्षण संदर्भ के लिए रीयलटाइम डेटाबेस उदाहरण प्राप्त करें। लौटाए गए फायरबेस जेएस क्लाइंट एसडीके उदाहरण का उपयोग क्लाइंट एसडीके एपीआई (मॉड्यूलर या नेमस्पेस्ड, संस्करण 9 या अधिक) के साथ किया जा सकता है। विधि रीयलटाइम डेटाबेस उदाहरण के URL को स्वीकार करती है। यदि निर्दिष्ट किया गया है, तो URL से निकाले गए पैरामीटर के साथ नाम स्थान के अनुकरणीय संस्करण के लिए एक उदाहरण देता है।

घन संग्रहण

घन संग्रहण

RulesTestEnvironment.clearStorage() => Promise<void>

यह विधि क्लाउड स्टोरेज एमुलेटर के लिए कॉन्फ़िगर किए गए projectId से संबंधित स्टोरेज बकेट में ऑब्जेक्ट्स और मेटाडेटा को साफ़ करती है।

RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;

यह विधि एमुलेटर से कनेक्ट करने के लिए कॉन्फ़िगर किए गए स्टोरेज इंस्टेंस को लौटाती है। विधि परीक्षण के लिए फायरबेस स्टोरेज बकेट के लिए gs:// url स्वीकार करती है। यदि निर्दिष्ट किया गया है, तो बकेट नाम के अनुकरणीय संस्करण के लिए संग्रहण उदाहरण देता है।

v8 JavaScript SDK के साथ स्थानीय इकाई परीक्षण चलाएँ

एमुलेटर के साथ इंटरफेस करने के लिए फायरबेस टेस्ट एसडीके द्वारा उपयोग की जाने वाली विधियों को देखने के लिए एक उत्पाद का चयन करें।

क्लाउड फायरस्टोर

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

यह विधि विकल्पों में निर्दिष्ट प्रोजेक्ट आईडी और ऑथ वैरिएबल से संबंधित प्रारंभिक फायरबेस ऐप लौटाती है। परीक्षणों में उपयोग करने के लिए एक विशिष्ट उपयोगकर्ता के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

यह विधि प्रारंभिक व्यवस्थापक फायरबेस ऐप लौटाती है। पढ़ने और लिखने के दौरान यह ऐप सुरक्षा नियमों को दरकिनार करता है। परीक्षण के लिए स्थिति सेट करने के लिए एक व्यवस्थापक के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

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

यह विधि स्थानीय रूप से चल रहे फायरस्टोर इंस्टेंस में किसी विशेष प्रोजेक्ट से जुड़े सभी डेटा को साफ़ करती है। परीक्षण के बाद सफाई के लिए इस विधि का प्रयोग करें।

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

रीयलटाइम डेटाबेस

रीयलटाइम डेटाबेस

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

परीक्षणों में उपयोग करने के लिए एक विशिष्ट उपयोगकर्ता के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

विकल्पों में निर्दिष्ट डेटाबेस नाम और ऑथ चर ओवरराइड के अनुरूप एक आरंभिक फायरबेस ऐप लौटाता है।

firebase.initializeTestApp({
  databaseName: "my-database",
  auth: { uid: "alice" }
});

initializeAdminApp({ databaseName: string }) => FirebaseApp

परीक्षण के लिए स्थिति सेट करने के लिए एक व्यवस्थापक के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

विकल्पों में निर्दिष्ट डेटाबेस नाम के अनुरूप एक प्रारंभिक व्यवस्थापक फायरबेस ऐप लौटाता है। डेटाबेस को पढ़ने और लिखने के दौरान यह ऐप सुरक्षा नियमों को बायपास करता है।

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"));

घन संग्रहण

घन संग्रहण

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

परीक्षणों में उपयोग करने के लिए एक विशिष्ट उपयोगकर्ता के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

स्टोरेज बकेट नाम और ऑथेंटिक वेरिएबल ओवरराइड विकल्पों में निर्दिष्ट के अनुरूप एक आरंभिक फायरबेस ऐप लौटाता है।

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

परीक्षण के लिए स्थिति सेट करने के लिए एक व्यवस्थापक के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

विकल्पों में निर्दिष्ट स्टोरेज बकेट नाम के अनुरूप एक आरंभिक एडमिन फायरबेस ऐप लौटाता है। बकेट में पढ़ते और लिखते समय यह ऐप सुरक्षा नियमों को दरकिनार कर देता है।

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

अपनी संग्रहण बकेट के नियम सेट करने के लिए इसका उपयोग करें।

स्थानीय रूप से प्रबंधित स्टोरेज बकेट को नियम भेजता है। एक विकल्प ऑब्जेक्ट लेता है जो आपके "स्टोरेजबकेट" और आपके "नियम" को स्ट्रिंग्स के रूप में निर्दिष्ट करता है।

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());

जेएस एसडीके v8 के लिए आरयूटी लाइब्रेरी एपीआई

एमुलेटर के साथ इंटरफेस करने के लिए फायरबेस टेस्ट एसडीके द्वारा उपयोग की जाने वाली विधियों को देखने के लिए एक उत्पाद का चयन करें।

क्लाउड फायरस्टोर

क्लाउड फायरस्टोर

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

यह विधि विकल्पों में निर्दिष्ट प्रोजेक्ट आईडी और ऑथ वैरिएबल से संबंधित प्रारंभिक फायरबेस ऐप लौटाती है। परीक्षणों में उपयोग करने के लिए एक विशिष्ट उपयोगकर्ता के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

यह विधि प्रारंभिक व्यवस्थापक फायरबेस ऐप लौटाती है। पढ़ने और लिखने के दौरान यह ऐप सुरक्षा नियमों को दरकिनार करता है। परीक्षण के लिए स्थिति सेट करने के लिए एक व्यवस्थापक के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

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

यह विधि स्थानीय रूप से चल रहे फायरस्टोर इंस्टेंस में किसी विशेष प्रोजेक्ट से जुड़े सभी डेटा को साफ़ करती है। परीक्षण के बाद सफाई के लिए इस विधि का प्रयोग करें।

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

रीयलटाइम डेटाबेस

रीयलटाइम डेटाबेस

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

परीक्षणों में उपयोग करने के लिए एक विशिष्ट उपयोगकर्ता के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

विकल्पों में निर्दिष्ट डेटाबेस नाम और ऑथ चर ओवरराइड के अनुरूप एक आरंभिक फायरबेस ऐप लौटाता है।

firebase.initializeTestApp({
  databaseName: "my-database",
  auth: { uid: "alice" }
});

initializeAdminApp({ databaseName: string }) => FirebaseApp

परीक्षण के लिए स्थिति सेट करने के लिए एक व्यवस्थापक के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

विकल्पों में निर्दिष्ट डेटाबेस नाम के अनुरूप एक प्रारंभिक व्यवस्थापक फायरबेस ऐप लौटाता है। डेटाबेस को पढ़ने और लिखने के दौरान यह ऐप सुरक्षा नियमों को बायपास करता है।

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"));

घन संग्रहण

घन संग्रहण

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

परीक्षणों में उपयोग करने के लिए एक विशिष्ट उपयोगकर्ता के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

स्टोरेज बकेट नाम और ऑथेंटिक वेरिएबल ओवरराइड विकल्पों में निर्दिष्ट के अनुरूप एक आरंभिक फायरबेस ऐप लौटाता है।

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

परीक्षण के लिए स्थिति सेट करने के लिए एक व्यवस्थापक के रूप में प्रमाणित ऐप बनाने के लिए इसका उपयोग करें।

विकल्पों में निर्दिष्ट स्टोरेज बकेट नाम के अनुरूप एक आरंभिक एडमिन फायरबेस ऐप लौटाता है। बकेट में पढ़ते और लिखते समय यह ऐप सुरक्षा नियमों को दरकिनार कर देता है।

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

अपनी संग्रहण बकेट के नियम सेट करने के लिए इसका उपयोग करें।

स्थानीय रूप से प्रबंधित स्टोरेज बकेट को नियम भेजता है। एक विकल्प ऑब्जेक्ट लेता है जो आपके "स्टोरेजबकेट" और आपके "नियम" को स्ट्रिंग्स के रूप में निर्दिष्ट करता है।

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());