ইন্টারেক্টিভভাবে ফাংশন পরীক্ষা করুন

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

অ্যাডমিন শংসাপত্র সেট আপ করুন (ঐচ্ছিক)

যদি আপনি চান যে আপনার ফাংশন পরীক্ষাগুলি Firebase Admin SDK এর মাধ্যমে Google API বা অন্যান্য Firebase API-এর সাথে ইন্টারঅ্যাক্ট করুক, তাহলে আপনাকে অ্যাডমিন শংসাপত্র সেট আপ করতে হতে পারে।

  • Cloud Firestore এবং Realtime Database ট্রিগারগুলিতে ইতিমধ্যেই পর্যাপ্ত শংসাপত্র রয়েছে এবং অতিরিক্ত সেটআপের প্রয়োজন হয় না
  • অন্যান্য সকল API, যার মধ্যে রয়েছে Firebase API যেমন Authentication এবং FCM অথবা Google API যেমন Cloud Translation বা Cloud Speech, এই বিভাগে বর্ণিত সেটআপ ধাপগুলি প্রয়োজন। আপনি Cloud Functions শেল ব্যবহার করুন অথবা firebase emulators:start ব্যবহার করুন, এটি প্রযোজ্য।

অনুকরণ করা ফাংশনের জন্য অ্যাডমিন ক্রেডেনশিয়াল সেট আপ করতে:

  1. Google Cloud কনসোলের সার্ভিস অ্যাকাউন্টস প্যানটি খুলুন।
  2. নিশ্চিত করুন যে App Engine ডিফল্ট পরিষেবা অ্যাকাউন্ট নির্বাচন করা আছে, এবং ডানদিকে বিকল্প মেনু ব্যবহার করে Create key নির্বাচন করুন।
  3. অনুরোধ করা হলে, কী টাইপের জন্য JSON নির্বাচন করুন এবং Create এ ক্লিক করুন।
  4. আপনার Google ডিফল্ট শংসাপত্রগুলি ডাউনলোড করা কী-এর দিকে নির্দেশ করতে সেট করুন:

    ইউনিক্স

    export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase functions:shell 

    জানালা

    set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase functions:shell 

এই ধাপগুলি সম্পন্ন করার পর, আপনার ফাংশন পরীক্ষাগুলি Admin SDK ব্যবহার করে Firebase এবং Google API গুলি অ্যাক্সেস করতে পারবে। উদাহরণস্বরূপ, একটি Authentication ট্রিগার পরীক্ষা করার সময়, অনুকরণ করা ফাংশনটি admin.auth().getUserByEmail(email) কল করতে পারে।

ক্লাউড ফাংশন শেল ব্যবহার করে ফাংশন পরিবেশন করুন

ক্লাউড ফাংশন শেলটি সকল ধরণের ফাংশন ট্রিগারকে অনুকরণ করে একটি ইন্টারেক্টিভ শেল ব্যবহার করে যা পরীক্ষার ডেটা সহ ফাংশনগুলিকে আহ্বান করে। বিকল্পগুলি ফাংশনের ধরণ অনুসারে পরিবর্তিত হয়, তবে মৌলিক ব্যবহারের ফর্ম্যাট হল:

myFunctionName(data, options) 

রিয়েলটাইম ডেটাবেস, ক্লাউড ফায়ারস্টোর এবং পাবসাব ট্রিগারের জন্য data প্যারামিটারটি প্রয়োজন, এবং অন্যান্য সমস্ত ফাংশন ধরণের জন্য ঐচ্ছিক। এছাড়াও, ঐচ্ছিক options প্যারামিটারটি কেবল রিয়েলটাইম ডেটাবেস এবং ক্লাউড ফায়ারস্টোর ফাংশনের জন্য বৈধ।

ঐচ্ছিকভাবে, আপনি একটি স্থানীয় ফাইল থেকে পরীক্ষামূলক ডেটা লোড করতে পারেন ফাইলটিকে একটি ভেরিয়েবল হিসেবে সংরক্ষণ করে এবং এটি দিয়ে একটি ফাংশন চালু করে:

var data = require('./path/to/testData.json'); myFunction(data); 

ক্লাউড ফাংশন শেল ইনস্টল এবং কনফিগার করুন

এই বৈশিষ্ট্যটি ব্যবহার করার জন্য, firebase-tools ন্যূনতম সংস্করণ 3.11.0 এবং firebase-functions SDK-এর ন্যূনতম সংস্করণ 0.6.2 থাকতে হবে। উভয় আপডেট করতে, আপনার প্রকল্পের functions/ ডিরেক্টরিতে নিম্নলিখিত কমান্ডগুলি চালান:

npm install --save firebase-functions@latest npm install -g firebase-tools 

যদি আপনি কাস্টম ফাংশন কনফিগারেশন ভেরিয়েবল ব্যবহার করেন, তাহলে প্রথমে আপনার স্থানীয় পরিবেশে আপনার কাস্টম কনফিগারেশন ( functions ডিরেক্টরির মধ্যে এটি চালান) পেতে কমান্ডটি চালান:

firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json 

অবশেষে, নিম্নলিখিত কমান্ডটি দিয়ে শেলটি চালান:

firebase functions:shell 

HTTPS ফাংশন চালু করুন

শেলে HTTPS ফাংশন চালু করার জন্য, request NPM মডিউলের মতোই ব্যবহার করা হবে, তবে request পরিবর্তে আপনি যে ফাংশনটি অনুকরণ করতে চান তার নাম লিখুন। উদাহরণস্বরূপ:

# invoke myHttpsFunction() myHttpsFunction.get() myHttpsFunction.post()  # invoke at sub-path myHttpsFunction('/path') myHttpsFunction.get('/path') myHttpsFunction.post('/path')  # send POST request with form data myHttpsFunction.post('/path').form( {foo: 'bar' }) 

HTTPS কলযোগ্য ফাংশন চালু করুন

স্থানীয়ভাবে HTTPS কলযোগ্য ফাংশন ব্যবহার করার সময়, আপনাকে উপযুক্ত পরীক্ষার ডেটা প্রদান করতে হবে।

# invoke myCallableFunction('test data') myCallableFunction({'foo': 'bar'}) 

ঐচ্ছিকভাবে, আপনি দ্বিতীয় প্যারামিটার হিসেবে একটি Firebase-Instance-ID-token প্রবেশ করাতে পারেন। এটি অবশ্যই একটি স্ট্রিং হতে হবে।

# invoke with FCM registration token myCallableFunction('test data', {instanceIdToken: 'sample token'}) 

context.auth এর অনুকরণ বর্তমানে অনুপলব্ধ।

রিয়েলটাইম ডাটাবেস ফাংশন চালু করুন

স্থানীয়ভাবে রিয়েলটাইম ডেটাবেস ফাংশন চালানোর সময়, আপনাকে উপযুক্ত পরীক্ষার ডেটা সরবরাহ করতে হবে। এর অর্থ সাধারণত onCreate অপারেশনের জন্য নতুন পরীক্ষার ডেটা, onDelete অপারেশনের জন্য পুরানো/সরানো ডেটা এবং onUpdate বা onWrite ফাংশন উভয়ের জন্যই:

# invoke onCreate function myDatabaseFunction('new_data')  # invoke onDelete function myDatabaseFunction('old_data')  # invoke onUpdate or onWrite function myDatabaseFunction({before: 'old_data', after: 'new_data' }) 

before/after বিকল্পগুলি ছাড়াও, শেলটি একটি পাথে ওয়াইল্ডকার্ড মকিং করার জন্য params বিকল্পটি প্রদান করে:

# mock wildcards in path, for example: if the path was input/{group}/{id} myDatabaseFunction('data', {params: {group: 'a', id: 123}}) 

ডিফল্টরূপে, শেলটি অ্যাডমিন (সার্ভিস অ্যাকাউন্ট) সুবিধা সহ রিয়েলটাইম ডেটাবেস ফাংশন চালায়। একটি নির্দিষ্ট শেষ ব্যবহারকারী হিসাবে, অথবা একটি অপ্রমাণিত ব্যবহারকারী হিসাবে ফাংশন চালানোর জন্য auth বিকল্পটি ব্যবহার করুন:

# to mock unauthenticated user myDatabaseFunction('data', {authMode: 'USER'}) # to mock end user myDatabaseFunction('data', {auth: {uid: 'abcd'}}) 

ফায়ারস্টোর ফাংশন চালু করুন

স্থানীয়ভাবে Firestore ফাংশন চালানোর সময়, আপনাকে উপযুক্ত পরীক্ষার ডেটা সরবরাহ করতে হবে। এর অর্থ সাধারণত onCreate অপারেশনের জন্য নতুন পরীক্ষার ডেটা, onDelete অপারেশনের জন্য পুরানো/সরানো ডেটা এবং onUpdate বা onWrite ফাংশন উভয়ের জন্যই সরবরাহ করা হয়। মনে রাখবেন যে Firestore ডেটা অবশ্যই কী-মান জোড়া হতে হবে; সমর্থিত ডেটা প্রকার দেখুন।

# invoke onCreate function myFirestoreFunction({foo: ‘new’})  # invoke onDelete function myFirestoreFunction({foo: ‘old’})  # invoke onUpdate or onWrite function myFirestoreFunction({before: {foo: ‘old’}, after: {foo: ‘new’} }) 

data অবজেক্টের before/after ক্ষেত্রগুলি ছাড়াও, আপনি ডকুমেন্টের নামে ওয়াইল্ডকার্ড তৈরি করতে options অবজেক্টের params ক্ষেত্রগুলি ব্যবহার করতে পারেন:

# mock wildcards in document name, for example: if the name was input/{group}/{id} myFirestoreFunction({foo: ‘new’}, {params: {group: 'a', id: 123}}) 

শেলটি সর্বদা প্রশাসনিক সুবিধা সহ ফায়ারস্টোর ফাংশন চালায়, যার অর্থ এটি একটি তৈরি/আপডেট/মুছে ফেলার ইভেন্টকে এমনভাবে উপহাস করে যেন এটি কোনও প্রশাসনিক ব্যবহারকারী দ্বারা করা হয়েছে।

PubSub ফাংশন চালু করুন

PubSub ফাংশনের জন্য, আপনার মেসেজ পেলোডটি একটি Buffer ইনস্ট্যান্সে সন্নিবেশ করান এবং ঐচ্ছিকভাবে ডেটা অ্যাট্রিবিউট যোগ করুন যেমন দেখানো হয়েছে:

// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' } myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}}) 

অ্যানালিটিক্স ফাংশন চালু করুন

শেলে myAnalyticsFunction() রান করে আপনি কোনও ডেটা ছাড়াই একটি Analytics ফাংশন চালু করতে পারেন। টেস্ট ডেটা দিয়ে ফাংশনটি চালানোর জন্য, আপনার ফাংশনের প্রয়োজনীয় নির্দিষ্ট ইভেন্ট ডেটা ফিল্ডের জন্য একটি ভেরিয়েবল সংজ্ঞায়িত করার পরামর্শ দেওয়া হচ্ছে:

var data = {   eventDim: [{     // populates event.data.params     params: {foo: {stringValue: 'bar'} },     // Also valid:     //   {intValue: '10'}, {floatValue: '1.0'}, {doubleValue: '1.0'}     // populates event.data.name     name: 'event_name',     // populates event.data.logTime, specify in microseconds     timestampMicros: Date.now() * 1000,     // populates event.data.previousLogTime, specify in microseconds     previousTimestampMicros: Date.now() * 1000,     // populates event.data.reportingDate, specify in 'YYYYMMDD' format     date: '20170930',     // populates event.data.valueInUSD     valueInUsd: 230   }],   userDim: userDim };  myAnalyticsFunction(data); 

স্টোরেজ এবং প্রমাণীকরণ ফাংশন চালু করুন

স্টোরেজ এবং Auth ফাংশনের জন্য, ফাংশনের ভিতরে আপনি যে টেস্ট ডেটা দেখতে চান তার সাথে স্থানীয় ফাংশনটি চালু করুন। আপনার টেস্ট ডেটা অবশ্যই সংশ্লিষ্ট ডেটা ফর্ম্যাট অনুসরণ করবে:

আপনার কোড যে ক্ষেত্রগুলির উপর নির্ভর করে কেবল সেগুলি নির্দিষ্ট করুন, অথবা যদি আপনি কেবল ফাংশনটি চালাতে চান তবে কোনওটিই উল্লেখ করবেন না।