צור דוחות בדיקה

Cloud Firestore ו- Realtime Database נשענים על שפות כללים חזקות ותמציתיות שנוצרו במיוחד כדי לשלוט באבטחת מידע ובקרת גישה. עם זאת, מכיוון שהכללים מתארכים ומורכבים יותר, ייתכן שתזדקק לעזרה באיתור שגיאות בהתנהגותם.

האמולטורים של Firebase כוללים את היכולת ליצור דוחות כיסוי כלליים, כך שתוכלו לראות בדיוק מה הערכה של כל ביטוי משנה כאשר אתם משחזרים שגיאה. הדוחות גם מספקים מידע על התדירות שבה כל מקרה מבחן השתמש בכלל, כמו טכניקות "כיסוי קו" מסורתיות.

צור דוח

לאחר הפעלת חבילת בדיקות, תוכל לגשת לדוחות כיסוי בדיקות המראים כיצד הוערך כל אחד מכללי האבטחה שלך.

כדי לקבל את הדוחות, שאל על נקודת קצה חשופה באמולטור בזמן שהוא פועל. לגרסה ידידותית לדפדפן, השתמש בכתובת האתר הבאה:

ענן Firestore

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html
 

מסד נתונים בזמן אמת

http://localhost:9000/.inspect/coverage?ns=<database_name>
 

זה מפר את הכללים שלך לביטויים ותת ביטויים שתוכל להעביר באמצעות העכבר למידע נוסף, כולל מספר הערכות וערכים שהוחזרו. עבור גרסת JSON גולמית של נתונים אלה, כלול את כתובת האתר הבאה בשאילתה שלך:

ענן Firestore

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage
 

מסד נתונים בזמן אמת

http://localhost:9000/.inspect/coverage.json?ns=<database_name>
 

כללים לדוגמא באגים

כדי להבדיל בקלות להפיק דוח הבדיקה, להשתמש אמולטור quickstarts נגיש GitHub עבור ענן Firestore ואת מסד זמן אמת . התחלות מהירות אלה מדריכות אותך להתקין ולאותח את האמולטורים כראוי, ואז ליצור בדיקות לדוגמא ממכלול כללים לדוגמה.

שקול אפליקציה לדוגמה המשתמשת ב- Cloud Firestore הסופרת כמה פעמים משתמשים לוחצים על כפתור. האפליקציה משתמשת בכללים הבאים:

ענן Firestore

 service cloud.firestore {
   match /databases/{database}/documents {
     match /counters/{counter} {
       allow read;
       allow write: if request.resource.data.value == resource.data.value +1;
     }
   }
 }
 

כדי לפשל באגים בשגיאות בכללים המוצגים לעיל, השתמש במבחן JavaScript הבא לדוגמא:

const counter0 = db.collection("counters").doc("0");
await firebase.assertSucceeds(counter0.set({value: 0}));

האמולטור מייצר דוח זמין בכתובת האתר שצוינה לעיל:

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html

הדוח מציג את השגיאות הלא מוגדרות וערך הבאות:

הבעיה בדוגמה ספציפית זו היא שהכללים אינם מבדילים בין יצירת המסמך לעדכון המסמך. כתוצאה מכך, הכתיבה אינה מותרת אם המסמך אינו קיים, ולא ניתן ליצור את המסמך מכיוון שהוא אינו קיים. בידול ה"כתיבה "לשתי פעולות ספציפיות יותר -" צור "ו"עדכון" - פותר את הבעיה.

ענן Firestore

 service cloud.firestore {
   match /databases/{database}/documents {
     match /counters/{counter} {
       allow read;
       allow create: if request.resource.data.value == 0;
       allow update: if request.resource.data.value == resource.data.value +1;
     }
   }
 }
 

הדוח שנוצר מראה באיזו תדירות נעשה שימוש בכל כלל ומה הוחזר.