ইউনিট পরীক্ষা তৈরি করুন

Firebase Local Emulator Suite আপনার অ্যাপের বৈশিষ্ট্য এবং আচরণ সম্পূর্ণরূপে যাচাই করা সহজ করে তোলে। এটি আপনার Firebase Security Rules কনফিগারেশন যাচাই করার জন্যও একটি দুর্দান্ত হাতিয়ার। স্থানীয় পরিবেশে ইউনিট পরীক্ষা চালানো এবং স্বয়ংক্রিয় করার জন্য Firebase Emulators ব্যবহার করুন। এই নথিতে বর্ণিত পদ্ধতিগুলি আপনার অ্যাপের জন্য ইউনিট পরীক্ষা তৈরি এবং স্বয়ংক্রিয় করার সময় আপনাকে সাহায্য করবে যা আপনার Rules যাচাই করে।

যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে Firebase Emulators সেট আপ করুন

এমুলেটর চালানোর আগে

এমুলেটর ব্যবহার শুরু করার আগে, নিম্নলিখিত বিষয়গুলি মনে রাখবেন:

  • এমুলেটরটি প্রাথমিকভাবে আপনার firebase.json ফাইলের firestore.rules অথবা storage.rules ক্ষেত্রে উল্লেখিত নিয়মগুলি লোড করবে। যদি ফাইলটি বিদ্যমান না থাকে এবং আপনি নীচে বর্ণিত loadFirestoreRules অথবা loadStorageRules পদ্ধতি ব্যবহার না করেন, তাহলে এমুলেটরটি সমস্ত প্রকল্পকে খোলা নিয়ম হিসাবে বিবেচনা করে।
  • যদিও বেশিরভাগ Firebase SDK সরাসরি এমুলেটরগুলির সাথে কাজ করে, শুধুমাত্র @firebase/rules-unit-testing লাইব্রেরি নিরাপত্তা নিয়মে মকিং auth সমর্থন করে, যা ইউনিট পরীক্ষাগুলিকে অনেক সহজ করে তোলে। এছাড়াও, লাইব্রেরি নীচে তালিকাভুক্ত সমস্ত ডেটা সাফ করার মতো কয়েকটি এমুলেটর-নির্দিষ্ট বৈশিষ্ট্য সমর্থন করে।
  • এমুলেটরগুলি ক্লায়েন্ট SDK-এর মাধ্যমে প্রদত্ত প্রোডাকশন ফায়ারবেস অথ টোকেনগুলিও গ্রহণ করবে এবং সেই অনুযায়ী নিয়মগুলি মূল্যায়ন করবে, যা ইন্টিগ্রেশন এবং ম্যানুয়াল পরীক্ষায় আপনার অ্যাপ্লিকেশনটিকে সরাসরি এমুলেটরগুলির সাথে সংযুক্ত করার অনুমতি দেয়।

ডাটাবেস এমুলেটর এবং উৎপাদনের মধ্যে পার্থক্য

  • আপনাকে স্পষ্টভাবে একটি ডাটাবেস ইনস্ট্যান্স তৈরি করতে হবে না। এমুলেটরটি স্বয়ংক্রিয়ভাবে অ্যাক্সেস করা যেকোনো ডাটাবেস ইনস্ট্যান্স তৈরি করবে।
  • প্রতিটি নতুন ডাটাবেস বন্ধ নিয়ম দিয়ে শুরু হয়, তাই অ-অ্যাডমিন ব্যবহারকারীরা পড়তে বা লিখতে সক্ষম হবেন না।
  • প্রতিটি এমুলেটেড ডাটাবেস স্পার্ক প্ল্যান সীমা এবং কোটা প্রয়োগ করে (সবচেয়ে উল্লেখযোগ্যভাবে, এটি প্রতিটি ইনস্ট্যান্সকে 100টি সমসাময়িক সংযোগের মধ্যে সীমাবদ্ধ করে)।
  • যেকোনো ডাটাবেস "owner" স্ট্রিংটিকে অ্যাডমিন প্রমাণীকরণ টোকেন হিসেবে গ্রহণ করবে।
  • এমুলেটরগুলির বর্তমানে অন্যান্য Firebase পণ্যের সাথে কার্যকরী ইন্টারঅ্যাকশন নেই। উল্লেখযোগ্যভাবে, স্বাভাবিক Firebase প্রমাণীকরণ প্রবাহ কাজ করে না। পরিবর্তে, আপনি rules-unit-testing লাইব্রেরিতে initializeTestApp() পদ্ধতি ব্যবহার করতে পারেন, যা একটি auth ক্ষেত্র নেয়। এই পদ্ধতি ব্যবহার করে তৈরি করা Firebase অবজেক্টটি এমন আচরণ করে যেন এটি আপনার প্রদত্ত যেকোনো সত্তা হিসাবে সফলভাবে প্রমাণীকরণ করা হয়েছে। আপনি যদি null পাস করেন, তাহলে এটি একটি অপ্রমাণিত ব্যবহারকারী হিসাবে আচরণ করবে (উদাহরণস্বরূপ, auth != null নিয়ম ব্যর্থ হবে)।

Realtime Database এমুলেটরের সাথে ইন্টারঅ্যাক্ট করা

একটি প্রোডাকশন ফায়ারবেস 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>

৯ নম্বর ভার্সন জাভাস্ক্রিপ্ট SDK ব্যবহার করে স্থানীয় ইউনিট পরীক্ষা চালান

Firebase তার সংস্করণ 9 JavaScript SDK এবং সংস্করণ 8 SDK উভয়ের সাথে একটি নিরাপত্তা নিয়ম ইউনিট টেস্টিং লাইব্রেরি বিতরণ করে। লাইব্রেরি API গুলি উল্লেখযোগ্যভাবে আলাদা। আমরা 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 ব্যবহার করে প্রমাণীকরণের অবস্থা অনুকরণ করে এমন পরীক্ষার কেস বাস্তবায়ন করা।

সাধারণ পদ্ধতি এবং ইউটিলিটি ফাংশন

মডুলার API ব্যবহার করে এমুলেটর-নির্দিষ্ট পরীক্ষা পদ্ধতিগুলিও দেখুন।

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

এমন একটি কনটেক্সট সহ একটি টেস্ট সেটআপ ফাংশন চালান যা এমন আচরণ করে যেন নিরাপত্তা নিয়মগুলি অক্ষম করা হয়েছে।

এই পদ্ধতিটি একটি কলব্যাক ফাংশন গ্রহণ করে, যা সুরক্ষা-নিয়ম-বাইপাসিং প্রসঙ্গ গ্রহণ করে এবং একটি প্রতিশ্রুতি প্রদান করে। প্রতিশ্রুতি সমাধান / প্রত্যাখ্যান করার পরে প্রসঙ্গটি ধ্বংস হয়ে যাবে।

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'), { ... });

এমুলেটর-নির্দিষ্ট পদ্ধতি

মডুলার API ব্যবহার করে সাধারণ পরীক্ষা পদ্ধতি এবং ইউটিলিটি ফাংশনগুলিও দেখুন।

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

এই পদ্ধতিটি ফায়ারস্টোর ডাটাবেসের ডেটা সাফ করে যা ফায়ারস্টোর এমুলেটরের জন্য কনফিগার করা projectId অন্তর্গত।

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

এই পদ্ধতিটি এই পরীক্ষার প্রেক্ষাপটের জন্য একটি Firestore ইনস্ট্যান্স পায়। ফিরে আসা Firebase JS ক্লায়েন্ট SDK ইনস্ট্যান্সটি ক্লায়েন্ট SDK API (v9 মডুলার বা v9 compat) এর সাথে ব্যবহার করা যেতে পারে।

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 API গুলির সাথে ব্যবহার করা যেতে পারে (মডুলার বা নেমস্পেসড, সংস্করণ 9 বা তার বেশি)। পদ্ধতিটি রিয়েলটাইম ডেটাবেস ইনস্ট্যান্সের একটি URL গ্রহণ করে। যদি নির্দিষ্ট করা থাকে, তাহলে URL থেকে নিষ্কাশিত প্যারামিটার সহ নেমস্পেসের একটি অনুকরণ করা সংস্করণের জন্য একটি ইনস্ট্যান্স ফেরত দেয়।

Cloud Storage

Cloud Storage

RulesTestEnvironment.clearStorage() => Promise<void>

এই পদ্ধতিটি Cloud Storage এমুলেটরের জন্য কনফিগার করা projectId স্টোরেজ বাকেটের অবজেক্ট এবং মেটাডেটা সাফ করে।

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

এই পদ্ধতিটি এমুলেটরের সাথে সংযোগ স্থাপনের জন্য কনফিগার করা একটি স্টোরেজ ইনস্ট্যান্স ফেরত পাঠায়। পদ্ধতিটি পরীক্ষার জন্য Firebase স্টোরেজ বাকেটে একটি gs:// url গ্রহণ করে। যদি নির্দিষ্ট করা থাকে, তাহলে বাকেট নামের একটি এমুলেটেড সংস্করণের জন্য একটি স্টোরেজ ইনস্ট্যান্স ফেরত পাঠায়।

v8 JavaScript SDK দিয়ে স্থানীয় ইউনিট পরীক্ষা চালান

এমুলেটরের সাথে ইন্টারফেস করার জন্য Firebase Test SDK দ্বারা ব্যবহৃত পদ্ধতিগুলি দেখতে একটি পণ্য নির্বাচন করুন।

Cloud Firestore

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

এই পদ্ধতিটি বিকল্পগুলিতে উল্লেখিত প্রকল্প আইডি এবং প্রমাণীকরণ ভেরিয়েবলের সাথে সম্পর্কিত একটি প্রাথমিক ফায়ারবেস অ্যাপ প্রদান করে। পরীক্ষায় ব্যবহারের জন্য একটি নির্দিষ্ট ব্যবহারকারী হিসাবে প্রমাণীকরণ করা একটি অ্যাপ তৈরি করতে এটি ব্যবহার করুন।

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

এই পদ্ধতিটি একটি প্রাথমিক অ্যাডমিন ফায়ারবেস অ্যাপ ফেরত দেয়। এই অ্যাপটি পঠন এবং লেখার সময় নিরাপত্তা নিয়মগুলিকে এড়িয়ে যায়। পরীক্ষার জন্য অবস্থা নির্ধারণ করতে অ্যাডমিন হিসাবে প্রমাণিত একটি অ্যাপ তৈরি করতে এটি ব্যবহার করুন।

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

এই পদ্ধতিটি স্থানীয়ভাবে চলমান ফায়ারস্টোর ইনস্ট্যান্সে একটি নির্দিষ্ট প্রকল্পের সাথে সম্পর্কিত সমস্ত ডেটা সাফ করে। পরীক্ষার পরে পরিষ্কার করার জন্য এই পদ্ধতিটি ব্যবহার করুন।

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Realtime Database

Realtime Database

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

পরীক্ষায় ব্যবহারের জন্য একটি নির্দিষ্ট ব্যবহারকারী হিসেবে প্রমাণিত একটি অ্যাপ তৈরি করতে এটি ব্যবহার করুন।

বিকল্পগুলিতে উল্লেখিত ডাটাবেসের নাম এবং প্রমাণীকরণ ভেরিয়েবল ওভাররাইডের সাথে সম্পর্কিত একটি প্রাথমিক ফায়ারবেস অ্যাপ প্রদান করে।

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

পরীক্ষার জন্য অবস্থা সেট আপ করার জন্য অ্যাডমিন হিসেবে প্রমাণিত একটি অ্যাপ তৈরি করতে এটি ব্যবহার করুন।

অপশনে উল্লেখিত ডাটাবেস নামের সাথে সম্পর্কিত একটি প্রাথমিক অ্যাডমিন ফায়ারবেস অ্যাপ ফেরত পাঠায়। ডাটাবেসে পড়ার এবং লেখার সময় এই অ্যাপটি নিরাপত্তা নিয়মগুলিকে বাইপাস করে।

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]

বর্তমানে শুরু করা সমস্ত পরীক্ষা এবং অ্যাডমিন অ্যাপ ফেরত দেয়।

পরীক্ষার মধ্যে বা পরে অ্যাপগুলি পরিষ্কার করতে এটি ব্যবহার করুন (মনে রাখবেন যে সক্রিয় শ্রোতা সহ প্রাথমিক অ্যাপগুলি জাভাস্ক্রিপ্ট থেকে বেরিয়ে আসতে বাধা দেয়):

 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.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]

বর্তমানে শুরু করা সমস্ত পরীক্ষা এবং অ্যাডমিন অ্যাপ ফেরত দেয়।

পরীক্ষার মধ্যে বা পরে অ্যাপগুলি পরিষ্কার করতে এটি ব্যবহার করুন (মনে রাখবেন যে সক্রিয় শ্রোতা সহ প্রাথমিক অ্যাপগুলি জাভাস্ক্রিপ্ট থেকে বেরিয়ে আসতে বাধা দেয়):

 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

এই পদ্ধতিটি বিকল্পগুলিতে উল্লেখিত প্রকল্প আইডি এবং প্রমাণীকরণ ভেরিয়েবলের সাথে সম্পর্কিত একটি প্রাথমিক ফায়ারবেস অ্যাপ প্রদান করে। পরীক্ষায় ব্যবহারের জন্য একটি নির্দিষ্ট ব্যবহারকারী হিসাবে প্রমাণীকরণ করা একটি অ্যাপ তৈরি করতে এটি ব্যবহার করুন।

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

এই পদ্ধতিটি একটি প্রাথমিক অ্যাডমিন ফায়ারবেস অ্যাপ ফেরত দেয়। এই অ্যাপটি পঠন এবং লেখার সময় নিরাপত্তা নিয়মগুলিকে এড়িয়ে যায়। পরীক্ষার জন্য অবস্থা নির্ধারণ করতে অ্যাডমিন হিসাবে প্রমাণিত একটি অ্যাপ তৈরি করতে এটি ব্যবহার করুন।

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

এই পদ্ধতিটি স্থানীয়ভাবে চলমান ফায়ারস্টোর ইনস্ট্যান্সে একটি নির্দিষ্ট প্রকল্পের সাথে সম্পর্কিত সমস্ত ডেটা সাফ করে। পরীক্ষার পরে পরিষ্কার করার জন্য এই পদ্ধতিটি ব্যবহার করুন।

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

Realtime Database

Realtime Database

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

পরীক্ষায় ব্যবহারের জন্য একটি নির্দিষ্ট ব্যবহারকারী হিসেবে প্রমাণিত একটি অ্যাপ তৈরি করতে এটি ব্যবহার করুন।

বিকল্পগুলিতে উল্লেখিত ডাটাবেসের নাম এবং প্রমাণীকরণ ভেরিয়েবল ওভাররাইডের সাথে সম্পর্কিত একটি প্রাথমিক ফায়ারবেস অ্যাপ প্রদান করে।

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

পরীক্ষার জন্য অবস্থা সেট আপ করার জন্য অ্যাডমিন হিসেবে প্রমাণিত একটি অ্যাপ তৈরি করতে এটি ব্যবহার করুন।

অপশনে উল্লেখিত ডাটাবেস নামের সাথে সম্পর্কিত একটি প্রাথমিক অ্যাডমিন ফায়ারবেস অ্যাপ ফেরত পাঠায়। ডাটাবেসে পড়ার এবং লেখার সময় এই অ্যাপটি নিরাপত্তা নিয়মগুলিকে বাইপাস করে।

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]

বর্তমানে শুরু করা সমস্ত পরীক্ষা এবং অ্যাডমিন অ্যাপ ফেরত দেয়।

পরীক্ষার মধ্যে বা পরে অ্যাপগুলি পরিষ্কার করতে এটি ব্যবহার করুন (মনে রাখবেন যে সক্রিয় শ্রোতা সহ প্রাথমিক অ্যাপগুলি জাভাস্ক্রিপ্ট থেকে বেরিয়ে আসতে বাধা দেয়):

 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.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]

বর্তমানে শুরু করা সমস্ত পরীক্ষা এবং অ্যাডমিন অ্যাপ ফেরত দেয়।

পরীক্ষার মধ্যে বা পরে অ্যাপগুলি পরিষ্কার করতে এটি ব্যবহার করুন (মনে রাখবেন যে সক্রিয় শ্রোতা সহ প্রাথমিক অ্যাপগুলি জাভাস্ক্রিপ্ট থেকে বেরিয়ে আসতে বাধা দেয়):

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