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

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

यदि आपने पहले से नहीं किया है, तो फायरबेस एमुलेटर सेट करें

एम्यूलेटर चलाने से पहले

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

  • एमुलेटर प्रारंभ में आपकी firebase.json फ़ाइल के firestore.rules या 'storage.rules' फ़ील्ड में निर्दिष्ट नियमों को लोड करेगा। यदि फ़ाइल मौजूद नहीं है और आप नीचे बताए अनुसार loadFirestoreRules या 'लोडस्टोरेजरूल्स' विधि का उपयोग नहीं करते हैं, तो एमुलेटर सभी प्रोजेक्ट्स को खुले नियमों के रूप में मानता है।
  • जबकि अधिकांश फायरबेस एसडीके सीधे एमुलेटर के साथ काम करते हैं, केवल @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 जावास्क्रिप्ट एसडीके के साथ स्थानीय इकाई परीक्षण चलाएँ

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

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

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

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

आप 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.

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

  • 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;

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

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

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

RulesTestEnvironment.clearDatabase() => Promise<void>

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

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

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

घन संग्रहण

घन संग्रहण

RulesTestEnvironment.clearStorage() => Promise<void>

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

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

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

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

JS SDK v8 के लिए RUT लाइब्रेरी एपीआई

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

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

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

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