- एचटीटीपी अनुरोध
- पाथ पैरामीटर
- अनुरोध का मुख्य हिस्सा
- जवाब का मुख्य हिस्सा
- अनुमति के दायरे
- टेस्टसुइट
- टेस्टकेस
- उम्मीद
- फ़ंक्शनमॉक
- आर्ग
- नतीजा
- पाथ एन्कोडिंग
- एक्सप्रेशन रिपोर्ट लेवल
- समस्या
- सोर्स पोज़िशन
- गंभीरता
- टेस्ट के नतीजे
- राज्य
- FunctionCall
- विज़िट किए गए एक्सप्रेशन
- एक्सप्रेशन रिपोर्ट
- वैल्यू की गिनती
- इसे आज़माएं!
वाक्यात्मक और वाक्य की बनावट के सही होने के लिए Source
को टेस्ट करें. अगर कोई समस्या होती है, तो उसे कॉलर को दिखाया जाएगा. इसमें उसकी जानकारी, उसकी गंभीरता, और सोर्स की जगह की जानकारी शामिल की जाएगी.
जांच के तरीके को Source
की मदद से चलाया जा सकता है. नए नियमों की यूनिट की जांच करने के लिए, Source
को पास करना फ़ायदेमंद होता है.
ध्यान दें कि REST API का इस्तेमाल करके की जाने वाली जांच में प्रोडक्शन डेटाबेस, स्टोरेज बकेट, और उनसे जुड़े rsesource का इस्तेमाल किया जाता है. इस तरह की जांच करने पर इस्तेमाल के लिए शुल्क लग सकते हैं. हमारा सुझाव है कि आप नियमों की जांच करने के लिए, Firebase लोकल एम्युलेटर सुइट का इस्तेमाल करें. ऐसा इसलिए, क्योंकि ऑफ़लाइन और नॉन-प्रोडक्शन ट्रैक वाले संसाधनों पर, बिना इस्तेमाल के शुल्क के टेस्ट किए जा सकते हैं.
यहां Source
का एक उदाहरण दिया गया है, जिसमें उपयोगकर्ता अपने यूज़र आईडी वाले बकेट में इमेज अपलोड कर सकते हैं और सही मेटाडेटा से मेल खाते हैं:
उदाहरण
// Users are allowed to subscribe and unsubscribe to the blog.
service firebase.storage {
match /users/{userId}/images/{imageName} {
allow write: if userId == request.auth.uid
&& (imageName.matches('*.png$')
|| imageName.matches('*.jpg$'))
&& resource.mimeType.matches('^image/')
}
}
एचटीटीपी अनुरोध
POST https://firebaserules.googleapis.com/v1/{name=projects/**}:test
यह यूआरएल gRPC ट्रांसकोडिंग सिंटैक्स का इस्तेमाल करता है.
पाथ पैरामीटर
पैरामीटर | |
---|---|
name |
ज़रूरी है. |
अनुरोध का मुख्य भाग
अनुरोध के मुख्य हिस्से में, यहां दिए गए स्ट्रक्चर का डेटा शामिल होता है:
JSON के काेड में दिखाना | |
---|---|
{ "source": { object ( |
फ़ील्ड | |
---|---|
source |
वैल्यू सही है या नहीं, इसकी जांच करने के लिए |
testSuite |
जब |
जवाब का लेख
अगर इंडेक्सिंग सही से हाे जाती है, ताे जवाब के लेख में नीचे दिए गए स्ट्रक्चर का डेटा शामिल होता है.
FirebaseRulesService.TestRuleset
का जवाब.
JSON के काेड में दिखाना | |
---|---|
{ "issues": [ { object ( |
फ़ील्ड | |
---|---|
issues[] |
अलग-अलग तरह की गंभीर |
testResults[] |
|
अनुमति की संभावना
इनमें से किसी एक OAuth स्कोप की ज़रूरत होती है:
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/firebase
https://www.googleapis.com/auth/firebase.readonly
ज़्यादा जानकारी के लिए, पुष्टि करने से जुड़ी खास जानकारी देखें.
टेस्टसुइट
TestSuite
, TestCase
इंस्टेंस का कलेक्शन है. इससे यह पुष्टि की जाती है कि नियमों के लॉजिकल सही होने की पुष्टि की जाती है. TestSuite
को projects.test
शुरू करने की प्रक्रिया में या रिलीज़ से पहले की जांच के तौर पर, Release
ऑब्जेक्ट के हिस्से के तौर पर इन-लाइन रेफ़र किया जा सकता है.
JSON के काेड में दिखाना | |
---|---|
{
"testCases": [
{
object ( |
फ़ील्ड | |
---|---|
testCases[] |
|
टेस्टकेस
TestCase
मैसेज में, अनुरोध के कॉन्टेक्स्ट के बारे में जानकारी दी जाती है. साथ ही, यह जानकारी भी दी जाती है कि यह अनुरोध स्वीकार किया जाएगा या नहीं. सेवा से मिले फ़ंक्शन को मॉक कॉल करने के लिए, टेस्ट केस request
, resosurce
, और functionMocks
के बारे में बता सकते हैं.
request
ऑब्जेक्ट, अनुरोध के समय मौजूद कॉन्टेक्स्ट दिखाता है.
resource
, टारगेट रिसॉर्स (जैसे कि GCS ऑब्जेक्ट या Firestore दस्तावेज़ का मेटाडेटा) की वैल्यू है, जैसा कि अनुरोध के लागू होने से पहले, स्थायी स्टोरेज में दिखता है.
Cloud Firestore ( अनुरोध, संसाधन) और Firebase के लिए Cloud Storage (अनुरोध, संसाधन) के लिए, मिलते-जुलते रेफ़रंस दस्तावेज़ भी देखें.
JSON के काेड में दिखाना | |
---|---|
{ "expectation": enum ( |
फ़ील्ड | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation |
उम्मीद के मुताबिक नतीजे देखें. |
||||||||||||||||
request |
कॉन्टेक्स्ट का अनुरोध करें. अनुरोध के कॉन्टेक्स्ट का सटीक फ़ॉर्मैट, सेवा पर निर्भर करता है. अनुरोध पर इस्तेमाल किए जा सकने वाले फ़ील्ड और टाइप के बारे में जानकारी के लिए, सेवा से जुड़े सही दस्तावेज़ देखें. बहुत कम, सभी सेवाएं नीचे दिए गए फ़ील्ड और टाइप के साथ काम करती हैं:
अगर अनुरोध की वैल्यू, सेवा के हिसाब से सही नहीं है, तो अनुरोध को अमान्य आर्ग्युमेंट के तौर पर अस्वीकार कर दिया जाएगा. |
||||||||||||||||
resource |
अनुरोध के पूरा होने से पहले, संसाधन की वह वैल्यू जो स्थायी स्टोरेज में दिखती है. हालांकि, यह वैल्यू देना ज़रूरी नहीं है. संसाधन का टाइप, |
||||||||||||||||
functionMocks[] |
सेवा से जुड़े फ़ंक्शन के लिए, वैकल्पिक नियम फ़ंक्शन मॉक फ़ंक्शन. अगर नीति को सेट नहीं किया जाता है, तो सेवा से जुड़े किसी भी नियम के फ़ंक्शन में गड़बड़ी दिख सकती है. इसका टेस्ट के नतीजे पर असर हो भी सकता है और नहीं भी. |
||||||||||||||||
pathEncoding |
इससे पता चलता है कि पाथ (जैसे कि request.path) को कोड में बदला गया है या नहीं और यह कैसे किया गया है. |
||||||||||||||||
expressionReportLevel |
बताता है कि जवाब में क्या शामिल किया जाना चाहिए. |
उम्मीद
इस्तेमाल किए जा सकने वाले टेस्ट केस की उम्मीदों का सेट.
एनम्स | |
---|---|
EXPECTATION_UNSPECIFIED |
उम्मीद के बारे में जानकारी नहीं है. |
ALLOW |
अनुमति वाला नतीजा मिल सकता है. |
DENY |
अस्वीकार किया गया नतीजा मिलना चाहिए. |
फ़ंक्शनमॉक
मॉक रूल्स फ़ंक्शन की परिभाषा.
मॉक में वह फ़ंक्शन होना चाहिए जिसका एलान टारगेट सेवा ने किया है. यह फ़ंक्शन किस तरह का है, इसके लिए आर्ग्युमेंट बनाएं और जांच के समय नतीजे का अनुमान लगाएं. अगर फ़ंक्शन टाइप की जानकारी के साथ, आर्ग्युमेंट या नतीजे की वैल्यू का इस्तेमाल नहीं किया जा सकता, तो अनुरोध को अमान्य माना जाएगा.
किसी फ़ंक्शन के नाम के लिए एक से ज़्यादा FunctionMock
तब तक दिए जा सकते हैं, जब तक कि Arg
मैचर अलग-अलग हों. हो सकता है कि किसी ओवरलोड के लिए सिर्फ़ एक फ़ंक्शन हो, जहां सभी Arg
की वैल्यू Arg.any_value
हों.
सुरक्षा नियमों की भाषा में फ़ंक्शन भी देखें.
JSON के काेड में दिखाना | |
---|---|
{ "function": string, "args": [ { object ( |
फ़ील्ड | |
---|---|
function |
फ़ंक्शन का नाम. फ़ंक्शन का नाम, सेवा के एलान में दिए गए नाम से मेल खाना चाहिए. |
args[] |
मैच करने के लिए, |
result |
फ़ंक्शन कॉल का मॉक नतीजा. |
अर्ग
मॉक फ़ंक्शन के लिए Arg मैचर.
JSON के काेड में दिखाना | |
---|---|
{ // Union field |
फ़ील्ड | ||
---|---|---|
यूनियन फ़ील्ड type . आर्ग्युमेंट के लिए इस्तेमाल की जा सकने वाली वैल्यू. type इनमें से सिर्फ़ एक हो सकता है: |
||
exactValue |
आर्ग्युमेंट, दी गई वैल्यू से एग्ज़ैक्ट मैच करता है. |
|
anyValue |
आर्ग्युमेंट दी गई किसी भी वैल्यू से मेल खाता है. |
नतीजा
फ़ंक्शन मॉक इन्वेशन से मिलने वाले संभावित नतीजे की वैल्यू.
JSON के काेड में दिखाना | |
---|---|
{ // Union field |
फ़ील्ड | ||
---|---|---|
यूनियन फ़ील्ड type . नतीजे के लिए इस्तेमाल की जा सकने वाली वैल्यू. type इनमें से सिर्फ़ एक हो सकता है: |
||
value |
परिणाम एक वास्तविक मान होता है. वैल्यू का टाइप, सेवा के बताए गए टाइप से मेल खाना चाहिए. |
|
undefined |
नतीजा तय नहीं किया गया है. इसका मतलब है कि नतीजे का पता नहीं लगाया जा सका. |
पाथ एन्कोडिंग
इस्तेमाल किया गया पाथ एन्कोडिंग का प्रकार.
एनम्स | |
---|---|
ENCODING_UNSPECIFIED |
कोड में बदलने के किसी तरीके के बारे में नहीं बताया गया. डिफ़ॉल्ट रूप से "URL_ENCODED" व्यवहार. |
URL_ENCODED |
पाथ के सेगमेंट को यूआरएल के तौर पर एन्कोड करता है. हालांकि, इन्हें कोड में बदले नहीं गए सेपरेटर ("/") के साथ इस्तेमाल किया जाता है. यह डिफ़ॉल्ट व्यवहार है. |
PLAIN |
कुल पाथ को बिना यूआरएल वाले कोड के तौर पर देखता है, उदाहरण के लिए रॉ. |
एक्सप्रेशन रिपोर्टलेवल
एक्सप्रेशन रिपोर्ट के जवाब में शामिल किया जाने वाला डेटा.
एनम्स | |
---|---|
LEVEL_UNSPECIFIED |
कोई लेवल तय नहीं किया गया है. डिफ़ॉल्ट रूप से "NONE" होता है व्यवहार. |
NONE |
कोई भी अतिरिक्त जानकारी शामिल न करें. |
FULL |
आकलन किए गए एक्सप्रेशन के बारे में ज़्यादा जानकारी शामिल करें. |
VISITED |
सिर्फ़ आकलन के दौरान देखे गए एक्सप्रेशन शामिल करें. |
समस्या
समस्याओं में चेतावनियां, गड़बड़ियां, और इस्तेमाल न होने की सूचनाएं शामिल हैं.
JSON के काेड में दिखाना | |
---|---|
{ "sourcePosition": { object ( |
फ़ील्ड | |
---|---|
sourcePosition |
|
description |
गड़बड़ी के बारे में कम शब्दों में जानकारी. |
severity |
समस्या की गंभीरता. |
सोर्स पोज़िशन
Source
के कॉन्टेंट में उसकी लाइन, कॉलम नंबर, और Source
मैसेज में File
के इंडेक्स की जगह. इसका इस्तेमाल डीबग करने के लिए किया जाता है.
JSON के काेड में दिखाना | |
---|---|
{ "fileName": string, "line": integer, "column": integer, "currentOffset": integer, "endOffset": integer } |
फ़ील्ड | |
---|---|
fileName |
|
line |
सोर्स फ़्रैगमेंट की लाइन नंबर. 1-आधारित. |
column |
सोर्स फ़्रैगमेंट से जुड़ी सोर्स लाइन का पहला कॉलम. |
currentOffset |
फ़ाइल की शुरुआत के हिसाब से शुरुआती पोज़िशन. |
endOffset |
फ़ाइल की शुरुआत के हिसाब से खत्म होने की जगह. |
समस्या की गंभीरता
समस्या की गंभीरता का सेट.
एनम्स | |
---|---|
SEVERITY_UNSPECIFIED |
गंभीरता की जानकारी न देना. |
DEPRECATION |
ऐसे स्टेटमेंट और तरीके के लिए इस्तेमाल न होने की समस्या जो अब काम नहीं करते या उनका रखरखाव नहीं करते. |
WARNING |
इस्तेमाल न किए गए वैरिएबल जैसी चेतावनियां. |
ERROR |
गड़बड़ियां, जैसे कि मेल न खाने वाले कर्ली ब्रेसेस या वैरिएबल रीडेफ़िनिशन. |
TestResult
जांच के नतीजे वाले मैसेज में जांच की स्थिति, जांच में असफल होने की जानकारी, और सोर्स की स्थिति मौजूद होती है.
JSON के काेड में दिखाना | |
---|---|
{ "state": enum ( |
फ़ील्ड | |
---|---|
state |
जांच की स्थिति. |
debugMessages[] |
जांच के दौरान, टेस्ट करने में आने वाली समस्याओं से जुड़े मैसेज डीबग करें. डीबग मैसेज, फ़ंक्शन मॉक के बहुत ज़्यादा या बहुत कम बार शुरू होने की वजह से हो सकते हैं. इसके अलावा, इवैलुएशन के दौरान होने वाली रनटाइम की गड़बड़ियों की वजह से भी ऐसा हो सकता है. उदाहरण के लिए: |
errorPosition |
किसी एक्सप्रेशन की जांच करने पर कोई गड़बड़ी हो सकती है. नियम डिफ़ॉल्ट रूप से अस्वीकार किए जाते हैं. इसलिए, गड़बड़ी जनरेट होने पर उदाहरण के लिए, |
functionCalls[] |
सेवा से तय तरीकों पर किए जाने वाले फ़ंक्शन कॉल का सेट. फ़ंक्शन कॉल उसी क्रम में शामिल किए जाते हैं जिस क्रम में वे आकलन के दौरान मिलते हैं. साथ ही, इन्हें मॉक और अनमॉक किए गए फ़ंक्शन, दोनों के लिए उपलब्ध कराया जाता है. साथ ही, इन्हें रिस्पॉन्स में शामिल किया जाता है, भले ही टेस्ट |
visitedExpressions[] |
दिए गए टेस्ट के लिए, देखी गई अनुमति के एक्सप्रेशन का सेट. इससे, विज़िट की गई उन सभी अनुमति एक्सप्रेशन की स्थितियां और आकलन के नतीजे दिखते हैं जो टेस्ट केस के लिए काम के थे, जैसे कि
इंटरमीडिएट इवैलुएशन की स्थितियों की ज़्यादा जानकारी वाली रिपोर्ट के लिए, |
expressionReports[] |
रूलसेट AST में एक्सप्रेशन से उन वैल्यू पर मैपिंग जिनसे उनका आकलन किया गया था. AST संरचना में दर्पण करने के लिए आंशिक रूप से नेस्ट किया गया. ध्यान दें कि यह फ़ील्ड असल में एक्सप्रेशन को ट्रैक कर रहा है, न कि "visitedExpressions" के लिए अनुमति स्टेटमेंट को नहीं फ़ील्ड ऊपर. लिटरल एक्सप्रेशन का इस्तेमाल नहीं किया जाता. |
राज्य
जांच के नतीजे के लिए मान्य स्थितियां.
एनम्स | |
---|---|
STATE_UNSPECIFIED |
टेस्ट की स्थिति सेट नहीं है. |
SUCCESS |
जांच सफल है. |
FAILURE |
जांच नहीं हो पाई. |
फ़ंक्शन कॉल
यह सेवा के ज़रिए तय किए गए ऐसे फ़ंक्शन कॉल को दिखाता है जिसे टेस्ट एक्ज़ीक्यूशन के दौरान शुरू किया गया था.
JSON के काेड में दिखाना | |
---|---|
{ "function": string, "args": [ value ] } |
फ़ील्ड | |
---|---|
function |
शुरू किए गए फ़ंक्शन का नाम. |
args[] |
फ़ंक्शन को दिए गए आर्ग्युमेंट. |
विज़िट किए गए एक्सप्रेशन
नियमों में देखे गए एक्सप्रेशन के लिए, पोज़िशन और ऐक्सेस के नतीजे को सेव करता है.
JSON के काेड में दिखाना | |
---|---|
{
"sourcePosition": {
object ( |
फ़ील्ड | |
---|---|
sourcePosition |
|
value |
विज़िट किए गए एक्सप्रेशन के लिए आकलन की गई वैल्यू, जैसे कि सही/गलत |
एक्सप्रेशन रिपोर्ट
यह बताता है कि फ़ाइल में एक्सप्रेशन कहां मिलता है और इसका इस्तेमाल करने के दौरान इसका क्या आकलन किया गया.
JSON के काेड में दिखाना | |
---|---|
{ "sourcePosition": { object ( |
फ़ील्ड | |
---|---|
sourcePosition |
ओरिजनल नियमों के सोर्स में एक्सप्रेशन की जगह. |
values[] |
वे वैल्यू जिनका आकलन करने पर इस एक्सप्रेशन का आकलन किया गया. |
children[] |
सब-एक्सप्रेशन |
मान की संख्या
किसी खास एक्सप्रेशनवैल्यू के लिए, एक्सप्रेशन का आकलन कितनी बार किया गया, इसके लिए टपल.
JSON के काेड में दिखाना | |
---|---|
{ "value": value, "count": integer } |
फ़ील्ड | |
---|---|
value |
एक्सप्रेशन की रिटर्न वैल्यू |
count |
एक्सप्रेशन के वापस मिलने की संख्या. |