- בקשת HTTP
- פרמטרים של נתיב
- גוף הבקשה
- גוף תגובה
- היקף ההרשאה
- חבילת בדיקות
- TestCase
- תוֹחֶלֶת
- FunctionMock
- ארג
- תוֹצָאָה
- קידוד נתיב
- ExpressionReportLevel
- נושא
- מיקום מקור
- חוּמרָה
- תוצאות בדיקה
- מדינה
- FunctionCall
- VisitedExpression
- ExpressionReport
- ספירת ערך
- נסה זאת!
Source
בדיקה לנכונות תחבירית וסמנטית. בעיות קיימות, אם ישנן, יוחזרו למתקשר עם תיאור, חומרה ומיקום המקור.
ניתן לבצע את שיטת הבדיקה עם Source
. מעבר Source
שימושי לבדיקת יחידות כללים חדשים.
שים לב שבדיקות המופעלות באמצעות REST API משתמשות במסדי נתונים של ייצור, דלי אחסון ומקורות rsesources קשורים. בדיקה כזו יכולה לגרור דמי שימוש. אנו ממליצים בחום להשתמש ב-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
כתובת האתר משתמשת בתחביר GRPC Transcoding .
פרמטרים של נתיב
פרמטרים | |
---|---|
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
הודעות TestCase
מספקות את הקשר הבקשה וציפייה אם ההקשר הנתון יאושר או יידחה. מקרי בדיקה עשויים לציין את request
, resosurce
ו- functionMocks
כדי ללעוג לקריאת פונקציה לפונקציה הניתנת בשירות.
אובייקט request
מייצג את ההקשר הנוכח בזמן הבקשה.
resource
הוא הערך של משאב היעד (למשל, מטא נתונים של אובייקט GCS או מסמך Firestore) כפי שהוא מופיע באחסון מתמשך לפני ביצוע הבקשה.
ראה גם את התיעוד הקשור ל-Cloud Firestore ( בקשה , משאב ) ו-Cloud Storage for Firebase ( בקשה , משאב ).
ייצוג JSON | |
---|---|
{ "expectation": enum ( |
שדות | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation | מבחן ציפייה. | ||||||||||||||||
request | בקש הקשר. הפורמט המדויק של הקשר הבקשה תלוי בשירות. עיין בתיעוד השירות המתאים למידע על השדות והסוגים הנתמכים על הבקשה. לכל הפחות, כל השירותים תומכים בתחומים ובסוגים הבאים:
אם ערך הבקשה אינו מעוצב היטב עבור השירות, הבקשה תידחה כארגומנט לא חוקי. | ||||||||||||||||
resource | ערך משאב אופציונלי כפי שהוא מופיע באחסון מתמשך לפני מילוי הבקשה. סוג המשאב תלוי בערך | ||||||||||||||||
functionMocks[] | פונקציית כללים אופציונליים דוגלים בפונקציות המוגדרות בשירות. אם לא מוגדר, כל פונקציית כללים המוגדרים בשירות צפויה להחזיר שגיאה, שעשויה להשפיע או לא להשפיע על תוצאת הבדיקה. | ||||||||||||||||
pathEncoding | מציין אם נתיבים (כגון request.path) מקודדים וכיצד. | ||||||||||||||||
expressionReportLevel | מפרט מה צריך לכלול בתגובה. |
תוֹחֶלֶת
מערך הציפיות הנתמכות למקרה מבחן.
תקצירים | |
---|---|
EXPECTATION_UNSPECIFIED | ציפייה לא מוגדרת. |
ALLOW | צפו לתוצאה מותרת. |
DENY | צפו לתוצאה מוכחשת. |
FunctionMock
הגדרת פונקציית חוקים מדומים.
מוקס חייב להתייחס לפונקציה שהוכרזה על ידי שירות היעד. סוג הפונקציה args והתוצאה יוסק בזמן הבדיקה. אם ערכי arg או תוצאה אינם תואמים להצהרת סוג פונקציה, הבקשה תיחשב לא חוקית.
ניתן לספק יותר מ- FunctionMock
אחד עבור שם פונקציה נתון כל עוד מתאמי Arg
נבדלים. ייתכן שיש רק פונקציה אחת לעומס יתר נתון כאשר כל ערכי Arg
הם Arg.any_value
.
ראה גם פונקציות בשפת כללי האבטחה .
ייצוג JSON | |
---|---|
{ "function": string, "args": [ { object ( |
שדות | |
---|---|
function | שם הפונקציה. שם הפונקציה חייב להתאים לשם המסופק בהצהרת שירות. |
args[] | רשימת ערכי |
result | התוצאה המדומה של קריאת הפונקציה. |
ארג
מתאמים ארגו עבור פונקציית המדומה.
ייצוג JSON | |
---|---|
{ // Union field |
שדות | ||
---|---|---|
type שדה איחוד. ערכי ארגומנט נתמכים. type יכול להיות רק אחד מהאפשרויות הבאות: | ||
exactValue | ארגומנט תואם בדיוק את הערך שסופק. | |
anyValue | ארגומנט תואם לכל ערך שסופק. |
תוֹצָאָה
ערכי תוצאה אפשריים מהפונקציה מדומה להתקשרות.
ייצוג JSON | |
---|---|
{ // Union field |
שדות | ||
---|---|---|
type שדה איחוד. ערכי תוצאות נתמכים. type יכול להיות רק אחד מהאפשרויות הבאות: | ||
value | התוצאה היא ערך ממשי. סוג הערך חייב להתאים לסוג המוצהר על ידי השירות. | |
undefined | התוצאה אינה מוגדרת, כלומר לא ניתן היה לחשב את התוצאה. |
קידוד נתיב
סוג קידוד הנתיב בשימוש.
תקצירים | |
---|---|
ENCODING_UNSPECIFIED | לא צוין קידוד. ברירת המחדל להתנהגות "URL_ENCODED". |
URL_ENCODED | מתייחס לקטעי נתיב כמקודדים בכתובת אתר אך עם מפרידים לא מקודדים ("/"). זוהי התנהגות ברירת המחדל. |
PLAIN | מתייחס לנתיב הכולל כאל לא מקודד כתובת אתר, למשל גולמי. |
ExpressionReportLevel
כמות הנתונים שיש לכלול בתגובת דוח הביטוי.
תקצירים | |
---|---|
LEVEL_UNSPECIFIED | לא צוינה רמה. ברירת המחדל היא התנהגות "אין". |
NONE | אל תכלול מידע נוסף. |
FULL | כלול דיווח מפורט על ביטויים שהוערכו. |
VISITED | כלול רק את הביטויים שבהם ביקרו במהלך ההערכה. |
נושא
הבעיות כוללות אזהרות, שגיאות והודעות הוצאה משימוש.
ייצוג JSON | |
---|---|
{ "sourcePosition": { object ( |
שדות | |
---|---|
sourcePosition | מיקום הבעיה |
description | תיאור שגיאה קצר. |
severity | חומרת הנושא. |
מיקום מקור
מיקום בתוכן Source
כולל השורה, מספר העמודה שלו ואינדקס של File
בהודעת Source
. משמש למטרות ניפוי באגים.
ייצוג JSON | |
---|---|
{ "fileName": string, "line": integer, "column": integer, "currentOffset": integer, "endOffset": integer } |
שדות | |
---|---|
fileName | שם |
line | מספר שורה של קטע המקור. מבוסס 1. |
column | העמודה הראשונה בשורת המקור המשויכת לפרגמנט המקור. |
currentOffset | מיקום התחלה ביחס לתחילת הקובץ. |
endOffset | מיקום סיום ביחס לתחילת הקובץ. |
חוּמרָה
מכלול חומרות הנושא.
תקצירים | |
---|---|
SEVERITY_UNSPECIFIED | חומרה לא מוגדרת. |
DEPRECATION | בעיית הוצאה משימוש עבור הצהרות ושיטה שאולי כבר לא נתמכות או נשמרות. |
WARNING | אזהרות כגון: משתנים שאינם בשימוש. |
ERROR | שגיאות כגון: פלטה מתולתלת ללא תחרות או הגדרה מחדש משתנה. |
תוצאות בדיקה
הודעת תוצאת בדיקה המכילה את מצב הבדיקה וכן תיאור ומיקום מקור לכשלים בבדיקה.
ייצוג JSON | |
---|---|
{ "state": enum ( |
שדות | |
---|---|
state | מצב המבחן. |
debugMessages[] | הודעות ניפוי באגים הקשורות לבעיות ביצוע בדיקה שנתקלו במהלך הערכה. הודעות ניפוי באגים עשויות להיות קשורות ליותר מדי או למעט מדי הפעלות של לעג לפונקציות או לשגיאות זמן ריצה המתרחשות במהלך הערכה. לדוגמה: |
errorPosition | מיקום הערכה של ביטוי עלולה לגרום לשגיאה. כללים נדחים כברירת מחדל, כך שציפית למשל |
functionCalls[] | קבוצת קריאות הפונקציות שבוצעו לשיטות מוגדרות שירות. קריאות פונקציה נכללות בסדר שבו הן נתקלות במהלך הערכה, מסופקות הן עבור פונקציות לעג והן עבור פונקציות שלא נלעגו, ונכללות בתגובה ללא קשר |
visitedExpressions[] | קבוצת ביטויי ההרשאה שבהם ביקרו עבור מבחן נתון. זה מחזיר את המיקומים ותוצאות ההערכה של כל ביטויי ההרשאה שבהם ביקרו שהיו רלוונטיים למקרה הבדיקה, למשל
לדוח מפורט של מצבי הערכת הביניים, עיין בשדה |
expressionReports[] | המיפוי מביטוי בערכת הכללים AST לערכים שהם הוערכו לפיהם. מקונן חלקית לשיקוף מבנה AST. שים לב ששדה זה למעשה עוקב אחר ביטויים ולא הצהרות הרשאה בניגוד לשדה "visitedExpressions" למעלה. ביטויים מילוליים נשמטים. |
מדינה
מצבים תקפים עבור תוצאת הבדיקה.
תקצירים | |
---|---|
STATE_UNSPECIFIED | מצב הבדיקה לא מוגדר. |
SUCCESS | המבחן הוא הצלחה. |
FAILURE | מבחן הוא כישלון. |
FunctionCall
מייצג קריאת פונקציה המוגדרת בשירות שהופעלה במהלך ביצוע הבדיקה.
ייצוג JSON | |
---|---|
{ "function": string, "args": [ value ] } |
שדות | |
---|---|
function | שם הפונקציה שהופעלה. |
args[] | הארגומנטים שסופקו לפונקציה. |
VisitedExpression
אחסן את המיקום ואת תוצאת הגישה לביטוי שבו ביקר בכללים.
ייצוג JSON | |
---|---|
{
"sourcePosition": {
object ( |
שדות | |
---|---|
sourcePosition | מיקום |
value | הערך המוערך עבור הביטוי שביקר, למשל נכון/לא נכון |
ExpressionReport
מתאר היכן בקובץ נמצא ביטוי ולמה הוא הוערך במהלך השימוש בו.
ייצוג JSON | |
---|---|
{ "sourcePosition": { object ( |
שדות | |
---|---|
sourcePosition | מיקום הביטוי במקור הכללים המקורי. |
values[] | ערכים שהביטוי הזה הוערך אליהם כאשר הוא נתקל. |
children[] | ביטויי משנה |
ספירת ערך
טפל כמה פעמים ביטוי הוערך ל-ExpressionValue מסוים.
ייצוג JSON | |
---|---|
{ "value": value, "count": integer } |
שדות | |
---|---|
value | ערך ההחזרה של הביטוי |
count | מספר הפעמים שהביטוי הזה חזר. |