- 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 cấp phép
- Bộ kiểm thử
- Trường hợp kiểm thử
- Kỳ vọng
- FunctionMock
- Arg
- Kết quả
- Mã hoá đường dẫn
- ExpressionReport cấp độ
- Vấn đề
- SourcePosition
- Tính nghiêm trọng
- Kết quả kiểm thử
- Tiểu bang
- FunctionCall
- Truy cập biểu thức
- Báo cáo biểu thức
- Số giá trị
- Hãy dùng thử!
Kiểm tra Source
để đảm bảo tính chính xác về cú pháp và ngữ nghĩa. Các vấn đề hiện diện, nếu có, sẽ được trả về cho phương thức gọi kèm theo nội dung mô tả, mức độ nghiêm trọng và vị trí nguồn.
Bạn có thể thực thi phương thức kiểm thử bằng Source
. Việc truyền Source
rất hữu ích cho việc kiểm thử đơn vị các quy tắc mới.
Xin lưu ý rằng các chương trình kiểm thử chạy bằng API REST sẽ sử dụng cơ sở dữ liệu sản xuất, bộ chứa lưu trữ và mã nguồn có liên quan. Việc kiểm thử như vậy có thể làm phát sinh phí sử dụng. Bạn nên sử dụng Bộ mô phỏng cục bộ của Firebase để thực hiện việc kiểm thử Quy tắc vì bạn có thể chạy kiểm thử trên các tài nguyên ngoại tuyến, không phải tài nguyên phát hành công khai 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 một bộ chứa chứa mã nhận dạng người dùng và so khớp đúng siêu dữ liệu:
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 |
Bắt buộc. Đối với các chương trình kiểm thử cho |
Nội dung yêu cầu
Nội dung yêu cầu chứa dữ liệu có cấu trúc sau:
Biểu diễn dưới dạng JSON | |
---|---|
{ "source": { object ( |
Trường | |
---|---|
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 dưới dạng JSON | |
---|---|
{ "issues": [ { object ( |
Trường | |
---|---|
issues[] |
Các vấn đề về |
testResults[] |
Tập hợp kết quả kiểm thử dựa trên các trường hợp kiểm thử trong |
Phạm vi uỷ 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 bài viết Tổng quan về việc xác thực.
Bộ thử nghiệm
TestSuite
là một tập hợp các thực thể TestCase
giúp xác thực tính đúng về 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 như một phần của đối tượng Release
dưới dạng một bước kiểm tra trước khi phát hành.
Biểu diễn dưới dạng JSON | |
---|---|
{
"testCases": [
{
object ( |
Trường | |
---|---|
testCases[] |
Tập hợp các trường hợp kiểm thử liên kết với |
Trường hợp kiểm thử
Thông báo TestCase
cung cấp ngữ cảnh yêu cầu và kỳ vọng về việc ngữ cảnh nhất định sẽ được cho phép hay bị từ chối. Các trường hợp kiểm thử có thể chỉ định request
, resosurce
và functionMocks
để mô phỏng lệnh gọi hàm đến một hàm do dịch vụ cung cấp.
Đối tượng request
đại diện cho ngữ cảnh xuất hiện tại thời điểm yêu cầu.
resource
là giá trị của tài nguyên mục tiêu (ví dụ: siêu dữ liệu của đối tượng GCS hoặc tài liệu Firestore) vì nó xuất hiện trong bộ nhớ 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 có liên quan cho Cloud Firestore ( yêu cầu, tài nguyên) và Cloud Storage cho Firebase (yêu cầu, tài nguyên).
Biểu diễn dưới dạng JSON | |
---|---|
{ "expectation": enum ( |
Trường | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation |
Kiểm thử kỳ vọng. |
||||||||||||||||
request |
Ngữ cảnh yêu cầu. Định dạng chính xác của ngữ cảnh yêu cầu phụ thuộc vào dịch vụ. Hãy 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. Ở mức 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ụ, yêu cầu sẽ bị từ chối vì là đối số không hợp lệ. |
||||||||||||||||
resource |
Giá trị tài nguyên không bắt buộc khi nó xuất hiện trong bộ nhớ 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[] |
Bản mô phỏng hàm Quy tắc (không bắt buộc) cho các hàm do dịch vụ xác định. Nếu bạn không đặt chính sách này, mọi hàm Quy tắc do dịch vụ xác định đều sẽ trả về lỗi, có thể ảnh hưởng hoặc không ảnh hưởng đến kết quả kiểm thử. |
||||||||||||||||
pathEncoding |
Chỉ định xem các đường dẫn (chẳng hạn như request.path) có được mã hoá hay không và cách mã hoá. |
||||||||||||||||
expressionReportLevel |
Chỉ định nội dung cần đưa vào phản hồi. |
Kỳ vọng
Tập hợp các kỳ vọng về trường hợp kiểm thử được hỗ trợ.
Enum | |
---|---|
EXPECTATION_UNSPECIFIED |
Kỳ vọng không xác định. |
ALLOW |
Dự kiến sẽ có kết quả được cho phép. |
DENY |
Bạn sẽ nhận được kết quả bị từ chối. |
Hàm FunctionMock
Định nghĩa hàm Quy tắc mô phỏng.
Mô phỏng phải tham chiếu đến một hàm do dịch vụ mục tiêu khai báo. Loại đối số và kết quả của hàm sẽ được suy luận tại thời điểm kiểm thử. Nếu giá trị đối số hoặc kết quả không tương thích với nội dung khai báo loại hàm, thì yêu cầu sẽ bị coi là không hợp lệ.
Bạn có thể cung cấp nhiều FunctionMock
cho một tên hàm đã cho, 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 hàm quá tải nhất định trong đó tất cả giá trị Arg
đều là Arg.any_value
.
Hãy xem thêm bài viết Các hàm trong ngôn ngữ Quy tắc bảo mật.
Biểu diễn dưới dạng JSON | |
---|---|
{ "function": string, "args": [ { object ( |
Trường | |
---|---|
function |
Tên hàm. Tên hàm phải khớp với tên trong phần khai báo dịch vụ. |
args[] |
Danh sách |
result |
Kết quả mô phỏng của lệnh gọi hàm. |
Arg
Trình so khớp Arg cho hàm mô phỏng.
Biểu diễn dưới dạng JSON | |
---|---|
{ // Union field |
Trường | ||
---|---|---|
Trường kết hợp type . Giá trị đối số được hỗ trợ. type chỉ có thể là một trong những trạng thái sau đây: |
||
exactValue |
Đối số khớp chính xác với giá trị được cung cấp. |
|
anyValue |
Đối số khớp với mọi giá trị đã cung cấp. |
Kết quả
Các giá trị kết quả có thể có từ lệnh gọi mô phỏng hàm.
Biểu diễn dưới dạng JSON | |
---|---|
{ // Union field |
Trường | ||
---|---|---|
Trường kết hợp type . Giá trị kết quả được hỗ trợ. type chỉ có thể là một trong những trạng thái sau đây: |
||
value |
Kết quả là một giá trị thực tế. Loại của giá trị phải khớp với loại của giá trị được dịch vụ khai báo. |
|
undefined |
Kết quả không xác định, nghĩa là không thể tính được kết quả. |
Mã hoá đường dẫn
Loại mã hoá đường dẫn được sử dụng.
Enum | |
---|---|
ENCODING_UNSPECIFIED |
Chưa chỉ định phương thức mã hoá nào. Mặc định là "URL_ENCODED" hành vi. |
URL_ENCODED |
Coi các phân đoạn đường dẫn là URL được mã hoá nhưng có dấu phân tách không được mã hoá ("/"). Đây là chế độ mặc định. |
PLAIN |
Xem toàn bộ đường dẫn là không phải URL được mã hoá, ví dụ: thô. |
Biểu hiện báo cáoCấp độ
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 |
Chưa chỉ định cấp độ. Giá trị mặc định là "NONE" hành vi. |
NONE |
Không bao gồm bất kỳ thông tin bổ sung nào. |
FULL |
Bao gồm báo cáo chi tiết về 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 về việc ngừng sử dụng.
Biểu diễn dưới dạng JSON | |
---|---|
{ "sourcePosition": { object ( |
Trường | |
---|---|
sourcePosition |
Vị trí của vấn đề trong |
description |
Nội dung mô tả ngắn về lỗi. |
severity |
Mức độ nghiêm trọng của vấn đề. |
Vị trí nguồn
Vị trí trong nội dung Source
, bao gồm cả dòng, số cột và chỉ mục của File
trong thông báo Source
. Dùng cho mục đích gỡ lỗi.
Biểu diễn dưới dạng JSON | |
---|---|
{ "fileName": string, "line": integer, "column": integer, "currentOffset": integer, "endOffset": integer } |
Trường | |
---|---|
fileName |
Tên của |
line |
Số dòng của mảnh 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 mảnh nguồn. |
currentOffset |
Vị trí bắt đầu tương ứng với đầu tệp. |
endOffset |
Vị trí kết thúc tương ứng với đầu tệp. |
Tính nghiêm trọng
Tập hợp các mức độ nghiêm trọng của vấn đề.
Enum | |
---|---|
SEVERITY_UNSPECIFIED |
Mức độ nghiêm trọng không xác định. |
DEPRECATION |
Vấn đề ngừng sử dụng đối với bảng sao kê và phương thức có thể không còn được hỗ trợ hoặc duy trì. |
WARNING |
Các cảnh báo như: biến không dùng đến. |
ERROR |
Lỗi như: dấu ngoặc nhọn không khớp hoặc định nghĩa lại biến. |
TestResult
Thông báo về kết quả kiểm thử có chứa trạng thái kiểm thử cũng như nội dung mô tả và vị trí nguồn của các lần kiểm thử không thành công.
Biểu diễn dưới dạng JSON | |
---|---|
{ "state": enum ( |
Trường | |
---|---|
state |
Trạng thái kiểm thử. |
debugMessages[] |
Gỡ lỗi các thông báo liên quan đến các vấn đề thực thi 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 việc quá nhiều hoặc quá ít lệnh gọi mô phỏng hàm 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ể dẫn đến lỗi. Theo mặc định, các quy tắc sẽ bị từ chối, vì vậy, kỳ vọng Ví dụ: |
functionCalls[] |
Tập hợp các lệnh gọi hàm được thực hiện đến phương thức do dịch vụ xác định. Các lệnh gọi hàm được đưa vào theo thứ tự gặp trong quá trình đánh giá, được cung cấp cho cả hàm mô phỏng và hàm không 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 quyền đã truy cập cho một chương trình kiểm thử nhất định. Hàm này trả về vị trí và kết quả đánh giá của tất cả biểu thức cấp quyền đã truy cập có liên quan đến trường hợp kiểm thử, ví dụ:
Để xem báo cáo chi tiết về các trạng thái đánh giá trung gian, hãy xem trường |
expressionReports[] |
Liên kết từ biểu thức trong AST của bộ quy tắc đến các giá trị mà chúng được đánh giá. Lồng một phần để phản ánh cấu trúc AST. Lưu ý rằng trường này thực sự là theo dõi các biểu thức và không phải là các câu lệnh quyền trái ngược với "visitedExpressions" trường ở trên. Biểu thức cố định đã bị bỏ qua. |
Tiểu bang
Các trạng thái hợp lệ cho kết quả kiểm thử.
Enum | |
---|---|
STATE_UNSPECIFIED |
Chưa đặt trạng thái thử nghiệm. |
SUCCESS |
Thử nghiệm thành công. |
FAILURE |
Quá trình kiểm thử không thành công. |
Lệnh gọi hàm
Đại diện cho một lệnh gọi hàm do dịch vụ xác định đã được gọi trong quá trình thực thi kiểm thử.
Biểu diễn dưới dạng JSON | |
---|---|
{ "function": string, "args": [ value ] } |
Trường | |
---|---|
function |
Tên của hàm được gọi. |
args[] |
Các đối số đã được cung cấp cho hàm. |
Biểu thức đã truy cập
Lưu trữ vị trí và kết quả truy cập cho một biểu thức được truy cập trong các quy tắc.
Biểu diễn dưới dạng JSON | |
---|---|
{
"sourcePosition": {
object ( |
Trường | |
---|---|
sourcePosition |
Vị trí trong |
value |
Giá trị được đánh giá cho biểu thức được truy cập, ví dụ: true/false |
Báo cáo biểu hiện
Mô tả vị trí tìm thấy một biểu thức trong tệp và đối tượng đánh giá biểu thức đó trong quá trình sử dụng.
Biểu diễn dưới dạng JSON | |
---|---|
{ "sourcePosition": { object ( |
Trường | |
---|---|
sourcePosition |
Vị trí của biểu thức trong nguồn quy tắc gốc. |
values[] |
Các giá trị mà biểu thức này đánh giá khi gặp. |
children[] |
Biểu thức phụ |
Số lượng giá trị
Tua thông tin về số lần một Biểu thức được đánh giá cho một Biểu thức cụ thể.
Biểu diễn dưới dạng JSON | |
---|---|
{ "value": value, "count": integer } |
Trường | |
---|---|
value |
Giá trị trả về của biểu thức |
count |
Số lần biểu thức đó được trả về. |