Firebase Local Emulator Suite से, आपके ऐप्लिकेशन की सुविधाओं और व्यवहार की पूरी तरह से पुष्टि करना आसान हो जाता है. यह आपके Firebase Security Rules कॉन्फ़िगरेशन की पुष्टि करने के लिए भी एक बेहतरीन टूल है. Firebase Emulator का इस्तेमाल करके, लोकल एनवायरमेंट में यूनिट टेस्ट चलाएं और उन्हें ऑटोमेट करें. इस दस्तावेज़ में बताए गए तरीकों से, आपको अपने ऐप्लिकेशन के लिए यूनिट टेस्ट बनाने और उन्हें अपने-आप होने के लिए सेट अप करने में मदद मिलेगी. इन यूनिट टेस्ट से, आपके Security Rules की पुष्टि की जा सकेगी.
अगर आपने अब तक ऐसा नहीं किया है, तो Firebase Emulator सेट अप करें.
एम्युलेटर चलाने से पहले
एम्युलेटर का इस्तेमाल शुरू करने से पहले, इन बातों का ध्यान रखें:
- एम्युलेटर, शुरू में आपकी
firebase.jsonफ़ाइल केfirestore.rulesयाstorage.rulesफ़ील्ड में दिए गए नियमों को लोड करेगा. अगर फ़ाइल मौजूद नहीं है और आपने यहां बताए गए तरीके सेloadFirestoreRulesयाloadStorageRulesका इस्तेमाल नहीं किया है, तो एम्युलेटर सभी प्रोजेक्ट को ऐसे प्रोजेक्ट के तौर पर मानता है जिनमें नियम लागू नहीं हैं. - ज़्यादातर Firebase SDK सीधे तौर पर एम्युलेटर के साथ काम करते हैं. हालांकि, सिर्फ़
@firebase/rules-unit-testingलाइब्रेरी, सुरक्षा नियमों मेंauthको मॉक करने की सुविधा देती है. इससे यूनिट टेस्ट करना बहुत आसान हो जाता है. इसके अलावा, लाइब्रेरी में एम्युलेटर के लिए कुछ खास सुविधाएं भी उपलब्ध हैं. जैसे, सभी डेटा मिटाना. इनकी जानकारी यहां दी गई है. - इम्यूलेटर, क्लाइंट एसडीके के ज़रिए दिए गए प्रोडक्शन Firebase Auth टोकन भी स्वीकार करेंगे. साथ ही, नियमों के मुताबिक उनका आकलन करेंगे. इससे, इंटिग्रेशन और मैन्युअल टेस्ट में अपने ऐप्लिकेशन को सीधे तौर पर इम्यूलेटर से कनेक्ट किया जा सकेगा.
डेटाबेस एमुलेटर और प्रोडक्शन के बीच अंतर
- आपको डेटाबेस इंस्टेंस बनाने की ज़रूरत नहीं है. इम्यूलेटर, ऐक्सेस किए गए किसी भी डेटाबेस इंस्टेंस को अपने-आप बना देगा.
- हर नए डेटाबेस को बंद नियमों के साथ शुरू किया जाता है, इसलिए एडमिन के अलावा अन्य उपयोगकर्ता न तो पढ़ पाएंगे और न ही लिख पाएंगे.
- हर एमुलेट किए गए डेटाबेस पर, स्पार्क प्लान की सीमाएं और कोटा लागू होते हैं. खास तौर पर, यह हर इंस्टेंस को 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, Security Rules की यूनिट टेस्टिंग लाइब्रेरी को अपने JavaScript SDK के वर्शन 9 और SDK के वर्शन 8, दोनों के साथ डिस्ट्रिब्यूट करता है. लाइब्रेरी के एपीआई काफ़ी अलग हैं. हमारा सुझाव है कि आप v9 टेस्टिंग लाइब्रेरी का इस्तेमाल करें. यह ज़्यादा बेहतर है. साथ ही, इसे एम्युलेटर से कनेक्ट करने के लिए कम सेटअप की ज़रूरत होती है. इस तरह, प्रोडक्शन संसाधनों का गलती से इस्तेमाल होने से बचा जा सकता है. पुराने सिस्टम के साथ काम करने की सुविधा के लिए, हम v8 टेस्टिंग लाइब्रेरी को उपलब्ध कराते रहेंगे.
- v9 SDK में टेस्ट करने के सामान्य तरीके और यूटिलिटी फ़ंक्शन
- v9 SDK में, एम्युलेटर के लिए खास तौर पर टेस्ट करने के तरीके
स्थानीय तौर पर चलने वाले एम्युलेटर के साथ इंटरैक्ट करने के लिए, @firebase/rules-unit-testing मॉड्यूल का इस्तेमाल करें. अगर आपको टाइमआउट या ECONNREFUSED गड़बड़ियां मिलती हैं, तो दोबारा जांच लें कि एम्युलेटर चल रहा है या नहीं.
हमारा सुझाव है कि आप Node.js के नए वर्शन का इस्तेमाल करें, ताकि async/await नोटेशन का इस्तेमाल किया जा सके. आपको जिन फ़ंक्शन का टेस्ट करना है उनमें से ज़्यादातर एसिंक्रोनस फ़ंक्शन होते हैं. टेस्टिंग मॉड्यूल को प्रॉमिस पर आधारित कोड के साथ काम करने के लिए डिज़ाइन किया गया है.
v9 Rules Unit Testing लाइब्रेरी को हमेशा इम्यूलेटर के बारे में पता होता है. साथ ही, यह आपके प्रोडक्शन संसाधनों को कभी नहीं छूती.
मॉड्यूलर इंपोर्ट स्टेटमेंट के v9 वर्शन का इस्तेमाल करके, लाइब्रेरी इंपोर्ट की जाती है. उदाहरण के लिए:
import {
assertFails,
assertSucceeds,
initializeTestEnvironment
} from "@firebase/rules-unit-testing"
// Use `const { … } = require("@firebase/rules-unit-testing")` if imports are not supported
// Or we suggest `const testing = require("@firebase/rules-unit-testing")` if necessary.
इंपोर्ट करने के बाद, यूनिट टेस्ट लागू करने के लिए ये काम करने होते हैं:
initializeTestEnvironmentको कॉल करके,RulesTestEnvironmentबनाना और उसे कॉन्फ़िगर करना.- Security Rules को ट्रिगर किए बिना टेस्ट डेटा सेट अप करना. इसके लिए, ऐसी सुविधाजनक विधि का इस्तेमाल करना जिससे
RulesTestEnvironment.withSecurityRulesDisabledको कुछ समय के लिए बायपास किया जा सके. - टेस्ट सुइट और हर टेस्ट के लिए, before/after हुक सेट अप करना. साथ ही, टेस्ट डेटा और एनवायरमेंट को क्लीन अप करने के लिए कॉल करना. जैसे,
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().doc('/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 कॉन्टेक्स्ट लेता है और एक प्रॉमिस दिखाता है. प्रॉमिस के पूरा होने या अस्वीकार होने के बाद, कॉन्टेक्स्ट मिट जाएगा.
RulesTestEnvironment.cleanup()
इस तरीके से, टेस्ट एनवायरमेंट में बनाए गए सभी RulesTestContexts मिट जाते हैं. साथ ही, इससे बुनियादी संसाधनों को भी मिटाया जा सकता है, ताकि आसानी से बाहर निकला जा सके.
इस तरीके से, एम्युलेटर की स्थिति में कोई बदलाव नहीं होता. टेस्ट के बीच डेटा रीसेट करने के लिए, ऐप्लिकेशन के एम्युलेटर के लिए खास तौर पर तैयार किए गए डेटा मिटाने के तरीके का इस्तेमाल करें.
assertSucceeds(pr: Promise<any>)) => Promise<any>
यह टेस्ट केस यूटिलिटी फ़ंक्शन है.
यह फ़ंक्शन पुष्टि करता है कि एमुलेटर ऑपरेशन को रैप करने वाले दिए गए Promise को, सुरक्षा नियमों के किसी भी उल्लंघन के बिना हल किया जाएगा.
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });assertFails(pr: Promise<any>)) => Promise<any>
यह टेस्ट केस यूटिलिटी फ़ंक्शन है.
यह फ़ंक्शन पुष्टि करता है कि एम्युलेटर ऑपरेशन को रैप करने वाले दिए गए Promise को, सुरक्षा नियमों के उल्लंघन की वजह से अस्वीकार कर दिया जाएगा.
await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });एम्युलेटर के लिए खास तरीके
इसके अलावा, मॉड्यूलर एपीआई का इस्तेमाल करके, जांच के सामान्य तरीके और यूटिलिटी फ़ंक्शन भी देखें.
Cloud Firestore
Cloud Firestore
RulesTestEnvironment.clearFirestore() => Promise<void>
इस तरीके से, Firestore डेटाबेस में मौजूद उस डेटा को मिटाया जाता है जो Firestore एम्युलेटर के लिए कॉन्फ़िगर किए गए projectId से जुड़ा है.
RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;
यह तरीका, इस टेस्ट कॉन्टेक्स्ट के लिए Firestore इंस्टेंस को ऐक्सेस करता है. Firebase JS Client SDK के इस इंस्टेंस का इस्तेमाल, क्लाइंट SDK टूल के एपीआई (मॉड्यूलर v9 या v9 कंपैट) के साथ किया जा सकता है.
Realtime Database
Realtime Database
RulesTestEnvironment.clearDatabase() => Promise<void>
यह तरीका, Realtime Database में मौजूद उस डेटा को मिटाता है जो projectId एमुलेटर के लिए कॉन्फ़िगर किए गए projectId से जुड़ा है.Realtime Database
RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;
इस टेस्ट कॉन्टेक्स्ट के लिए, Realtime Database इंस्टेंस पाएं. Firebase JS Client SDK के इस इंस्टेंस का इस्तेमाल, क्लाइंट SDK टूल के एपीआई के साथ किया जा सकता है. जैसे, मॉड्यूलर या नेमस्पेस वाला, वर्शन 9 या इसके बाद का वर्शन. यह तरीका, Realtime Database इंस्टेंस का यूआरएल स्वीकार करता है. अगर यह विकल्प चुना जाता है, तो यह यूआरएल से निकाले गए पैरामीटर के साथ नेमस्पेस के एम्युलेट किए गए वर्शन का इंस्टेंस दिखाता है.
Cloud Storage
Cloud Storage
RulesTestEnvironment.clearStorage() => Promise<void>
यह तरीका, projectId के स्टोरेज बकेट में मौजूद ऑब्जेक्ट और मेटाडेटा को मिटाता है. ये बकेट, Cloud Storage एम्युलेटर के लिए कॉन्फ़िगर किए गए हैं.
RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;
यह तरीका, एम्युलेटर से कनेक्ट करने के लिए कॉन्फ़िगर किया गया स्टोरेज इंस्टेंस दिखाता है.
यह तरीका, जांच के लिए Firebase Storage बकेट का gs:// यूआरएल स्वीकार करता है. अगर यह विकल्प चुना जाता है, तो बकेट के नाम के एम्युलेट किए गए वर्शन के लिए Storage इंस्टेंस दिखाता है.
v8 JavaScript SDK की मदद से, लोकल यूनिट टेस्ट चलाना
किसी प्रॉडक्ट को चुनें और देखें कि Firebase Test SDK, एम्युलेटर के साथ इंटरफ़ेस करने के लिए किन तरीकों का इस्तेमाल करता है.
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
यह तरीका, प्रोजेक्ट आईडी और विकल्पों में दिए गए auth वैरिएबल के हिसाब से, शुरू किया गया 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
इसका इस्तेमाल, किसी खास उपयोगकर्ता के तौर पर पुष्टि किए गए ऐप्लिकेशन को बनाने के लिए करें, ताकि उसे टेस्ट में इस्तेमाल किया जा सके.
यह फ़ंक्शन, डेटाबेस के नाम और विकल्पों में तय किए गए auth वैरिएबल ओवरराइड के हिसाब से, शुरू किया गया 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
इसका इस्तेमाल, किसी खास उपयोगकर्ता के तौर पर पुष्टि किए गए ऐप्लिकेशन को बनाने के लिए करें, ताकि उसे टेस्ट में इस्तेमाल किया जा सके.
यह फ़ंक्शन, स्टोरेज बकेट के नाम और विकल्पों में बताए गए auth वैरिएबल के आधार पर, शुरू किया गया Firebase ऐप्लिकेशन दिखाता है.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
इसका इस्तेमाल करके, एडमिन के तौर पर पुष्टि किया गया ऐप्लिकेशन बनाएं. इससे टेस्ट के लिए स्थिति सेट अप की जा सकेगी.
यह फ़ंक्शन, विकल्पों में दिए गए स्टोरेज बकेट के नाम के हिसाब से, शुरू किया गया एडमिन Firebase ऐप्लिकेशन दिखाता है. यह ऐप्लिकेशन, बकेट से डेटा पढ़ने और उसमें डेटा लिखने के दौरान सुरक्षा नियमों को अनदेखा करता है.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
इसका इस्तेमाल करके, अपने स्टोरेज बकेट के नियम सेट करें.
यह कुकी, स्थानीय तौर पर मैनेज किए गए स्टोरेज बकेट में नियम भेजती है. यह एक विकल्प ऑब्जेक्ट लेता है, जो "storageBucket" और "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 v8 के लिए RUT लाइब्रेरी API
किसी प्रॉडक्ट को चुनें और देखें कि Firebase Test SDK, एम्युलेटर के साथ इंटरफ़ेस करने के लिए किन तरीकों का इस्तेमाल करता है.
Cloud Firestore
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
यह तरीका, प्रोजेक्ट आईडी और विकल्पों में दिए गए auth वैरिएबल के हिसाब से, शुरू किया गया 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
इसका इस्तेमाल, किसी खास उपयोगकर्ता के तौर पर पुष्टि किए गए ऐप्लिकेशन को बनाने के लिए करें, ताकि उसे टेस्ट में इस्तेमाल किया जा सके.
यह फ़ंक्शन, डेटाबेस के नाम और विकल्पों में तय किए गए auth वैरिएबल ओवरराइड के हिसाब से, शुरू किया गया 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
इसका इस्तेमाल, किसी खास उपयोगकर्ता के तौर पर पुष्टि किए गए ऐप्लिकेशन को बनाने के लिए करें, ताकि उसे टेस्ट में इस्तेमाल किया जा सके.
यह फ़ंक्शन, स्टोरेज बकेट के नाम और विकल्पों में बताए गए auth वैरिएबल के आधार पर, शुरू किया गया Firebase ऐप्लिकेशन दिखाता है.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
इसका इस्तेमाल करके, एडमिन के तौर पर पुष्टि किया गया ऐप्लिकेशन बनाएं. इससे टेस्ट के लिए स्थिति सेट अप की जा सकेगी.
यह फ़ंक्शन, विकल्पों में दिए गए स्टोरेज बकेट के नाम के हिसाब से, शुरू किया गया एडमिन Firebase ऐप्लिकेशन दिखाता है. यह ऐप्लिकेशन, बकेट से डेटा पढ़ने और उसमें डेटा लिखने के दौरान सुरक्षा नियमों को अनदेखा करता है.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
इसका इस्तेमाल करके, अपने स्टोरेज बकेट के नियम सेट करें.
यह कुकी, स्थानीय तौर पर मैनेज किए गए स्टोरेज बकेट में नियम भेजती है. यह एक विकल्प ऑब्जेक्ट लेता है, जो "storageBucket" और "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());