ক্লাউড ফাংশনস শেলটি টেস্ট ডেটা দিয়ে ফাংশন আহ্বান করার জন্য একটি ইন্টারেক্টিভ শেল প্রদান করে। এই শেলটি সকল প্রকার ট্রিগার সমর্থন করে।
অ্যাডমিন পরিচয়পত্র সেট করুন (ঐচ্ছিক)
আপনি যদি আপনার ফাংশন টেস্টগুলোকে Firebase Admin SDK- এর মাধ্যমে Google API বা অন্যান্য Firebase API-এর সাথে সংযুক্ত করতে চান, তাহলে আপনাকে অ্যাডমিন ক্রেডেনশিয়াল সেট আপ করতে হতে পারে।
- Cloud Firestore এবং Realtime Database ট্রিগারগুলিতে ইতিমধ্যেই পর্যাপ্ত ক্রেডেনশিয়াল রয়েছে, এবং এগুলোর জন্য অতিরিক্ত সেটআপের প্রয়োজন নেই ।
- ফায়ারবেস এপিআই (যেমন Authentication ও FCM বা গুগল এপিআই (যেমন ক্লাউড ট্রান্সলেশন বা ক্লাউড স্পিচ) সহ অন্যান্য সমস্ত এপিআই-এর জন্য এই বিভাগে বর্ণিত সেটআপ ধাপগুলি অনুসরণ করতে হবে। আপনি Cloud Functions শেল বা
firebase emulators:startব্যবহার করুন না কেন, এটি প্রযোজ্য।
অনুকৃত ফাংশনগুলির জন্য অ্যাডমিন পরিচয়পত্র সেট আপ করতে:
- Google Cloud কনসোলের সার্ভিস অ্যাকাউন্টস প্যানেটি খুলুন।
- নিশ্চিত করুন যে App Engine ডিফল্ট সার্ভিস অ্যাকাউন্টটি নির্বাচিত আছে, এবং ডানদিকের অপশন মেনু ব্যবহার করে ‘Create key’ নির্বাচন করুন।
- নির্দেশিত হলে, কী টাইপ হিসেবে JSON নির্বাচন করুন এবং Create-এ ক্লিক করুন।
আপনার গুগল ডিফল্ট ক্রেডেনশিয়াল এমনভাবে সেট করুন যাতে তা ডাউনলোড করা কী-টির দিকে নির্দেশ করে:
ইউনিক্স
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase functions:shell
উইন্ডোজ
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase functions:shell
এই ধাপগুলো সম্পন্ন করার পর, আপনার ফাংশন টেস্টগুলো অ্যাডমিন এসডিকে ব্যবহার করে ফায়ারবেস এবং গুগল এপিআই অ্যাক্সেস করতে পারবে। উদাহরণস্বরূপ, একটি Authentication ট্রিগার পরীক্ষা করার সময়, এমুলেটেড ফাংশনটি admin.auth().getUserByEmail(email) কল করতে পারে।
ক্লাউড ফাংশন শেল ব্যবহার করে ফাংশন পরিবেশন করুন
ক্লাউড ফাংশনস শেলটি টেস্ট ডেটা দিয়ে ফাংশনগুলো কল করার জন্য একটি ইন্টারেক্টিভ শেলের মাধ্যমে সব ধরনের ফাংশন ট্রিগারের অনুকরণ করে। ফাংশনের ধরন অনুযায়ী অপশনগুলো ভিন্ন হয়, কিন্তু এর মৌলিক ব্যবহারের ধরণটি হলো:
myFunctionName(data, options)
Realtime Database, Cloud Firestore, এবং PubSub ট্রিগারের জন্য data প্যারামিটারটি আবশ্যক, এবং অন্য সকল ফাংশন টাইপের জন্য এটি ঐচ্ছিক। এছাড়াও, ঐচ্ছিক options প্যারামিটারটি শুধুমাত্র Realtime Database এবং Cloud Firestore ফাংশনের জন্য প্রযোজ্য।
ঐচ্ছিকভাবে, আপনি ফাইলটিকে একটি ভেরিয়েবল হিসেবে সংরক্ষণ করে এবং সেটি দিয়ে একটি ফাংশন কল করার মাধ্যমে স্থানীয় ফাইল থেকে পরীক্ষার ডেটা লোড করতে পারেন:
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'}})
ফায়ারস্টোর ফাংশনগুলি আহ্বান করুন
স্থানীয়ভাবে ফায়ারস্টোর ফাংশন চালানোর সময়, আপনাকে উপযুক্ত টেস্ট ডেটা সরবরাহ করতে হবে। এর জন্য সাধারণত onCreate অপারেশনের জন্য নতুন টেস্ট ডেটা, onDelete অপারেশনের জন্য পুরোনো/অপসারণ করা ডেটা এবং onUpdate বা onWrite ফাংশনের জন্য উভয়ই সরবরাহ করতে হয়। মনে রাখবেন যে ফায়ারস্টোর ডেটা অবশ্যই কী-ভ্যালু পেয়ার হতে হবে; সমর্থিত ডেটা টাইপ দেখুন।
# 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() রান করে কোনো ডেটা ছাড়াই একটি অ্যানালিটিক্স ফাংশন চালু করতে পারেন। টেস্ট ডেটা দিয়ে ফাংশনটি চালানোর জন্য, আপনার ফাংশনের প্রয়োজনীয় নির্দিষ্ট ইভেন্ট ডেটা ফিল্ডগুলোর জন্য একটি ভ্যারিয়েবল নির্ধারণ করার পরামর্শ দেওয়া হয়:
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);
স্টোরেজ এবং প্রমাণীকরণ ফাংশনগুলি চালু করুন
স্টোরেজ এবং অথেন্টিকেশন ফাংশনগুলোর জন্য, যে টেস্ট ডেটা আপনি ফাংশনের ভিতরে দেখতে চান, তা দিয়ে লোকাল ফাংশনটি কল করুন। আপনার টেস্ট ডেটাকে অবশ্যই সংশ্লিষ্ট ডেটা ফরম্যাটগুলো অনুসরণ করতে হবে:
- Cloud Storage জন্য :
ObjectMetadata - Authentication জন্য :
UserRecord
আপনার কোড যে ফিল্ডগুলোর ওপর নির্ভর করে, শুধু সেগুলোই উল্লেখ করুন, অথবা যদি শুধু ফাংশনটি চালাতে চান তবে কোনোটিই উল্লেখ করবেন না।