बिल्ड यूनिट टेस्ट

Firebase Local Emulator Suite की मदद से, अपने ऐप्लिकेशन की सुविधाओं और काम करने के तरीके की पुष्टि करना आसान हो जाता है. यह आपके Firebase Security Rules कॉन्फ़िगरेशन की पुष्टि करने के लिए भी एक बेहतरीन टूल है. किसी लोकल एनवायरमेंट में यूनिट टेस्ट चलाने और उन्हें ऑटोमेट करने के लिए, Firebase एमुलेटर का इस्तेमाल करें. इस दस्तावेज़ में बताए गए तरीकों से, आपको अपने ऐप्लिकेशन के लिए यूनिट टेस्ट बनाने और उन्हें ऑटोमेट करने में मदद मिलेगी. इससे आपके Rules की पुष्टि की जा सकेगी.

अगर आपने अब तक ऐसा नहीं किया है, तो Firebase एमुलेटर सेट अप करें.

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

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

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

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

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

Realtime Database एम्युलेटर के साथ इंटरैक्ट करना

प्रोडक्शन Firebase Realtime Database इंस्टेंस को firebaseio.com के सबडोमेन पर ऐक्सेस किया जा सकता है. साथ ही, REST API को इस तरह ऐक्सेस किया जा सकता है:

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

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

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

JavaScript SDK टूल के वर्शन 9 के साथ लोकल यूनिट टेस्ट चलाना

Firebase, अपने वर्शन 9 JavaScript SDK और वर्शन 8 SDK, दोनों के साथ सुरक्षा नियमों की यूनिट टेस्टिंग लाइब्रेरी उपलब्ध कराता है. लाइब्रेरी एपीआई काफ़ी अलग होते हैं. हमारा सुझाव है कि आप 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 बनाना और कॉन्फ़िगर करना.
  • Rules को ट्रिगर किए बिना टेस्ट डेटा सेट अप करना. इसके लिए, एक ऐसा तरीका अपनाएं जिससे उन्हें कुछ समय के लिए बायपास किया जा सके,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 बनता है, जो पुष्टि किए गए 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()

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

यह तरीका एक कॉलबैक फ़ंक्शन लेता है, जो Security-Rules-bypassing context लेता है और एक प्रॉमिस दिखाता है. वादा पूरा होने या अस्वीकार होने के बाद, कॉन्टेक्स्ट मिटा दिया जाएगा.

RulesTestEnvironment.cleanup()

यह तरीका, टेस्टिंग एनवायरमेंट में बनाए गए सभी RulesTestContexts को मिटा देता है और मौजूदा संसाधनों को हटा देता है. इससे, टेस्टिंग से बाहर निकलने में आसानी होती है.

इस तरीके से, किसी भी तरह से एमुलेटर की स्थिति में बदलाव नहीं होता. टेस्ट के बीच डेटा रीसेट करने के लिए, ऐप्लिकेशन एम्युलेटर के हिसाब से डेटा मिटाने का तरीका अपनाएं.

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

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

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

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

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

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

यह फ़ंक्शन यह दावा करता है कि एमुलेटर ऑपरेशन को रैप करने वाले प्रॉमिस को, सुरक्षा नियमों के उल्लंघन की वजह से अस्वीकार कर दिया जाएगा.

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

एमुलेटर के हिसाब से तरीके

मॉड्यूलर एपीआई का इस्तेमाल करके, जांच के सामान्य तरीके और काम के फ़ंक्शन भी देखें.

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

इस तरीके से, Firestore डेटाबेस में मौजूद वह डेटा मिट जाता है जो Firestore एमुलेटर के लिए कॉन्फ़िगर किए गए projectId से जुड़ा होता है.

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

इस तरीके से, इस टेस्ट कॉन्टेक्स्ट के लिए Firestore इंस्टेंस मिलता है. दिखाए गए Firebase JS क्लाइंट SDK टूल के इंस्टेंस का इस्तेमाल, क्लाइंट SDK टूल के एपीआई (v9 मॉड्यूलर या v9 के साथ काम करने वाला) के साथ किया जा सकता है.

Realtime Database

Realtime Database

RulesTestEnvironment.clearDatabase() => Promise<void>

इस तरीके से, Realtime Database में मौजूद वह डेटा मिट जाता है जो Realtime Database एमुलेटर के लिए कॉन्फ़िगर किए गए projectId से जुड़ा होता है.

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

इस टेस्ट कॉन्टेक्स्ट के लिए Realtime Database इंस्टेंस पाएं. दिखाए गए Firebase JS क्लाइंट SDK टूल के इंस्टेंस का इस्तेमाल, क्लाइंट SDK टूल के एपीआई (मॉड्यूलर या नेमस्पेस वाले, वर्शन 9 या इसके बाद के वर्शन) के साथ किया जा सकता है. यह तरीका, रीयलटाइम डेटाबेस इंस्टेंस का यूआरएल स्वीकार करता है. अगर यह पैरामीटर दिया गया है, तो यूआरएल से निकाले गए पैरामीटर के साथ नेमस्पेस के एमुलेट किए गए वर्शन का एक इंस्टेंस दिखाता है.

Cloud Storage

Cloud Storage

RulesTestEnvironment.clearStorage() => Promise<void>

इस तरीके से, Cloud Storage एमुलेटर के लिए कॉन्फ़िगर किए गए projectId से जुड़ी स्टोरेज बकेट में मौजूद ऑब्जेक्ट और मेटाडेटा मिट जाता है.

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

यह तरीका, एम्युलेटर से कनेक्ट करने के लिए कॉन्फ़िगर किया गया स्टोरेज इंस्टेंस दिखाता है. यह तरीका, जांच के लिए Firebase स्टोरेज बकेट का gs:// यूआरएल स्वीकार करता है. अगर यह पैरामीटर दिया गया है, तो बकेट के नाम के एमुलेट किए गए वर्शन के लिए, Storage इंस्टेंस दिखाता है.

v8 JavaScript SDK टूल की मदद से, लोकल यूनिट टेस्ट चलाना

Firebase Test SDK टूल के ज़रिए, एमुलेटर के साथ इंटरफ़ेस करने के तरीकों को देखने के लिए कोई प्रॉडक्ट चुनें.

Cloud Firestore

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

यह तरीका, विकल्पों में दिए गए प्रोजेक्ट आईडी और पुष्टि करने वाले वैरिएबल के हिसाब से, शुरू किया गया Firebase ऐप्लिकेशन दिखाता है. इसका इस्तेमाल करके, जांच में इस्तेमाल करने के लिए, किसी खास उपयोगकर्ता के तौर पर पुष्टि किया गया ऐप्लिकेशन बनाएं.

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 ऐप्लिकेशन दिखाता है.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

इसका इस्तेमाल करके, एडमिन के तौर पर पुष्टि किया गया ऐप्लिकेशन बनाएं. इससे, टेस्ट के लिए स्टेटस सेट अप किया जा सकता है.

विकल्पों में दिए गए डेटाबेस के नाम के हिसाब से, शुरू किया गया एडमिन Firebase ऐप्लिकेशन दिखाता है. यह ऐप्लिकेशन, डेटाबेस में डेटा पढ़ने और लिखने के दौरान सुरक्षा से जुड़े नियमों को बायपास करता है.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

अपने डेटाबेस के नियम सेट करने के लिए, इसका इस्तेमाल करें.

स्थानीय तौर पर चल रहे डेटाबेस में नियम भेजता है. यह विकल्पों का एक ऑब्जेक्ट लेता है, जो आपके "databaseName" और "rules" को स्ट्रिंग के तौर पर दिखाता है.

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

फ़िलहाल शुरू किए गए सभी टेस्ट और एडमिन ऐप्लिकेशन दिखाता है.

टेस्ट के बीच या उसके बाद, ऐप्लिकेशन को साफ़ करने के लिए इसका इस्तेमाल करें. ध्यान दें कि चालू लिसनर वाले शुरू किए गए ऐप्लिकेशन, JavaScript को बाहर निकलने से रोकते हैं:

 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.initializeAdminApp({ storageBucket: "my-bucket" });

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

अपनी स्टोरेज बकेट के नियम सेट करने के लिए, इसका इस्तेमाल करें.

स्थानीय तौर पर मैनेज की जाने वाली स्टोरेज बकेट में नियम भेजता है. यह विकल्पों का एक ऑब्जेक्ट लेता है, जो आपके "storageBucket" और "rules" को स्ट्रिंग के तौर पर दिखाता है.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

फ़िलहाल शुरू किए गए सभी टेस्ट और एडमिन ऐप्लिकेशन दिखाता है.

टेस्ट के बीच या उसके बाद, ऐप्लिकेशन को साफ़ करने के लिए इसका इस्तेमाल करें. ध्यान दें कि चालू लिसनर वाले शुरू किए गए ऐप्लिकेशन, JavaScript को बाहर निकलने से रोकते हैं:

 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 टूल के वर्शन 8 के लिए RUT लाइब्रेरी एपीआई

Firebase Test SDK टूल के ज़रिए, एमुलेटर के साथ इंटरफ़ेस करने के तरीकों को देखने के लिए कोई प्रॉडक्ट चुनें.

Cloud Firestore

Cloud Firestore

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

यह तरीका, विकल्पों में दिए गए प्रोजेक्ट आईडी और पुष्टि करने वाले वैरिएबल के हिसाब से, शुरू किया गया Firebase ऐप्लिकेशन दिखाता है. इसका इस्तेमाल करके, जांच में इस्तेमाल करने के लिए, किसी खास उपयोगकर्ता के तौर पर पुष्टि किया गया ऐप्लिकेशन बनाएं.

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 ऐप्लिकेशन दिखाता है.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

इसका इस्तेमाल करके, एडमिन के तौर पर पुष्टि किया गया ऐप्लिकेशन बनाएं. इससे, टेस्ट के लिए स्टेटस सेट अप किया जा सकता है.

विकल्पों में दिए गए डेटाबेस के नाम के हिसाब से, शुरू किया गया एडमिन Firebase ऐप्लिकेशन दिखाता है. यह ऐप्लिकेशन, डेटाबेस में डेटा पढ़ने और लिखने के दौरान सुरक्षा से जुड़े नियमों को बायपास करता है.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

अपने डेटाबेस के नियम सेट करने के लिए, इसका इस्तेमाल करें.

स्थानीय तौर पर चल रहे डेटाबेस में नियम भेजता है. यह विकल्पों का एक ऑब्जेक्ट लेता है, जो आपके "databaseName" और "rules" को स्ट्रिंग के तौर पर दिखाता है.

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

फ़िलहाल शुरू किए गए सभी टेस्ट और एडमिन ऐप्लिकेशन दिखाता है.

टेस्ट के बीच या उसके बाद, ऐप्लिकेशन को साफ़ करने के लिए इसका इस्तेमाल करें. ध्यान दें कि चालू लिसनर वाले शुरू किए गए ऐप्लिकेशन, JavaScript को बाहर निकलने से रोकते हैं:

 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.initializeAdminApp({ storageBucket: "my-bucket" });

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

अपनी स्टोरेज बकेट के नियम सेट करने के लिए, इसका इस्तेमाल करें.

स्थानीय तौर पर मैनेज की जाने वाली स्टोरेज बकेट में नियम भेजता है. यह विकल्पों का एक ऑब्जेक्ट लेता है, जो आपके "storageBucket" और "rules" को स्ट्रिंग के तौर पर दिखाता है.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

फ़िलहाल शुरू किए गए सभी टेस्ट और एडमिन ऐप्लिकेशन दिखाता है.

टेस्ट के बीच या उसके बाद, ऐप्लिकेशन को साफ़ करने के लिए इसका इस्तेमाल करें. ध्यान दें कि चालू लिसनर वाले शुरू किए गए ऐप्लिकेशन, JavaScript को बाहर निकलने से रोकते हैं:

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