Method: projects.test

वाक्यविन्यास और अर्थ संबंधी शुद्धता के लिए परीक्षण Source । यदि कोई समस्या है, तो उसे कॉल करने वाले को विवरण, गंभीरता और स्रोत स्थान के साथ लौटा दिया जाएगा।

परीक्षण विधि को Source के साथ निष्पादित किया जा सकता है। नए नियमों की इकाई परीक्षण के लिए पासिंग Source उपयोगी है।

ध्यान दें कि REST API का उपयोग करके चलाए जाने वाले परीक्षण उत्पादन डेटाबेस, स्टोरेज बकेट और संबंधित rsesources का उपयोग करते हैं। ऐसे परीक्षण पर उपयोग शुल्क लग सकता है। हम दृढ़ता से अनुशंसा करते हैं कि आप नियम परीक्षण करने के लिए फायरबेस लोकल एमुलेटर सूट का उपयोग करें, क्योंकि आप उपयोग शुल्क के बिना ऑफ़लाइन, गैर-उत्पादन संसाधनों पर परीक्षण चला सकते हैं।

निम्नलिखित 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/')
  }
}

HTTP अनुरोध

POST https://firebaserules.googleapis.com/v1/{name=projects/**}:test

यूआरएल जीआरपीसी ट्रांसकोडिंग सिंटैक्स का उपयोग करता है।

पथ पैरामीटर

पैरामीटर
name

string

आवश्यक। source के विरुद्ध परीक्षणों के लिए, संसाधन नाम में परियोजना का उल्लेख होना चाहिए: प्रारूप: projects/{project_id}

निकाय से अनुरोध करें

अनुरोध निकाय में निम्नलिखित संरचना वाला डेटा शामिल है:

JSON प्रतिनिधित्व
{
  "source": {
    object (Source)
  },
  "testSuite": {
    object (TestSuite)
  }
}
खेत
source

object ( Source )

शुद्धता के लिए Source जाँच की जाएगी।

testSuite

object ( TestSuite )

Source के विरुद्ध निष्पादित करने के लिए इनलाइन TestSuite

जब Source इनलाइन प्रदान किया जाता है, तो परीक्षण मामले केवल तभी चलाए जाएंगे यदि Source वाक्यात्मक और शब्दार्थ रूप से मान्य है।

प्रतिक्रिया निकाय

सफल होने पर, प्रतिक्रिया निकाय में निम्नलिखित संरचना वाला डेटा शामिल होता है:

FirebaseRulesService.TestRuleset के लिए प्रतिक्रिया।

JSON प्रतिनिधित्व
{
  "issues": [
    {
      object (Issue)
    }
  ],
  "testResults": [
    {
      object (TestResult)
    }
  ]
}
खेत
issues[]

object ( Issue )

अलग-अलग गंभीरता के वाक्यात्मक और अर्थ संबंधी Source मुद्दे। ERROR की गंभीरता के मुद्दे परीक्षणों को निष्पादित होने से रोकेंगे।

testResults[]

object ( TestResult )

TestSuite में परीक्षण मामलों को देखते हुए परीक्षण परिणामों का सेट। परिणाम उसी क्रम में दिखाई देंगे जैसे टेस्ट केस TestSuite में दिखाई देते हैं।

प्राधिकरण के दायरे

निम्नलिखित 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 (TestCase)
    }
  ]
}
खेत
testCases[]

object ( TestCase )

TestSuite से जुड़े परीक्षण मामलों का संग्रह।

परीक्षण मामला

TestCase संदेश अनुरोध संदर्भ और एक अपेक्षा प्रदान करते हैं कि दिए गए संदर्भ को अनुमति दी जाएगी या अस्वीकार किया जाएगा। परीक्षण के मामले सेवा-प्रदत्त फ़ंक्शन के लिए फ़ंक्शन कॉल को मॉक करने के लिए request , resosurce और functionMocks निर्दिष्ट कर सकते हैं।

request वस्तु अनुरोध-समय पर मौजूद संदर्भ का प्रतिनिधित्व करती है।

resource लक्ष्य संसाधन का मूल्य है (उदाहरण के लिए, जीसीएस ऑब्जेक्ट या फायरस्टोर दस्तावेज़ का मेटाडेटा) क्योंकि यह अनुरोध निष्पादित होने से पहले लगातार भंडारण में दिखाई देता है।

क्लाउड फायरस्टोर ( अनुरोध , संसाधन ) और फायरबेस ( अनुरोध , संसाधन ) के लिए क्लाउड स्टोरेज के लिए संबंधित संदर्भ दस्तावेज भी देखें।

JSON प्रतिनिधित्व
{
  "expectation": enum (Expectation),
  "request": value,
  "resource": value,
  "functionMocks": [
    {
      object (FunctionMock)
    }
  ],
  "pathEncoding": enum (PathEncoding),
  "expressionReportLevel": enum (ExpressionReportLevel)
}
खेत
expectation

enum ( Expectation )

परीक्षण की अपेक्षा.

request

value ( Value format)

संदर्भ का अनुरोध करें.

अनुरोध संदर्भ का सटीक प्रारूप सेवा-निर्भर है। अनुरोध पर समर्थित फ़ील्ड और प्रकारों के बारे में जानकारी के लिए उपयुक्त सेवा दस्तावेज़ देखें। न्यूनतम रूप से, सभी सेवाएँ निम्नलिखित क्षेत्रों और प्रकारों का समर्थन करती हैं:

अनुरोध फ़ील्ड प्रकार
auth.uid string
auth.टोकन map<string, string>
हेडर map<string, string>
तरीका string
पैरामीटर map<string, string>
पथ string
समय google.protobuf.Timestamp

यदि अनुरोध मान सेवा के लिए अच्छी तरह से तैयार नहीं किया गया है, तो अनुरोध को अमान्य तर्क के रूप में अस्वीकार कर दिया जाएगा।

resource

value ( Value format)

वैकल्पिक संसाधन मान, जैसा कि अनुरोध पूरा होने से पहले लगातार भंडारण में दिखाई देता है।

संसाधन प्रकार request.path मान पर निर्भर करता है।

functionMocks[]

object ( FunctionMock )

सेवा-परिभाषित कार्यों के लिए वैकल्पिक नियम फ़ंक्शन मॉक। यदि सेट नहीं किया गया है, तो किसी भी सेवा-परिभाषित नियम फ़ंक्शन से त्रुटि लौटने की उम्मीद है, जो परीक्षण के परिणाम को प्रभावित कर भी सकती है और नहीं भी।

pathEncoding

enum ( PathEncoding )

निर्दिष्ट करता है कि क्या पथ (जैसे request.path) एन्कोड किए गए हैं और कैसे।

expressionReportLevel

enum ( ExpressionReportLevel )

निर्दिष्ट करता है कि प्रतिक्रिया में क्या शामिल किया जाना चाहिए।

अपेक्षा

समर्थित परीक्षण केस अपेक्षाओं का सेट।

एनम्स
EXPECTATION_UNSPECIFIED अनिर्दिष्ट अपेक्षा.
ALLOW अनुमत परिणाम की अपेक्षा करें.
DENY अस्वीकृत परिणाम की अपेक्षा करें.

फंक्शनमॉक

नकली नियम फ़ंक्शन परिभाषा।

मोक्स को लक्ष्य सेवा द्वारा घोषित फ़ंक्शन को संदर्भित करना चाहिए। परीक्षण के समय फ़ंक्शन आर्ग्स के प्रकार और परिणाम का अनुमान लगाया जाएगा। यदि तर्क या परिणाम मान फ़ंक्शन प्रकार की घोषणा के साथ संगत नहीं हैं, तो अनुरोध को अमान्य माना जाएगा।

किसी दिए गए फ़ंक्शन नाम के लिए एक से अधिक FunctionMock प्रदान किए जा सकते हैं, जब तक कि Arg मैचर्स अलग-अलग हों। किसी दिए गए ओवरलोड के लिए केवल एक फ़ंक्शन हो सकता है जहां सभी Arg मान Arg.any_value हैं।

सुरक्षा नियम भाषा में फ़ंक्शंस भी देखें।

JSON प्रतिनिधित्व
{
  "function": string,
  "args": [
    {
      object (Arg)
    }
  ],
  "result": {
    object (Result)
  }
}
खेत
function

string

फ़ंक्शन का नाम.

फ़ंक्शन का नाम सेवा घोषणा द्वारा प्रदान किए गए नाम से मेल खाना चाहिए।

args[]

object ( Arg )

मिलान करने के लिए Arg मानों की सूची। जिस क्रम में तर्क प्रदान किए जाते हैं वह वह क्रम है जिसमें उन्हें फ़ंक्शन आमंत्रण में प्रदर्शित होना चाहिए।

result

object ( Result )

फ़ंक्शन कॉल का नकली परिणाम।

आर्ग

मॉक फ़ंक्शन के लिए आर्ग मिलानकर्ता।

JSON प्रतिनिधित्व
{

  // Union field type can be only one of the following:
  "exactValue": value,
  "anyValue": {
    object
  }
  // End of list of possible types for union field type.
}
खेत
संघ क्षेत्र type . समर्थित तर्क मान. type निम्नलिखित में से केवल एक ही हो सकता है:
exactValue

value ( Value format)

तर्क बिल्कुल दिए गए मान से मेल खाता है।

anyValue

object

तर्क दिए गए किसी भी मान से मेल खाता है।

परिणाम

फ़ंक्शन मॉक इनवोकेशन से संभावित परिणाम मान।

JSON प्रतिनिधित्व
{

  // Union field type can be only one of the following:
  "value": value,
  "undefined": {
    object
  }
  // End of list of possible types for union field type.
}
खेत
संघ क्षेत्र type . समर्थित परिणाम मान. type निम्नलिखित में से केवल एक ही हो सकता है:
value

value ( Value format)

परिणाम एक वास्तविक मूल्य है. मान का प्रकार सेवा द्वारा घोषित प्रकार से मेल खाना चाहिए।

undefined

object

परिणाम अपरिभाषित है, जिसका अर्थ है कि परिणाम की गणना नहीं की जा सकती।

पथ एन्कोडिंग

प्रयुक्त पथ एन्कोडिंग का प्रकार.

एनम्स
ENCODING_UNSPECIFIED कोई एन्कोडिंग निर्दिष्ट नहीं की गई है. डिफ़ॉल्ट रूप से "URL_ENCODED" व्यवहार।
URL_ENCODED पथ खंडों को यूआरएल एन्कोडेड के रूप में मानता है लेकिन गैर-एन्कोडेड विभाजकों ("/") के साथ। यह पहले गलत व्यवहार है।
PLAIN कुल पथ को गैर-यूआरएल एन्कोडेड जैसे कच्चा मानता है।

अभिव्यक्तिरिपोर्टस्तर

अभिव्यक्ति रिपोर्ट प्रतिक्रिया में शामिल किए जाने वाले डेटा की मात्रा.

एनम्स
LEVEL_UNSPECIFIED कोई स्तर निर्दिष्ट नहीं किया गया है. डिफ़ॉल्ट रूप से "कोई नहीं" व्यवहार।
NONE कोई अतिरिक्त जानकारी शामिल न करें.
FULL मूल्यांकन की गई अभिव्यक्तियों पर विस्तृत रिपोर्टिंग शामिल करें।
VISITED केवल वे अभिव्यक्तियाँ शामिल करें जो मूल्यांकन के दौरान देखी गई थीं।

मुद्दा

मुद्दों में चेतावनियाँ, त्रुटियाँ और पदावनति नोटिस शामिल हैं।

JSON प्रतिनिधित्व
{
  "sourcePosition": {
    object (SourcePosition)
  },
  "description": string,
  "severity": enum (Severity)
}
खेत
sourcePosition

object ( SourcePosition )

Source में मुद्दे की स्थिति.

description

string

संक्षिप्त त्रुटि विवरण.

severity

enum ( Severity )

मुद्दे की गंभीरता.

स्रोत स्थिति

Source सामग्री में उसकी पंक्ति, स्तंभ संख्या और Source संदेश में File की अनुक्रमणिका सहित स्थिति। डिबग उद्देश्यों के लिए उपयोग किया जाता है।

JSON प्रतिनिधित्व
{
  "fileName": string,
  "line": integer,
  "column": integer,
  "currentOffset": integer,
  "endOffset": integer
}
खेत
fileName

string

File का नाम.

line

integer

स्रोत खंड की पंक्ति संख्या. 1-आधारित।

column

integer

स्रोत खंड से संबद्ध स्रोत रेखा पर पहला स्तंभ।

currentOffset

integer

फ़ाइल की शुरुआत के सापेक्ष आरंभ स्थिति.

endOffset

integer

फ़ाइल की शुरुआत के सापेक्ष अंतिम स्थिति।

तीव्रता

मुद्दे की गंभीरता का सेट.

एनम्स
SEVERITY_UNSPECIFIED एक अनिर्दिष्ट गंभीरता.
DEPRECATION उन बयानों और तरीकों के लिए बहिष्करण मुद्दा जिनका अब समर्थन या रखरखाव नहीं किया जा सकता है।
WARNING चेतावनियाँ जैसे: अप्रयुक्त चर।
ERROR त्रुटियाँ जैसे: बेजोड़ घुंघराले ब्रेसिज़ या परिवर्तनीय पुनर्परिभाषा।

परीक्षा परिणाम

परीक्षण परिणाम संदेश जिसमें परीक्षण की स्थिति के साथ-साथ परीक्षण विफलताओं का विवरण और स्रोत स्थिति भी शामिल है।

JSON प्रतिनिधित्व
{
  "state": enum (State),
  "debugMessages": [
    string
  ],
  "errorPosition": {
    object (SourcePosition)
  },
  "functionCalls": [
    {
      object (FunctionCall)
    }
  ],
  "visitedExpressions": [
    {
      object (VisitedExpression)
    }
  ],
  "expressionReports": [
    {
      object (ExpressionReport)
    }
  ]
}
खेत
state

enum ( State )

परीक्षण की स्थिति.

debugMessages[]

string

मूल्यांकन के दौरान आने वाले परीक्षण निष्पादन समस्याओं से संबंधित डीबग संदेश।

डिबग संदेश फ़ंक्शन मॉक के बहुत अधिक या बहुत कम आमंत्रण या मूल्यांकन के दौरान होने वाली रनटाइम त्रुटियों से संबंधित हो सकते हैं।

उदाहरण के लिए: Unable to read variable [name: "resource"]

errorPosition

object ( SourcePosition )

Source में वह स्थिति जहां सिद्धांत रनटाइम त्रुटि होती है।

किसी अभिव्यक्ति के मूल्यांकन के परिणामस्वरूप त्रुटि हो सकती है। नियम डिफ़ॉल्ट रूप से अस्वीकृत होते हैं, इसलिए जब कोई त्रुटि उत्पन्न होती है तो DENY अपेक्षा मान्य होती है। जब किसी त्रुटि के साथ DENY होता है, तो SourcePosition वापस कर दिया जाता है।

उदाहरण के लिए errorPosition { line: 19 column: 37 }

functionCalls[]

object ( FunctionCall )

सेवा-परिभाषित विधियों के लिए किए गए फ़ंक्शन कॉल का सेट।

फ़ंक्शन कॉल को उस क्रम में शामिल किया जाता है जिसमें मूल्यांकन के दौरान उनका सामना किया जाता है, मॉक किए गए और अनमॉक किए गए दोनों फ़ंक्शंस के लिए प्रदान किया जाता है, और परीक्षण state की परवाह किए बिना प्रतिक्रिया में शामिल किया जाता है।

visitedExpressions[]

object ( VisitedExpression )

किसी दिए गए परीक्षण के लिए विज़िट की गई अनुमति अभिव्यक्तियों का सेट। यह उन सभी विज़िट की गई अनुमति अभिव्यक्तियों की स्थिति और मूल्यांकन परिणाम लौटाता है जो परीक्षण मामले के लिए प्रासंगिक थे, उदाहरण के लिए

match /path {
  allow read if: <expr>
}

मध्यवर्ती मूल्यांकन राज्यों की विस्तृत रिपोर्ट के लिए, expressionReports फ़ील्ड देखें

expressionReports[]

object ( ExpressionReport )

नियम-सेट एएसटी में अभिव्यक्ति से लेकर उन मानों तक मैपिंग, जिनके आधार पर उनका मूल्यांकन किया गया था। एएसटी संरचना को प्रतिबिंबित करने के लिए आंशिक रूप से नेस्टेड। ध्यान दें कि उपरोक्त "visitedExpressions" फ़ील्ड के विपरीत यह फ़ील्ड वास्तव में अभिव्यक्तियों को ट्रैक कर रही है न कि अनुमति विवरण को। शाब्दिक अभिव्यक्तियाँ छोड़ दी गई हैं।

राज्य

परीक्षा परिणाम के लिए मान्य स्थितियाँ.

एनम्स
STATE_UNSPECIFIED परीक्षण स्थिति निर्धारित नहीं है.
SUCCESS परीक्षण सफल है.
FAILURE परीक्षण असफल है.

फ़ंक्शन कॉल

एक सेवा-परिभाषित फ़ंक्शन कॉल का प्रतिनिधित्व करता है जिसे परीक्षण निष्पादन के दौरान लागू किया गया था।

JSON प्रतिनिधित्व
{
  "function": string,
  "args": [
    value
  ]
}
खेत
function

string

बुलाए गए फ़ंक्शन का नाम.

args[]

value ( Value format)

फ़ंक्शन को जो तर्क प्रदान किए गए थे.

विज़िटएक्सप्रेशन

नियमों में देखी गई अभिव्यक्ति के लिए स्थिति और पहुंच परिणाम को संग्रहीत करें।

JSON प्रतिनिधित्व
{
  "sourcePosition": {
    object (SourcePosition)
  },
  "value": value
}
खेत
sourcePosition

object ( SourcePosition )

Source में वह स्थिति जहां एक अभिव्यक्ति का दौरा किया गया था।

value

value ( Value format)

विज़िट की गई अभिव्यक्ति के लिए मूल्यांकन किया गया मान, उदाहरण के लिए सत्य/गलत

अभिव्यक्तिरिपोर्ट

वर्णन करता है कि किसी फ़ाइल में एक अभिव्यक्ति कहाँ पाई जाती है और इसके उपयोग के दौरान इसका क्या मूल्यांकन किया गया था।

JSON प्रतिनिधित्व
{
  "sourcePosition": {
    object (SourcePosition)
  },
  "values": [
    {
      object (ValueCount)
    }
  ],
  "children": [
    {
      object (ExpressionReport)
    }
  ]
}
खेत
sourcePosition

object ( SourcePosition )

मूल नियम स्रोत में अभिव्यक्ति की स्थिति.

values[]

object ( ValueCount )

वे मान जिनका सामना होने पर इस अभिव्यक्ति का मूल्यांकन किया गया।

children[]

object ( ExpressionReport )

उपअभिव्यक्तियाँ

वैल्यूकाउंट

किसी विशेष ExpressionValue पर कितनी बार किसी Expression का मूल्यांकन किया गया, इसके लिए Tuple करें।

JSON प्रतिनिधित्व
{
  "value": value,
  "count": integer
}
खेत
value

value ( Value format)

अभिव्यक्ति का वापसी मूल्य

count

integer

वह अभिव्यक्ति कितनी बार लौटी.