- Yêu cầu HTTP
- Tham số đường dẫn
- Nội dung yêu cầu
- Nội dung phản hồi
- Phạm vi ủy quyền
- TestSuite
- trường hợp thử nghiệm
- Kỳ vọng
- Chức năngMock
- Arg
- Kết quả
- Mã hóa đường dẫn
- Biểu thứcBáo cáoMức độ
- Vấn đề
- NguồnVị trí
- Mức độ nghiêm trọng
- Kết quả kiểm tra
- Tình trạng
- Chức năngGọi
- Đã truy cậpBiểu hiện
- Báo cáo biểu thức
- Giá trịĐếm
- Thử nó!
Source
kiểm tra tính chính xác về cú pháp và ngữ nghĩa. Các vấn đề hiện tại, nếu có, sẽ được trả lại cho người gọi kèm theo mô tả, mức độ nghiêm trọng và vị trí nguồn.
Phương pháp thử nghiệm có thể được thực thi với Source
. Chuyển Source
rất hữu ích cho việc kiểm tra đơn vị các quy tắc mới.
Lưu ý rằng các thử nghiệm chạy bằng API REST sẽ sử dụng cơ sở dữ liệu sản xuất, nhóm lưu trữ và các nguồn tài nguyên liên quan. Việc kiểm tra như vậy có thể phải chịu phí sử dụng. Chúng tôi thực sự khuyên bạn nên sử dụng Bộ mô phỏng cục bộ Firebase để thực hiện kiểm tra Quy tắc vì bạn có thể chạy thử nghiệm trên các tài nguyên ngoại tuyến, phi sản xuất mà không phải trả phí sử dụng.
Sau đây là ví dụ về Source
cho phép người dùng tải hình ảnh lên nhóm chứa id người dùng của họ và khớp với siêu dữ liệu chính xác:
Ví dụ
// 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/')
}
}
Yêu cầu HTTP
POST https://firebaserules.googleapis.com/v1/{name=projects/**}:test
URL sử dụng cú pháp Chuyển mã gRPC .
Tham số đường dẫn
Thông số | |
---|---|
name | Yêu cầu. Để kiểm tra |
Nội dung yêu cầu
Phần thân yêu cầu chứa dữ liệu có cấu trúc sau:
Biểu diễn JSON | |
---|---|
{ "source": { object ( |
Lĩnh vực | |
---|---|
source | |
testSuite | Khi |
Nội dung phản hồi
Nếu thành công, nội dung phản hồi sẽ chứa dữ liệu có cấu trúc sau:
Phản hồi cho FirebaseRulesService.TestRuleset
.
Biểu diễn JSON | |
---|---|
{ "issues": [ { object ( |
Lĩnh vực | |
---|---|
issues[] | Các vấn đề |
testResults[] | Tập hợp các kết quả kiểm thử cho các trường hợp kiểm thử trong |
Phạm vi ủy quyền
Yêu cầu một trong các phạm vi OAuth sau:
-
https://www.googleapis.com/auth/cloud-platform
-
https://www.googleapis.com/auth/firebase
-
https://www.googleapis.com/auth/firebase.readonly
Để biết thêm thông tin, hãy xem Tổng quan về xác thực .
TestSuite
TestSuite
là tập hợp các phiên bản TestCase
xác thực tính đúng đắn về mặt logic của các quy tắc. TestSuite
có thể được tham chiếu nội tuyến trong lệnh gọi projects.test
hoặc là một phần của đối tượng Release
dưới dạng kiểm tra trước khi phát hành.
Biểu diễn JSON | |
---|---|
{
"testCases": [
{
object ( |
Lĩnh vực | |
---|---|
testCases[] | Bộ sưu tập các trường hợp thử nghiệm được liên kết với |
trường hợp thử nghiệm
Thông báo TestCase
cung cấp bối cảnh yêu cầu và kỳ vọng về việc liệu bối cảnh đã cho sẽ được cho phép hay bị từ chối. Các trường hợp thử nghiệm có thể chỉ định request
, resosurce
và functionMocks
để mô phỏng lệnh gọi hàm tới hàm do dịch vụ cung cấp.
Đối tượng request
đại diện cho bối cảnh hiện tại tại thời điểm yêu cầu.
resource
là giá trị của tài nguyên đích (ví dụ: siêu dữ liệu của đối tượng GCS hoặc tài liệu Firestore) khi nó xuất hiện trong bộ lưu trữ liên tục trước khi yêu cầu được thực thi.
Xem thêm tài liệu tham khảo liên quan cho Cloud Firestore ( request , tài nguyên ) và Cloud Storage cho Firebase ( request , tài nguyên ).
Biểu diễn JSON | |
---|---|
{ "expectation": enum ( |
Lĩnh vực | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation | Kiểm tra kỳ vọng. | ||||||||||||||||
request | Yêu cầu ngữ cảnh. Định dạng chính xác của ngữ cảnh yêu cầu phụ thuộc vào dịch vụ. Xem tài liệu dịch vụ thích hợp để biết thông tin về các trường và loại được hỗ trợ theo yêu cầu. Tối thiểu, tất cả các dịch vụ đều hỗ trợ các trường và loại sau:
Nếu giá trị yêu cầu không được định dạng đúng cho dịch vụ thì yêu cầu sẽ bị từ chối vì đối số không hợp lệ. | ||||||||||||||||
resource | Giá trị tài nguyên tùy chọn xuất hiện trong bộ lưu trữ liên tục trước khi yêu cầu được thực hiện. Loại tài nguyên phụ thuộc vào giá trị | ||||||||||||||||
functionMocks[] | Mô phỏng chức năng Quy tắc tùy chọn cho các chức năng do dịch vụ xác định. Nếu không được đặt, mọi chức năng Quy tắc do dịch vụ xác định sẽ trả về lỗi. Lỗi này có thể ảnh hưởng hoặc không ảnh hưởng đến kết quả kiểm tra. | ||||||||||||||||
pathEncoding | Chỉ định xem các đường dẫn (chẳng hạn như request.path) có được mã hóa hay không và bằng cách nào. | ||||||||||||||||
expressionReportLevel | Chỉ định những gì nên được bao gồm trong phản hồi. |
Kỳ vọng
Tập hợp các kỳ vọng về trường hợp thử nghiệm được hỗ trợ.
Enum | |
---|---|
EXPECTATION_UNSPECIFIED | Kỳ vọng không xác định. |
ALLOW | Mong đợi một kết quả cho phép. |
DENY | Mong đợi một kết quả bị từ chối. |
Chức năngMock
Định nghĩa hàm Mock Rules.
Mô phỏng phải tham chiếu đến một hàm được khai báo bởi dịch vụ đích. Loại hàm đối số và kết quả sẽ được suy ra tại thời điểm thử nghiệm. Nếu giá trị arg hoặc giá trị kết quả không tương thích với khai báo kiểu hàm thì yêu cầu sẽ bị coi là không hợp lệ.
Có thể cung cấp nhiều hơn một FunctionMock
cho một tên hàm nhất định miễn là các trình so khớp Arg
khác biệt. Có thể chỉ có một hàm cho một tình trạng quá tải nhất định trong đó tất cả các giá trị Arg
đều là Arg.any_value
.
Xem thêm Chức năng trong ngôn ngữ Quy tắc bảo mật .
Biểu diễn JSON | |
---|---|
{ "function": string, "args": [ { object ( |
Lĩnh vực | |
---|---|
function | Tên của chức năng. Tên hàm phải khớp với tên được khai báo dịch vụ cung cấp. |
args[] | Danh sách các giá trị |
result | Kết quả mô phỏng của lệnh gọi hàm. |
Arg
Trình so khớp đối số cho hàm mô phỏng.
Biểu diễn JSON | |
---|---|
{ // Union field |
Lĩnh vực | ||
---|---|---|
type trường liên minh. Các giá trị đối số được hỗ trợ. type chỉ có thể là một trong những loại sau: | ||
exactValue | Đối số khớp chính xác với giá trị được cung cấp. | |
anyValue | Đối số khớp với bất kỳ giá trị nào được cung cấp. |
Kết quả
Các giá trị kết quả có thể có từ lệnh gọi hàm mô phỏng.
Biểu diễn JSON | |
---|---|
{ // Union field |
Lĩnh vực | ||
---|---|---|
type trường liên minh. Giá trị kết quả được hỗ trợ. type chỉ có thể là một trong những loại sau: | ||
value | Kết quả là một giá trị thực tế. Loại giá trị phải khớp với loại được khai báo bởi dịch vụ. | |
undefined | Kết quả không được xác định, có nghĩa là không thể tính được kết quả. |
Mã hóa đường dẫn
Loại mã hóa đường dẫn được sử dụng.
Enum | |
---|---|
ENCODING_UNSPECIFIED | Không có mã hóa nào được chỉ định. Mặc định là hành vi "URL_ENCODED". |
URL_ENCODED | Xử lý các phân đoạn đường dẫn dưới dạng URL được mã hóa nhưng có dấu phân cách không được mã hóa ("/"). Đây là hành vi mặc định. |
PLAIN | Xử lý tổng số đường dẫn dưới dạng mã hóa không phải URL, ví dụ như thô. |
Biểu thứcBáo cáoMức độ
Lượng dữ liệu cần đưa vào phản hồi báo cáo biểu thức.
Enum | |
---|---|
LEVEL_UNSPECIFIED | Không có cấp độ nào được chỉ định. Mặc định là hành vi "KHÔNG". |
NONE | Không bao gồm bất kỳ thông tin bổ sung. |
FULL | Bao gồm báo cáo chi tiết về các biểu thức được đánh giá. |
VISITED | Chỉ bao gồm các biểu thức đã được truy cập trong quá trình đánh giá. |
Vấn đề
Các vấn đề bao gồm cảnh báo, lỗi và thông báo ngừng sử dụng.
Biểu diễn JSON | |
---|---|
{ "sourcePosition": { object ( |
Lĩnh vực | |
---|---|
sourcePosition | Vị trí của vấn đề trong |
description | Mô tả lỗi ngắn gọn. |
severity | Mức độ nghiêm trọng của vấn đề. |
NguồnVị trí
Vị trí trong nội dung Source
bao gồm dòng, số cột và chỉ mục của File
trong thông báo Source
. Được sử dụng cho mục đích gỡ lỗi.
Biểu diễn JSON | |
---|---|
{ "fileName": string, "line": integer, "column": integer, "currentOffset": integer, "endOffset": integer } |
Lĩnh vực | |
---|---|
fileName | Tên của |
line | Số dòng của đoạn nguồn. dựa trên 1. |
column | Cột đầu tiên trên dòng nguồn được liên kết với đoạn nguồn. |
currentOffset | Vị trí bắt đầu so với phần đầu của tập tin. |
endOffset | Vị trí kết thúc so với phần đầu của tập tin. |
Mức độ nghiêm trọng
Tập hợp các mức độ nghiêm trọng của vấn đề.
Enum | |
---|---|
SEVERITY_UNSPECIFIED | Một mức độ nghiêm trọng không xác định. |
DEPRECATION | Vấn đề ngừng sử dụng đối với các câu lệnh và phương pháp có thể không còn được hỗ trợ hoặc duy trì. |
WARNING | Các cảnh báo như: các biến không được sử dụng. |
ERROR | Các lỗi như: dấu ngoặc nhọn không khớp hoặc định nghĩa lại biến. |
Kết quả kiểm tra
Thông báo kết quả kiểm tra chứa trạng thái kiểm tra cũng như mô tả và vị trí nguồn của các lỗi kiểm tra.
Biểu diễn JSON | |
---|---|
{ "state": enum ( |
Lĩnh vực | |
---|---|
state | Trạng thái của bài kiểm tra. |
debugMessages[] | Thông báo gỡ lỗi liên quan đến các vấn đề thực hiện kiểm thử gặp phải trong quá trình đánh giá. Thông báo gỡ lỗi có thể liên quan đến quá nhiều hoặc quá ít lệnh gọi hàm mô phỏng hoặc lỗi thời gian chạy xảy ra trong quá trình đánh giá. Ví dụ: |
errorPosition | Vị trí trong Việc đánh giá một biểu thức có thể gây ra lỗi. Các quy tắc bị từ chối theo mặc định, do đó, kỳ vọng Ví dụ: |
functionCalls[] | Tập hợp các lệnh gọi hàm được thực hiện cho các phương thức do dịch vụ xác định. Các lệnh gọi hàm được bao gồm theo thứ tự chúng gặp phải trong quá trình đánh giá, được cung cấp cho cả các hàm được mô phỏng và không được mô phỏng, đồng thời được đưa vào phản hồi bất kể |
visitedExpressions[] | Tập hợp các biểu thức cấp phép đã truy cập cho một bài kiểm tra nhất định. Điều này trả về vị trí và kết quả đánh giá của tất cả các biểu thức cấp phép đã truy cập có liên quan đến trường hợp thử nghiệm, ví dụ:
Để biết báo cáo chi tiết về các trạng thái đánh giá trung gian, hãy xem trường |
expressionReports[] | Ánh xạ từ biểu thức trong bộ quy tắc AST tới các giá trị mà chúng được đánh giá. Lồng một phần để phản chiếu cấu trúc AST. Lưu ý rằng trường này thực sự đang theo dõi các biểu thức chứ không phải các câu lệnh về quyền, trái ngược với trường "visitedExpressions" ở trên. Biểu thức nghĩa đen được bỏ qua. |
Tình trạng
Các trạng thái hợp lệ cho kết quả kiểm tra.
Enum | |
---|---|
STATE_UNSPECIFIED | Trạng thái kiểm tra chưa được thiết lập. |
SUCCESS | Thử nghiệm là thành công. |
FAILURE | Thử nghiệm là một thất bại. |
Chức năngGọi
Biểu thị lệnh gọi hàm do dịch vụ xác định đã được gọi trong quá trình thực hiện kiểm thử.
Biểu diễn JSON | |
---|---|
{ "function": string, "args": [ value ] } |
Lĩnh vực | |
---|---|
function | Tên của hàm được gọi. |
args[] | Các đối số được cung cấp cho hàm. |
Đã truy cậpBiểu hiện
Lưu trữ vị trí và kết quả truy cập cho một biểu thức được truy cập trong quy tắc.
Biểu diễn JSON | |
---|---|
{
"sourcePosition": {
object ( |
Lĩnh vực | |
---|---|
sourcePosition | Vị trí trong |
value | Giá trị được đánh giá cho biểu thức đã truy cập, ví dụ: đúng/sai |
Báo cáo biểu thức
Mô tả vị trí tìm thấy một biểu thức trong một tệp và nó được đánh giá như thế nào trong quá trình sử dụng.
Biểu diễn JSON | |
---|---|
{ "sourcePosition": { object ( |
Lĩnh vực | |
---|---|
sourcePosition | Vị trí của biểu thức trong nguồn quy tắc ban đầu. |
values[] | Các giá trị mà biểu thức này đánh giá khi gặp phải. |
children[] | Biểu thức con |
Giá trịĐếm
Bộ dữ liệu về số lần một Biểu thức được đánh giá cho một Giá trị biểu thức cụ thể.
Biểu diễn JSON | |
---|---|
{ "value": value, "count": integer } |
Lĩnh vực | |
---|---|
value | Giá trị trả về của biểu thức |
count | Số lần biểu thức đó được trả về. |