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

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

ফায়ারবেস এমুলেটরগুলিতে রুল কভারেজ রিপোর্ট তৈরি করার ক্ষমতা অন্তর্ভুক্ত থাকে, যাতে আপনি দেখতে পারেন যে আপনি প্রতিটি ত্রুটির পুনরুত্পাদন করার সময় প্রতিটি উপ -এক্সপ্রেশন ঠিক কী মূল্যায়ন করেছেন তা দেখতে পারেন। রিপোর্টগুলি প্রতিটি পরীক্ষার ক্ষেত্রে কতবার একটি নিয়ম ব্যবহার করে সে সম্পর্কে তথ্য প্রদান করে, যেমন traditionalতিহ্যগত "লাইন কভারেজ" কৌশল।

একটি প্রতিবেদন তৈরি করুন

পরীক্ষার একটি স্যুট চালানোর পরে, আপনি পরীক্ষা কভারেজ রিপোর্টগুলি অ্যাক্সেস করতে পারেন যা দেখায় যে আপনার প্রতিটি নিরাপত্তা বিধি কিভাবে মূল্যায়ন করা হয়েছিল।

রিপোর্ট পেতে, এমুলেটর চলমান অবস্থায় একটি এক্সপোজড এন্ডপয়েন্ট জিজ্ঞাসা করুন। একটি ব্রাউজার-বান্ধব সংস্করণের জন্য, নিম্নলিখিত URL টি ব্যবহার করুন:

ক্লাউড ফায়ারস্টোর

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html
 

রিয়েলটাইম ডাটাবেস

http://localhost:9000/.inspect/coverage?ns=<database_name>
 

এটি আপনার নিয়মগুলিকে এক্সপ্রেশন এবং সাব -এক্সপ্রেশনে ভেঙে দেয় যা আপনি আরও তথ্যের জন্য মাউসওভার করতে পারেন, মূল্যায়ন এবং ফেরত দেওয়া মান সহ। এই ডেটার কাঁচা JSON সংস্করণের জন্য, আপনার ক্যোয়ারীতে নিম্নলিখিত URL টি অন্তর্ভুক্ত করুন:

ক্লাউড ফায়ারস্টোর

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage
 

রিয়েলটাইম ডাটাবেস

http://localhost:9000/.inspect/coverage.json?ns=<database_name>
 

ডিবাগিং উদাহরণ নিয়ম

সহজেই একটি পরীক্ষার রিপোর্ট জেনারেট করতে, এমুলেটর জন্য GitHub থেকে প্রাপ্তিসাধ্য quickstarts ক্লাউড Firestore এবং রিয়েলটাইম ডাটাবেস । এই কুইকস্টার্টগুলি এমুলেটরগুলিকে সঠিকভাবে ইনস্টল এবং শুরু করার জন্য আপনাকে নির্দেশ দেয়, তারপরে নিয়মগুলির একটি উদাহরণ সেট থেকে নমুনা পরীক্ষা তৈরি করে।

ক্লাউড ফায়ারস্টোর ব্যবহার করে একটি উদাহরণ অ্যাপ্লিকেশন বিবেচনা করুন যা ব্যবহারকারীরা কতবার একটি বোতামে ক্লিক করে তা গণনা করে। অ্যাপটি নিম্নলিখিত নিয়মগুলি ব্যবহার করে:

ক্লাউড ফায়ারস্টোর

 service cloud.firestore {
   match /databases/{database}/documents {
     match /counters/{counter} {
       allow read;
       allow write: if request.resource.data.value == resource.data.value +1;
     }
   }
 }
 

উপরে দেখানো নিয়মে ত্রুটি ডিবাগ করতে, নিম্নলিখিত নমুনা জাভাস্ক্রিপ্ট পরীক্ষা ব্যবহার করুন:

const counter0 = db.collection("counters").doc("0");
await firebase.assertSucceeds(counter0.set({value: 0}));

এমুলেটর উপরে উল্লিখিত URL- এ উপলব্ধ একটি প্রতিবেদন তৈরি করে:

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html

প্রতিবেদনটি নিম্নোক্ত অনির্ধারিত এবং শূন্য মানের ত্রুটিগুলি দেখায়:

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

ক্লাউড ফায়ারস্টোর

 service cloud.firestore {
   match /databases/{database}/documents {
     match /counters/{counter} {
       allow read;
       allow create: if request.resource.data.value == 0;
       allow update: if request.resource.data.value == resource.data.value +1;
     }
   }
 }
 

উত্পন্ন প্রতিবেদনটি দেখায় যে প্রতিটি নিয়ম কত ঘন ঘন ব্যবহার করা হয়েছিল এবং কী ফেরত দেওয়া হয়েছিল।