Method: projects.test

সিনট্যাকটিক এবং শব্দার্থিক শুদ্ধতার জন্য পরীক্ষার Source । উপস্থিত সমস্যাগুলি, যদি থাকে, একটি বিবরণ, তীব্রতা এবং উত্স অবস্থান সহ কলারের কাছে ফেরত দেওয়া হবে৷

পরীক্ষার পদ্ধতি Source সাথে কার্যকর করা যেতে পারে। Source পাস করা নতুন নিয়ম ইউনিট পরীক্ষার জন্য দরকারী।

মনে রাখবেন যে REST API ব্যবহার করে চালানো পরীক্ষাগুলি উত্পাদন ডাটাবেস, স্টোরেজ বাকেট এবং সম্পর্কিত রিসোর্স ব্যবহার করে। এই ধরনের পরীক্ষা ব্যবহার চার্জ বহন করতে পারে. আমরা দৃঢ়ভাবে সুপারিশ করি যে আপনি নিয়ম পরীক্ষা করার জন্য 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/')
  }
}

HTTP অনুরোধ

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

URL 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 হল টার্গেট রিসোর্সের মান (যেমন, একটি জিসিএস অবজেক্টের মেটাডেটা বা ফায়ারস্টোর ডকুমেন্ট) কারণ অনুরোধটি কার্যকর করার আগে এটি ক্রমাগত স্টোরেজে প্রদর্শিত হয়।

এছাড়াও ক্লাউড ফায়ারস্টোর ( অনুরোধ , সংস্থান ) এবং ফায়ারবেসের জন্য ক্লাউড স্টোরেজ ( অনুরোধ , সংস্থান ) এর জন্য সম্পর্কিত রেফারেন্স ডকুমেন্টেশন দেখুন।

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
params map<string, string>
পথ string
সময় google.protobuf.Timestamp

অনুরোধ মান পরিষেবার জন্য ভালভাবে গঠিত না হলে, অনুরোধটি একটি অবৈধ যুক্তি হিসাবে প্রত্যাখ্যান করা হবে।

resource

value ( Value format)

ঐচ্ছিক রিসোর্স ভ্যালু যেমনটি রিকোয়েস্ট পূর্ণ হওয়ার আগে ক্রমাগত স্টোরেজে দেখা যায়।

রিসোর্সের ধরন request.path মানের উপর নির্ভর করে।

functionMocks[]

object ( FunctionMock )

ঐচ্ছিক নিয়ম ফাংশন পরিষেবা-সংজ্ঞায়িত ফাংশন জন্য উপহাস. যদি সেট না করা হয়, কোনো পরিষেবা-সংজ্ঞায়িত নিয়ম ফাংশন একটি ত্রুটি ফেরত দেবে বলে আশা করা হয়, যা পরীক্ষার ফলাফলকে প্রভাবিত করতে পারে বা নাও করতে পারে।

pathEncoding

enum ( PathEncoding )

পাথ (যেমন request.path) এনকোড করা হয়েছে কিনা এবং কিভাবে তা নির্দিষ্ট করে।

expressionReportLevel

enum ( ExpressionReportLevel )

প্রতিক্রিয়াতে কী অন্তর্ভুক্ত করা উচিত তা নির্দিষ্ট করে।

প্রত্যাশা

সমর্থিত পরীক্ষার ক্ষেত্রে প্রত্যাশার সেট।

Enums
EXPECTATION_UNSPECIFIED অনির্দিষ্ট প্রত্যাশা।
ALLOW একটি অনুমোদিত ফলাফল আশা করুন.
DENY একটি অস্বীকার ফলাফল আশা.

ফাংশনমক

মক রুলস ফাংশনের সংজ্ঞা।

Mocks লক্ষ্য পরিষেবা দ্বারা ঘোষিত একটি ফাংশন উল্লেখ করা আবশ্যক. ফাংশন args এর ধরন এবং ফলাফল পরীক্ষার সময় অনুমান করা হবে। যদি হয় আর্গ বা ফলাফলের মানগুলি ফাংশন প্রকার ঘোষণার সাথে সামঞ্জস্যপূর্ণ না হয়, তাহলে অনুরোধটি অবৈধ বলে বিবেচিত হবে৷

একটি প্রদত্ত ফাংশনের নামের জন্য একাধিক 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 matchers.

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

ফলাফলটি অনির্ধারিত, যার অর্থ ফলাফল গণনা করা যায়নি।

পাথএনকোডিং

ব্যবহৃত পাথ এনকোডিংয়ের ধরন।

Enums
ENCODING_UNSPECIFIED কোন এনকোডিং নির্দিষ্ট করা হয়নি. "URL_ENCODED" আচরণে ডিফল্ট।
URL_ENCODED পাথ সেগমেন্টগুলিকে ইউআরএল এনকোড করা কিন্তু নন-এনকোডেড সেপারেটর ("/") হিসেবে বিবেচনা করে। এটাই স্বাভাবিক ব্যবহার।
PLAIN টোটাল পাথকে নন-ইউআরএল এনকোড করা যেমন কাঁচা হিসাবে বিবেচনা করে।

এক্সপ্রেশন রিপোর্ট লেভেল

এক্সপ্রেশন রিপোর্টের প্রতিক্রিয়াতে যে পরিমাণ ডেটা অন্তর্ভুক্ত করতে হবে।

Enums
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 বার্তায় File একটি সূচী সহ Source বিষয়বস্তুর অবস্থান। ডিবাগ উদ্দেশ্যে ব্যবহৃত হয়।

JSON প্রতিনিধিত্ব
{
  "fileName": string,
  "line": integer,
  "column": integer,
  "currentOffset": integer,
  "endOffset": integer
}
ক্ষেত্র
fileName

string

File নাম।

line

integer

উৎস খণ্ডের লাইন সংখ্যা। 1-ভিত্তিক।

column

integer

সোর্স ফ্র্যাগমেন্টের সাথে যুক্ত সোর্স লাইনের প্রথম কলাম।

currentOffset

integer

ফাইলের শুরুর সাথে সম্পর্কিত শুরু অবস্থান।

endOffset

integer

ফাইলের শুরুর সাথে সম্পর্কিত শেষ অবস্থান।

নির্দয়তা

সমস্যার তীব্রতার সেট।

Enums
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 )

AST রুলসেটের এক্সপ্রেশন থেকে মানচিত্রে ম্যাপিং যা তাদের মূল্যায়ন করা হয়েছিল। AST কাঠামো মিরর করার জন্য আংশিক-নেস্টেড। মনে রাখবেন যে এই ক্ষেত্রটি আসলে এক্সপ্রেশন ট্র্যাক করছে এবং উপরের "ভিজিটেড এক্সপ্রেশন" ফিল্ডের বিপরীতে অনুমতি বিবৃতি নয়। আক্ষরিক অভিব্যক্তি বাদ দেওয়া হয়।

অবস্থা

পরীক্ষার ফলাফলের জন্য বৈধ রাজ্য।

Enums
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-এ মূল্যায়ন করা হয়েছে তার জন্য Tuple.

JSON প্রতিনিধিত্ব
{
  "value": value,
  "count": integer
}
ক্ষেত্র
value

value ( Value format)

এক্সপ্রেশনের রিটার্ন মান

count

integer

সেই অভিব্যক্তিটি কতবার ফিরে এসেছে।