- طلب HTTP
- معلمات المسار
- هيئة الطلب
- هيئة الاستجابة
- نطاقات التفويض
- حزمة اختبار
- حالة اختبار
- توقع
- FunctionMock
- أرج
- نتيجة
- PathEncoding
- مستوى تقرير التعبير
- مشكلة
- موقف المصدر
- خطورة
- نتيجة الاختبار
- ولاية
- FunctionCall
- تمت الزيارة
- تقرير التعبير
- عدد القيمة
- جربها!
Source
اختبار للصحة النحوية والدلالية. سيتم إرجاع المشكلات الموجودة، إن وجدت، إلى المتصل مع الوصف وخطورتها وموقع المصدر.
يمكن تنفيذ طريقة الاختبار باستخدام Source
. يعتبر تمرير Source
مفيدًا لاختبار الوحدة لقواعد جديدة.
لاحظ أن الاختبارات التي يتم إجراؤها باستخدام REST API تستخدم قواعد بيانات الإنتاج ومستودعات التخزين ومصادر البحث ذات الصلة. يمكن أن يؤدي مثل هذا الاختبار إلى فرض رسوم استخدام. نوصي بشدة باستخدام Firebase Local Emulator Suite لإجراء اختبار القواعد، حيث يمكنك إجراء الاختبارات على موارد غير متصلة بالإنترنت دون رسوم استخدام.
فيما يلي مثال على 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 Transcoding .
معلمات المسار
حدود | |
---|---|
name | مطلوب. بالنسبة للاختبارات مقابل |
هيئة الطلب
يحتوي نص الطلب على بيانات بالبنية التالية:
تمثيل جيسون | |
---|---|
{ "source": { object ( |
مجالات | |
---|---|
source | |
testSuite | عند توفير |
هيئة الاستجابة
في حالة النجاح، سيحتوي نص الاستجابة على بيانات بالبنية التالية:
الرد على FirebaseRulesService.TestRuleset
.
تمثيل جيسون | |
---|---|
{ "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
كفحص ما قبل النشر.
تمثيل جيسون | |
---|---|
{
"testCases": [
{
object ( |
مجالات | |
---|---|
testCases[] | مجموعة من حالات الاختبار المرتبطة بـ |
حالة اختبار
توفر رسائل TestCase
سياق الطلب وتوقعًا بشأن ما إذا كان سيتم السماح بالسياق المحدد أو رفضه. قد تحدد حالات الاختبار request
resosurce
و functionMocks
للسخرية من استدعاء دالة لوظيفة مقدمة من الخدمة.
يمثل كائن request
السياق الموجود في وقت الطلب.
resource
هو قيمة المورد المستهدف (على سبيل المثال، البيانات الوصفية لكائن GCS أو مستند Firestore) كما يظهر في التخزين المستمر قبل تنفيذ الطلب.
راجع أيضًا الوثائق المرجعية ذات الصلة بـ Cloud Firestore ( الطلب ، المورد ) وCloud Storage for Firebase ( الطلب ، المورد ).
تمثيل جيسون | |
---|---|
{ "expectation": enum ( |
مجالات | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation | توقع الاختبار. | ||||||||||||||||
request | سياق الطلب. يعتمد التنسيق الدقيق لسياق الطلب على الخدمة. راجع وثائق الخدمة المناسبة للحصول على معلومات حول الحقول والأنواع المدعومة عند الطلب. كحد أدنى، تدعم كافة الخدمات المجالات والأنواع التالية:
إذا لم يتم صياغة قيمة الطلب بشكل جيد للخدمة، فسيتم رفض الطلب كوسيطة غير صالحة. | ||||||||||||||||
resource | قيمة المورد الاختيارية كما تظهر في التخزين الدائم قبل تلبية الطلب. يعتمد نوع المورد على قيمة | ||||||||||||||||
functionMocks[] | محاكاة وظيفة القواعد الاختيارية للوظائف المحددة بالخدمة. إذا لم يتم تعيينها، فمن المتوقع أن تقوم أي وظيفة قواعد محددة بالخدمة بإرجاع خطأ، والذي قد يؤثر أو لا يؤثر على نتيجة الاختبار. | ||||||||||||||||
pathEncoding | يحدد ما إذا كان سيتم ترميز المسارات (مثل request.path) وكيفية ذلك. | ||||||||||||||||
expressionReportLevel | يحدد ما يجب تضمينه في الرد. |
توقع
مجموعة توقعات حالة الاختبار المدعومة.
التعدادات | |
---|---|
EXPECTATION_UNSPECIFIED | توقع غير محدد. |
ALLOW | توقع نتيجة مسموحة. |
DENY | توقع نتيجة مرفوضة. |
FunctionMock
تعريف وظيفة القواعد الوهمية.
يجب أن تشير المحاكاة إلى وظيفة معلنة بواسطة الخدمة المستهدفة. سيتم استنتاج نوع وسيطات الوظيفة والنتيجة في وقت الاختبار. إذا كانت قيم الوسيطة أو النتيجة غير متوافقة مع إعلان نوع الوظيفة، فسيتم اعتبار الطلب غير صالح.
يمكن توفير أكثر من FunctionMock
لاسم دالة معينة طالما أن مُطابقات Arg
مختلفة. قد تكون هناك دالة واحدة فقط للتحميل الزائد المحدد حيث تكون جميع قيم Arg
هي Arg.any_value
.
راجع أيضًا الوظائف في لغة قواعد الأمان .
تمثيل جيسون | |
---|---|
{ "function": string, "args": [ { object ( |
مجالات | |
---|---|
function | اسم الوظيفة. يجب أن يتطابق اسم الوظيفة مع الاسم الذي يوفره إعلان الخدمة. |
args[] | قائمة قيم |
result | النتيجة الوهمية لاستدعاء الوظيفة. |
أرج
المطابقات الوسيطية للوظيفة الوهمية.
تمثيل جيسون | |
---|---|
{ // Union field |
مجالات | ||
---|---|---|
type حقل الاتحاد قيم الوسيطة المدعومة. يمكن أن يكون type واحدًا فقط مما يلي: | ||
exactValue | الوسيطة تتطابق تمامًا مع القيمة المقدمة. | |
anyValue | الوسيطة تتطابق مع أي قيمة مقدمة. |
نتيجة
قيم النتائج المحتملة من الاستدعاء الوهمي للوظيفة.
تمثيل جيسون | |
---|---|
{ // Union field |
مجالات | ||
---|---|---|
type حقل الاتحاد قيم النتائج المدعومة يمكن أن يكون type واحدًا فقط مما يلي: | ||
value | والنتيجة هي القيمة الفعلية. يجب أن يتطابق نوع القيمة مع النوع المعلن بواسطة الخدمة. | |
undefined | النتيجة غير محددة، مما يعني أنه لا يمكن حساب النتيجة. |
PathEncoding
نوع ترميز المسار المستخدم.
التعدادات | |
---|---|
ENCODING_UNSPECIFIED | لم يتم تحديد أي ترميز. الإعدادات الافتراضية هي السلوك "URL_ENCODED". |
URL_ENCODED | يتعامل مع أجزاء المسار على أنها عنوان URL مشفر ولكن مع فواصل غير مشفرة ("/"). هذا هو السلوك الافتراضي. |
PLAIN | يتعامل مع المسار الإجمالي على أنه مشفر بدون عنوان URL، على سبيل المثال، خام. |
مستوى تقرير التعبير
مقدار البيانات المطلوب تضمينها في استجابة تقرير التعبير.
التعدادات | |
---|---|
LEVEL_UNSPECIFIED | لم يتم تحديد أي مستوى. الافتراضي هو السلوك "لا شيء". |
NONE | لا تقم بتضمين أي معلومات إضافية. |
FULL | تضمين تقارير مفصلة عن التعبيرات التي تم تقييمها. |
VISITED | قم بتضمين التعبيرات التي تمت زيارتها أثناء التقييم فقط. |
مشكلة
تتضمن المشكلات التحذيرات والأخطاء وإشعارات الإيقاف.
تمثيل جيسون | |
---|---|
{ "sourcePosition": { object ( |
مجالات | |
---|---|
sourcePosition | موضع المسألة في |
description | وصف قصير للخطأ. |
severity | مدى خطورة المشكلة. |
موقف المصدر
الموضع في محتوى Source
بما في ذلك السطر ورقم العمود وفهرس File
في رسالة Source
. تستخدم لأغراض التصحيح.
تمثيل جيسون | |
---|---|
{ "fileName": string, "line": integer, "column": integer, "currentOffset": integer, "endOffset": integer } |
مجالات | |
---|---|
fileName | اسم |
line | رقم السطر للجزء المصدر. 1- القائم. |
column | العمود الأول على السطر المصدر المرتبط بالجزء المصدر. |
currentOffset | موضع البداية بالنسبة إلى بداية الملف. |
endOffset | موضع النهاية بالنسبة إلى بداية الملف. |
خطورة
مجموعة خطورة المشكلة.
التعدادات | |
---|---|
SEVERITY_UNSPECIFIED | شدة غير محددة. |
DEPRECATION | مشكلة إهمال للبيانات والطريقة التي ربما لم تعد مدعومة أو صيانتها. |
WARNING | تحذيرات مثل: المتغيرات غير المستخدمة. |
ERROR | أخطاء مثل: الأقواس المتعرجة غير المتطابقة أو إعادة تعريف المتغير. |
نتيجة الاختبار
رسالة نتيجة الاختبار التي تحتوي على حالة الاختبار بالإضافة إلى الوصف وموضع المصدر لحالات فشل الاختبار.
تمثيل جيسون | |
---|---|
{ "state": enum ( |
مجالات | |
---|---|
state | حالة الاختبار. |
debugMessages[] | تصحيح الرسائل المتعلقة بمشكلات تنفيذ الاختبار التي تمت مواجهتها أثناء التقييم. قد تكون رسائل التصحيح مرتبطة بعدد كبير جدًا أو قليل جدًا من استدعاءات نماذج الوظائف أو بأخطاء وقت التشغيل التي تحدث أثناء التقييم. على سبيل المثال: |
errorPosition | الموضع في قد يؤدي تقييم التعبير إلى حدوث خطأ. يتم رفض القواعد بشكل افتراضي، لذا يكون توقع على سبيل المثال، |
functionCalls[] | مجموعة استدعاءات الوظائف التي تم إجراؤها للطرق المحددة بالخدمة. يتم تضمين استدعاءات الوظائف بالترتيب الذي تمت مواجهتها به أثناء التقييم، ويتم توفيرها لكل من الوظائف التي تم الاستهزاء بها وغير التي تم الاستهزاء بها، ويتم تضمينها في الاستجابة بغض النظر عن |
visitedExpressions[] | مجموعة تعبيرات الأذونات التي تمت زيارتها لاختبار معين. يؤدي ذلك إلى إرجاع المواضع ونتائج التقييم لجميع تعبيرات الأذونات التي تمت زيارتها والتي كانت ذات صلة بحالة الاختبار، على سبيل المثال
للحصول على تقرير مفصل عن حالات التقييم المتوسطة، راجع حقل |
expressionReports[] | التعيين من التعبير في مجموعة القواعد AST إلى القيم التي تم تقييمها عليها. متداخلة جزئيًا لتعكس بنية AST. لاحظ أن هذا الحقل يقوم في الواقع بتتبع التعبيرات وليس بيانات الأذونات على النقيض من حقل "visitedExpressions" أعلاه. تم حذف التعبيرات الحرفية. |
ولاية
حالات صالحة لنتيجة الاختبار.
التعدادات | |
---|---|
STATE_UNSPECIFIED | لم يتم تعيين حالة الاختبار. |
SUCCESS | الاختبار هو النجاح. |
FAILURE | الاختبار فاشل. |
FunctionCall
يمثل استدعاء دالة معرفة بالخدمة تم استدعاؤه أثناء تنفيذ الاختبار.
تمثيل جيسون | |
---|---|
{ "function": string, "args": [ value ] } |
مجالات | |
---|---|
function | اسم الوظيفة التي تم استدعاؤها. |
args[] | الوسائط التي تم توفيرها للوظيفة. |
تمت الزيارة
قم بتخزين الموضع ونتائج الوصول للتعبير الذي تمت زيارته في القواعد.
تمثيل جيسون | |
---|---|
{
"sourcePosition": {
object ( |
مجالات | |
---|---|
sourcePosition | الموضع في |
value | القيمة المقدرة للتعبير الذي تمت زيارته، على سبيل المثال، صحيح/خطأ |
تقرير التعبير
يصف مكان العثور على تعبير في ملف وما تم تقييمه عليه خلال فترة استخدامه.
تمثيل جيسون | |
---|---|
{ "sourcePosition": { object ( |
مجالات | |
---|---|
sourcePosition | موضع التعبير في مصدر القواعد الأصلية. |
values[] | القيم التي يتم تقييم هذا التعبير إليها عند مواجهتها. |
children[] | التعبيرات الفرعية |
عدد القيمة
Tuple لمعرفة عدد المرات التي تم فيها تقييم التعبير إلى قيمة ExpressionValue معينة.
تمثيل جيسون | |
---|---|
{ "value": value, "count": integer } |
مجالات | |
---|---|
value | قيمة الإرجاع للتعبير |
count | عدد مرات إرجاع هذا التعبير. |