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

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

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

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

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

  • एमुलेटर शुरू में आपकी 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 के उपडोमेन पर पहुंच योग्य है, और आप इस तरह आरईएसटी एपीआई तक पहुंच सकते हैं:

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 का उपयोग करके प्रमाणीकरण की नकल करते हैं।

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

v9 SDK में एम्यूलेटर-विशिष्ट परीक्षण विधियाँ भी देखें।

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

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

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

v9 SDK में सामान्य परीक्षण विधियों और उपयोगिता कार्यों को भी देखें।

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

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

RulesTestEnvironment.clearFirestore() => Promise<void>

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

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

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

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

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

RulesTestEnvironment.clearDatabase() => Promise<void>

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

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

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