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

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

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

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

  • ক্লাউড ফায়ারস্টোর এবং রিয়েলটাইম ডেটাবেস ট্রিগারগুলির ইতিমধ্যেই যথেষ্ট প্রমাণপত্রাদি রয়েছে এবং অতিরিক্ত সেটআপের প্রয়োজন নেই
  • Firebase API যেমন প্রমাণীকরণ এবং FCM বা Google API যেমন ক্লাউড ট্রান্সলেশন বা ক্লাউড স্পিচ সহ অন্যান্য সমস্ত API-গুলির জন্য এই বিভাগে বর্ণিত সেটআপ পদক্ষেপগুলির প্রয়োজন। আপনি ক্লাউড ফাংশন শেল বা firebase emulators:start ব্যবহার করছেন কিনা তা প্রযোজ্য।

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

  1. Google ক্লাউড কনসোলের পরিষেবা অ্যাকাউন্ট প্যান খুলুন।
  2. নিশ্চিত করুন যে অ্যাপ ইঞ্জিন ডিফল্ট পরিষেবা অ্যাকাউন্ট নির্বাচন করা হয়েছে, এবং তৈরি কী নির্বাচন করতে ডানদিকে বিকল্প মেনু ব্যবহার করুন।
  3. প্রম্পট করা হলে, কী ধরণের জন্য JSON নির্বাচন করুন এবং তৈরি করুন ক্লিক করুন।
  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গুলি অ্যাক্সেস করতে পারে৷ উদাহরণস্বরূপ, একটি প্রমাণীকরণ ট্রিগার পরীক্ষা করার সময়, অনুকরণ করা ফাংশন admin.auth().getUserByEmail(email) কল করতে পারে।

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

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

myFunctionName(data, options)

রিয়েলটাইম ডেটাবেস, ক্লাউড ফায়ারস্টোর এবং PubSub ট্রিগারগুলির জন্য 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 কলেবল ফাংশন চালু করার সময়, আপনাকে উপযুক্ত পরীক্ষার ডেটা প্রদান করতে হবে।

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

সঞ্চয়স্থান এবং প্রমাণীকরণ ফাংশন আহ্বান করুন

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

  • ক্লাউড স্টোরেজের জন্য: ObjectMetadata
  • প্রমাণীকরণের জন্য: UserRecord

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