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

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

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

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

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

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

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

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

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

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

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

Firebase এর সংস্করণ 9 JavaScript SDK এবং এর সংস্করণ 8 SDK উভয়ের সাথে একটি নিরাপত্তা নিয়ম ইউনিট পরীক্ষার লাইব্রেরি বিতরণ করে। লাইব্রেরি এপিআই উল্লেখযোগ্যভাবে ভিন্ন। আমরা v9 টেস্টিং লাইব্রেরির সুপারিশ করি, যেটি আরও সুবিন্যস্ত এবং এমুলেটরগুলির সাথে সংযোগ করার জন্য কম সেটআপের প্রয়োজন হয় এবং এইভাবে নিরাপদে উত্পাদন সংস্থানগুলির দুর্ঘটনাজনিত ব্যবহার এড়ানো যায়। পিছনের সামঞ্জস্যের জন্য, আমরা v8 টেস্টিং লাইব্রেরি উপলব্ধ করা চালিয়ে যাচ্ছি।

স্থানীয়ভাবে চলা এমুলেটরের সাথে ইন্টারঅ্যাক্ট করতে @firebase/rules-unit-testing মডিউল ব্যবহার করুন। আপনি যদি টাইমআউট বা ECONNREFUSED ত্রুটি পান, তাহলে এমুলেটরটি আসলে চলছে কিনা তা দুবার চেক করুন।

আমরা দৃঢ়ভাবে Node.js এর একটি সাম্প্রতিক সংস্করণ ব্যবহার করার পরামর্শ দিই যাতে আপনি async/await notation ব্যবহার করতে পারেন। আপনি পরীক্ষা করতে চান এমন প্রায় সমস্ত আচরণের মধ্যে অ্যাসিঙ্ক্রোনাস ফাংশন জড়িত, এবং টেস্টিং মডিউলটি প্রতিশ্রুতি-ভিত্তিক কোডের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে।

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(), '/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>

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

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

এই পদ্ধতিটি এই পরীক্ষার প্রসঙ্গের জন্য একটি Firestore উদাহরণ পায়। ফিরে আসা Firebase JS ক্লায়েন্ট SDK উদাহরণটি ক্লায়েন্ট SDK APIs (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 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 টেস্ট 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

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

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

আপনার ডাটাবেসের নিয়ম সেট করতে এটি ব্যবহার করুন।

স্থানীয়ভাবে চলমান ডাটাবেসে নিয়ম পাঠায়। একটি অপশন অবজেক্ট নেয় যা আপনার "ডাটাবেসের নাম" এবং আপনার "নিয়ম" স্ট্রিং হিসাবে নির্দিষ্ট করে।

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 টেস্ট 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

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

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

আপনার ডাটাবেসের নিয়ম সেট করতে এটি ব্যবহার করুন।

স্থানীয়ভাবে চলমান ডাটাবেসে নিয়ম পাঠায়। একটি অপশন অবজেক্ট নেয় যা আপনার "ডাটাবেসের নাম" এবং আপনার "নিয়ম" স্ট্রিং হিসাবে নির্দিষ্ট করে।

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