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

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 इंस्टेंस का इस्तेमाल, Client SDK API (मॉड्युलर या नेमस्पेस किया गया वर्शन 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 ऐप्लिकेशन दिखाता है नाम के विकल्प में बताया गया है. यह ऐप्लिकेशन पढ़ते समय और बकेट में लिखने के लिए.

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 टेस्ट 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 ऐप्लिकेशन दिखाता है नाम के विकल्प में बताया गया है. यह ऐप्लिकेशन पढ़ते समय और बकेट में लिखने के लिए.

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