Method: projects.test

वाक्यात्मक और वाक्य की बनावट के सही होने के लिए 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

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, टारगेट रिसॉर्स (जैसे कि GCS ऑब्जेक्ट या Firestore दस्तावेज़ का मेटाडेटा) की वैल्यू है, जैसा कि अनुरोध के लागू होने से पहले, स्थायी स्टोरेज में दिखता है.

Cloud Firestore ( अनुरोध, संसाधन) और Firebase के लिए Cloud Storage (अनुरोध, संसाधन) के लिए, मिलते-जुलते रेफ़रंस दस्तावेज़ भी देखें.

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.token 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)

फ़ंक्शन कॉल का मॉक नतीजा.

अर्ग

मॉक फ़ंक्शन के लिए Arg मैचर.

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" होता है व्यवहार.
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 गड़बड़ियां, जैसे कि मेल न खाने वाले कर्ली ब्रेसेस या वैरिएबल रीडेफ़िनिशन.

TestResult

जांच के नतीजे वाले मैसेज में जांच की स्थिति, जांच में असफल होने की जानकारी, और सोर्स की स्थिति मौजूद होती है.

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)

रूलसेट AST में एक्सप्रेशन से उन वैल्यू पर मैपिंग जिनसे उनका आकलन किया गया था. AST संरचना में दर्पण करने के लिए आंशिक रूप से नेस्ट किया गया. ध्यान दें कि यह फ़ील्ड असल में एक्सप्रेशन को ट्रैक कर रहा है, न कि "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)

सब-एक्सप्रेशन

मान की संख्या

किसी खास एक्सप्रेशनवैल्यू के लिए, एक्सप्रेशन का आकलन कितनी बार किया गया, इसके लिए टपल.

JSON के काेड में दिखाना
{
  "value": value,
  "count": integer
}
फ़ील्ड
value

value (Value format)

एक्सप्रेशन की रिटर्न वैल्यू

count

integer

एक्सप्रेशन के वापस मिलने की संख्या.