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

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

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

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

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

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

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

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

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

प्रोडक्शन Firebase Realtime Database इंस्टेंस को इसके सबडोमेन से ऐक्सेस किया जा सकता है 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>

JavaScript SDK के वर्शन 9 की मदद से लोकल यूनिट टेस्ट करना

Firebase, अपने दोनों वर्शन के साथ सुरक्षा नियमों की यूनिट टेस्टिंग लाइब्रेरी उपलब्ध कराता है 9 JavaScript SDK टूल और उसका 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.

इंपोर्ट होने के बाद, यूनिट टेस्ट लागू करने के लिए ये काम करने की ज़रूरत होती है:

  • RulesTestEnvironment को बनाया और कॉन्फ़िगर किया जा रहा है. initializeTestEnvironment.
  • आसान सुविधा का इस्तेमाल करके, 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 पुष्टि टोकन अटैच होना चाहिए.

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

एम्युलेटर के लिए खास तरीके

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

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

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

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

जांच के इस कॉन्टेक्स्ट के लिए, इस तरीके को Firestore इंस्टेंस मिलता है. रिटर्न Firebase JS क्लाइंट SDK इंस्टेंस का इस्तेमाल, क्लाइंट SDK API (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>

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

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

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

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

कोई प्रॉडक्ट चुनें, ताकि आप इंटरफ़ेस के लिए Firebase टेस्ट 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" को तय करता है और आपके "नियम" स्ट्रिंग के रूप में.

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" के बारे में बताता है और आपके "नियम" स्ट्रिंग के रूप में.

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 लाइब्रेरी एपीआई

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" को तय करता है और आपके "नियम" स्ट्रिंग के रूप में.

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" के बारे में बताता है और आपके "नियम" स्ट्रिंग के रूप में.

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