रूल-यूनिट-टेस्टिंग पैकेज

फ़ंक्शन

फ़ंक्शन ब्यौरा
asrtFails(pr) "अनुमति अस्वीकार" की मदद से, वादे को अस्वीकार करने का दावा करें गड़बड़ी.किसी ऐसे अनुरोध पर दावा करने में मदद मिलती है जिसे सुरक्षा के नियम स्वीकार नहीं करते. उदाहरण देखें. यह फ़ंक्शन, डेटाबेस, Firestore, और स्टोरेज JS SDK से मिली उन गड़बड़ियों की पहचान करता है जिनकी अनुमति नहीं है.
asrtSucceeds(pr) "अनुमति अस्वीकार" की मदद से, वादे को अस्वीकार करने का दावा करें गड़बड़ी.यह एक नो-ऑप फ़ंक्शन है, जो पास किए गए प्रॉमिस को वैसे ही दिखाता है, लेकिन इसका इस्तेमाल टेस्ट कोड में दस्तावेज़ के मकसद से किया जा सकता है. इससे इस बात पर ज़ोर दिया जा सकता है कि कोई खास अनुरोध पूरा होना चाहिए (उदाहरण के लिए, नियमों के तहत अनुमति दी गई).
initializeTestEnvironment(config) नियमों की यूनिट की जांच करने के लिए, टेस्ट एनवायरमेंट को शुरू करता है. टेस्ट सेटअप के लिए, पहले इस फ़ंक्शन को कॉल करें.इसके लिए, एम्युलेटर का इस्तेमाल करना ज़रूरी है. यह फ़ंक्शन, एनवायरमेंट वैरिएबल या Firebase एम्युलेटर हब के ज़रिए उन एम्युलेटर को खोजने की कोशिश करता है. ऐसा तब होता है, जब होस्ट और पोर्ट की जानकारी न दी गई हो. हमारा सुझाव है कि टेस्टिंग के लिए इस्तेमाल किए जाने वाले एम्युलेटर के लिए, सुरक्षा से जुड़े नियम तय करें. नीचे कम से कम उदाहरण देखें.
withFunctionTriggersDisabled(fn) ऐसा सेटअप फ़ंक्शन चलाएं जिसमें बैकग्राउंड में Cloud Functions ट्रिगर होने की सुविधा बंद हो. इसका इस्तेमाल रीयल टाइम डेटाबेस या Cloud Firestore एम्युलेटर में डेटा इंपोर्ट करने के लिए किया जा सकता है. ऐसा, स्थानीय तौर पर एम्युलेट किए गए Cloud Functions को ट्रिगर किए बिना किया जा सकता है.यह तरीका सिर्फ़ Firebase सीएलआई के 8.13.0 या इसके बाद के वर्शन के साथ काम करता है. यह ओवरलोड सिर्फ़ तब काम करता है, जब एम्युलेटर हब होस्ट:पोर्ट को एनवायरमेंट वैरिएबल FIREBASE_EMULATOR_HUB से तय किया गया हो.
withFunctionTriggersPaused(Hub, fn) ऐसा सेटअप फ़ंक्शन चलाएं जिसमें बैकग्राउंड में Cloud Functions ट्रिगर होने की सुविधा बंद हो. इसका इस्तेमाल रीयल टाइम डेटाबेस या Cloud Firestore एम्युलेटर में डेटा इंपोर्ट करने के लिए किया जा सकता है. ऐसा, स्थानीय तौर पर एम्युलेट किए गए Cloud Functions को ट्रिगर किए बिना किया जा सकता है.यह तरीका सिर्फ़ Firebase सीएलआई के 8.13.0 या इसके बाद के वर्शन के साथ काम करता है. एम्युलेटर हब का इस्तेमाल करना ज़रूरी है, जो इस ओवरलोड में होस्ट और पोर्ट की जानकारी देता है.

इंटरफ़ेस

इंटरफ़ेस ब्यौरा
होस्टऐंडपोर्ट एक ऑब्जेक्ट, जिसमें एम्युलेटर का होस्टनेम और पोर्ट नंबर शामिल है.
RulesTestContext टेस्ट का वह कॉन्टेक्स्ट जो क्लाइंट के बारे में बताता है. नियमों की यूनिट की जांच करने के लिए, एम्युलेटर को ऐक्सेस करने के लिए इसका इस्तेमाल किया जा सकता है.
RulesTestEnvironment नियमों की यूनिट के टेस्ट एनवायरमेंट को कंट्रोल करने के लिए इस्तेमाल किया जाने वाला ऑब्जेक्ट. इसका इस्तेमाल पुष्टि करने की अलग-अलग स्थितियों के लिए,RuleTestContext बनाने में किया जा सकता है.
TestEnvironmentConfig एम्युलेटर के साथ-साथ यूनिट टेस्टिंग एनवायरमेंट का कॉन्फ़िगरेशन.

उपनामों का प्रकार

उपनाम टाइप करें ब्यौरा
EmulatorConfig दिए गए एम्युलेटर के लिए कॉन्फ़िगरेशन.
टोकन के विकल्प टेस्टिंग के लिए इस्तेमाल होने वाले मॉक उपयोगकर्ता टोकन के ज़्यादा विकल्प. इनमें, डेवलपर के तय किए गए कस्टम दावे या Firebase पुष्टि टोकन पेलोड के लिए वैकल्पिक बदलाव शामिल हैं.

{/7}Fails()

"अनुमति अस्वीकार" की मदद से, वादे को अस्वीकार करने का दावा करें गड़बड़ी.

इससे किसी खास अनुरोध पर, सुरक्षा के नियमों के तहत दावा करने में मदद मिलती है. उदाहरण देखें. यह फ़ंक्शन, डेटाबेस, Firestore, और स्टोरेज JS SDK से मिली उन गड़बड़ियों की पहचान करता है जिनकी अनुमति नहीं है.

हस्ताक्षर:

export declare function assertFails(pr: Promise<any>): Promise<any>;

पैरामीटर

पैरामीटर टाइप ब्यौरा
पीआर वादा करें<किसी भी> दावा किए जाने का वादा

लौटाए जाने वाले प्रॉडक्ट:

वादा करें<किसी भी>

ऐसा प्रॉमिस जिसे तब पूरा किया जाता है, जब पीआर को "अनुमति नहीं मिली" के साथ अस्वीकार किया जाता है. अगर पीआर को किसी दूसरी गड़बड़ी की वजह से अस्वीकार कर दिया जाता है या ठीक कर दिया जाता है, तो वापस किया गया प्रॉमिस अस्वीकार हो जाएगा.

उदाहरण

const unauthed = testEnv.unauthenticatedContext();
await assertFails(getDoc(unauthed.firestore(), '/private/doc'), { ... });

AttributionSucceeds()

सफल होने का वादा करें.

यह एक नो-ऑप फ़ंक्शन है, जो पास किए गए प्रॉमिस को वैसे ही दिखाता है.हालांकि, इसका इस्तेमाल टेस्ट कोड में दस्तावेज़ के लिए किया जा सकता है. इससे इस बात पर ज़ोर दिया जा सकता है कि कोई खास अनुरोध पूरा होना चाहिए (उदाहरण के लिए, नियमों के तहत अनुमति दी गई).

हस्ताक्षर:

export declare function assertSucceeds<T>(pr: Promise<T>): Promise<T>;

पैरामीटर

पैरामीटर टाइप ब्यौरा
पीआर वादा<T>

लौटाए जाने वाले प्रॉडक्ट:

वादा<T>

उदाहरण

const alice = testEnv.authenticatedContext('alice');
await assertSucceeds(getDoc(alice.firestore(), '/doc/readable/by/alice'), { ... });

इनिशलाइज़टेस्ट एनवायरमेंट()

नियमों की यूनिट की जांच करने के लिए, टेस्ट एनवायरमेंट को शुरू करता है. परीक्षण सेटअप के लिए पहले इस फ़ंक्शन को कॉल करें.

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

हस्ताक्षर:

export declare function initializeTestEnvironment(config: TestEnvironmentConfig): Promise<RulesTestEnvironment>;

पैरामीटर

पैरामीटर टाइप ब्यौरा
कॉन्फ़िगरेशन TestEnvironmentConfig एम्युलेटर के लिए कॉन्फ़िगरेशन. ज़्यादातर फ़ील्ड वैकल्पिक होते हैं, अगर उन्हें खोजा जा सकता है

लौटाए जाने वाले प्रॉडक्ट:

वादा<RulesTestEnvironment>

ऐसा प्रॉमिस जो जांच के लिए तैयार एनवायरमेंट में पूरा होता है या गड़बड़ी होने पर अस्वीकार हो जाता है.

उदाहरण

const testEnv = await initializeTestEnvironment({
  firestore: {
    rules: fs.readFileSync("/path/to/firestore.rules", "utf8"), // Load rules from file
    // host and port can be omitted if they can be discovered from the hub.
  },
  // ...
});

withFunctionTriggersShowd()

ऐसा सेटअप फ़ंक्शन चलाएं जिसमें बैकग्राउंड में Cloud Functions ट्रिगर होने की सुविधा बंद हो. इसका इस्तेमाल रीयलटाइम डेटाबेस या Cloud Firestore एम्युलेटर में डेटा इंपोर्ट करने के लिए किया जा सकता है. ऐसा स्थानीय रूप से एम्युलेट किए गए Cloud फ़ंक्शन को ट्रिगर किए बिना किया जा सकता है.

यह तरीका, Firebase सीएलआई के 8.13.0 या इसके बाद वाले वर्शन के साथ ही काम करता है. यह ओवरलोड सिर्फ़ तब काम करता है, जब एम्युलेटर हब होस्ट:पोर्ट को एनवायरमेंट वैरिएबल FIREBASE_EMULATOR_HUB से तय किया गया हो.

हस्ताक्षर:

export declare function withFunctionTriggersDisabled<TResult>(fn: () => TResult | Promise<TResult>): Promise<TResult>;

पैरामीटर

पैरामीटर टाइप ब्यौरा
एफ़एन () => नतीजा | प्रॉमिस<Tनतीजे> फ़ंक्शन जो सिंक हो सकता है या एक साथ काम नहीं करेगा (प्रॉमिस दिखाता है)

लौटाए जाने वाले प्रॉडक्ट:

प्रॉमिस<Tनतीजे>

withFunctionTriggersShowd()

ऐसा सेटअप फ़ंक्शन चलाएं जिसमें बैकग्राउंड में Cloud Functions ट्रिगर होने की सुविधा बंद हो. इसका इस्तेमाल रीयलटाइम डेटाबेस या Cloud Firestore एम्युलेटर में डेटा इंपोर्ट करने के लिए किया जा सकता है. ऐसा स्थानीय रूप से एम्युलेट किए गए Cloud फ़ंक्शन को ट्रिगर किए बिना किया जा सकता है.

यह तरीका, Firebase सीएलआई के 8.13.0 या इसके बाद वाले वर्शन के साथ ही काम करता है. एम्युलेटर हब का इस्तेमाल करना ज़रूरी है, जो इस ओवरलोड में होस्ट और पोर्ट की जानकारी देता है.

हस्ताक्षर:

export declare function withFunctionTriggersDisabled<TResult>(hub: {
    host: string;
    port: number;
}, fn: () => TResult | Promise<TResult>): Promise<TResult>;

पैरामीटर

पैरामीटर टाइप ब्यौरा
Hub { होस्ट: स्ट्रिंग; पोर्ट: नंबर; } पर स्विच करने के मकसद से, हमसे संपर्क करने के लिए धन्यवाद. एम्युलेटर हब का होस्ट और पोर्ट (उदाहरण: {host: 'localhost', port: 4400})
एफ़एन () => नतीजा | प्रॉमिस<Tनतीजे> फ़ंक्शन जो सिंक हो सकता है या एक साथ काम नहीं करेगा (प्रॉमिस दिखाता है)

लौटाए जाने वाले प्रॉडक्ट:

प्रॉमिस<Tनतीजे>

एम्युलेटर कॉन्फ़िगरेशन

दिए गए एम्युलेटर के लिए कॉन्फ़िगरेशन.

हस्ताक्षर:

export declare type EmulatorConfig = {
    rules?: string;
} & (HostAndPort | {});

टोकन के विकल्प

टेस्टिंग के लिए इस्तेमाल होने वाले मॉक उपयोगकर्ता टोकन के ज़्यादा विकल्प. इनमें, डेवलपर के तय किए गए कस्टम दावे या Firebase पुष्टि टोकन पेलोड के लिए वैकल्पिक बदलाव शामिल हैं.

हस्ताक्षर:

export declare type TokenOptions = {
    iat?: number;
    exp?: number;
    auth_time?: number;
    provider_id?: 'anonymous';
    email?: string;
    email_verified?: boolean;
    phone_number?: string;
    name?: string;
    picture?: string;
    firebase?: {
        sign_in_provider: FirebaseSignInProvider;
        identities?: {
            [provider in FirebaseSignInProvider]?: string[];
        };
    };
    aud?: string;
    iss?: string;
    [claim: string]: unknown;
    uid?: never;
    sub?: never;
    user_id?: never;
};