- HTTP 요청
- 경로 매개변수
- 요청 본문
- 응답 본문
- 승인 범위
- 테스트 모음
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 테스트 케이스
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 기대치
- 함수 예시
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 인수
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- Result
- PathEncoding
- ExpressionReportLevel
- 문제
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- SourcePosition
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 심각도
- TestResult
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 상태
- 함수 호출
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- VisitedExpression
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- ExpressionReport
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- ValueCount
<ph type="x-smartling-placeholder">
- </ph>
- JSON 표현
- 사용해 보기
Source
를 테스트하여 구문 및 의미 체계가 정확한지 확인합니다. 문제가 있는 경우 설명, 심각도, 소스 위치와 함께 호출자에게 반환됩니다.
테스트 메서드는 Source
로 실행할 수 있습니다. Source
를 전달하면 새 규칙을 단위 테스트하는 데 유용합니다.
REST API를 사용하여 실행되는 테스트에는 프로덕션 데이터베이스, 스토리지 버킷, 관련 리소스 소스가 사용됩니다. 이러한 테스트에는 사용 요금이 부과될 수 있습니다. 사용 요금 없이 오프라인 비프로덕션 리소스에서 테스트를 실행할 수 있으므로 Firebase 로컬 에뮬레이터 도구 모음을 사용하여 규칙 테스트를 수행하는 것이 좋습니다.
다음은 사용자가 사용자 ID를 가지고 올바른 메타데이터와 일치하는 이미지를 버킷에 업로드할 수 있도록 허용하는 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 트랜스코딩 문법을 사용합니다.
경로 매개변수
매개변수 | |
---|---|
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
메시지는 요청 컨텍스트와 지정된 컨텍스트의 허용 또는 거부 여부에 대한 기대치를 제공합니다. 테스트 사례에서는 request
, resosurce
, functionMocks
를 지정하여 서비스에서 제공하는 함수의 함수 호출을 모의 처리할 수 있습니다.
request
객체는 요청 시 존재하는 컨텍스트를 나타냅니다.
resource
는 요청이 실행되기 전에 영구 스토리지에 표시되는 대상 리소스 (예: GCS 객체 또는 Firestore 문서의 메타데이터) 값입니다.
Cloud Firestore ( 요청, 리소스) 및 Firebase용 Cloud Storage (요청, 리소스) 관련 참조 문서도 확인하세요.
JSON 표현 | |
---|---|
{ "expectation": enum ( |
필드 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation |
테스트 기대치 |
||||||||||||||||
request |
요청 컨텍스트. 요청 컨텍스트의 정확한 형식은 서비스에 따라 다릅니다. 요청에 지원되는 필드 및 유형에 대한 정보는 해당 서비스 문서를 참조하세요. 최소한 모든 서비스는 다음 필드와 유형을 지원합니다.
서비스에 대한 요청 값의 형식이 올바르지 않으면 요청이 잘못된 인수로 거부됩니다. |
||||||||||||||||
resource |
요청이 처리되기 전에 영구 스토리지에 표시되는 선택적 리소스 값입니다. 리소스 유형은 |
||||||||||||||||
functionMocks[] |
서비스 정의 함수의 선택적 규칙 함수는 모의 함수입니다. 설정하지 않으면 서비스 정의 규칙 함수가 오류를 반환해야 하며, 이는 테스트 결과에 영향을 미칠 수도 있고 영향을 미치지 않을 수도 있습니다. |
||||||||||||||||
pathEncoding |
경로 (예: request.path)의 인코딩 여부와 인코딩 방법을 지정합니다. |
||||||||||||||||
expressionReportLevel |
응답에 포함되어야 하는 항목을 지정합니다. |
예상
지원되는 테스트 사례 기대치 세트입니다.
열거형 | |
---|---|
EXPECTATION_UNSPECIFIED |
기대치가 지정되지 않았습니다. |
ALLOW |
허용되는 결과가 예상됩니다. |
DENY |
거부된 결과가 예상됩니다. |
함수 예시
모의 규칙 함수 정의
모의는 대상 서비스에서 선언한 함수를 참조해야 합니다. 함수 인수 및 결과의 유형은 테스트 시간에 추론됩니다. 인수 또는 결과 값이 함수 유형 선언과 호환되지 않는 경우 요청이 잘못된 것으로 간주됩니다.
Arg
매처가 고유한 한 지정된 함수 이름에 둘 이상의 FunctionMock
를 제공할 수 있습니다. 모든 Arg
값이 Arg.any_value
인 특정 오버로드에는 함수가 하나만 있을 수 있습니다.
보안 규칙 언어의 함수도 참고하세요.
JSON 표현 | |
---|---|
{ "function": string, "args": [ { object ( |
필드 | |
---|---|
function |
함수 이름입니다. 함수 이름은 서비스 선언에서 제공한 이름과 일치해야 합니다. |
args[] |
일치시킬 |
result |
함수 호출의 모의 결과입니다. |
인수
모의 함수의 Arg 매처
JSON 표현 | |
---|---|
{ // Union field |
필드 | ||
---|---|---|
통합 필드 type . 지원되는 인수 값입니다. type 은 다음 중 하나여야 합니다. |
||
exactValue |
인수가 제공된 값과 정확하게 일치합니다. |
|
anyValue |
인수가 제공된 값과 일치합니다. |
결과
함수 모의 호출의 가능한 결과 값입니다.
JSON 표현 | |
---|---|
{ // Union field |
필드 | ||
---|---|---|
통합 필드 type . 지원되는 결과 값입니다. type 은 다음 중 하나여야 합니다. |
||
value |
결과는 실제 값입니다. 값 유형은 서비스가 선언한 유형과 일치해야 합니다. |
|
undefined |
결과가 정의되지 않았습니다. 즉, 결과를 계산할 수 없습니다. |
경로 인코딩
사용된 경로 인코딩 유형입니다.
열거형 | |
---|---|
ENCODING_UNSPECIFIED |
인코딩이 지정되지 않았습니다. 기본값은 'URL_ENCODED'입니다. 있습니다. |
URL_ENCODED |
경로 세그먼트를 URL로 인코딩되었지만 인코딩되지 않은 구분자('/')로 처리합니다. 이는 기본 동작입니다. |
PLAIN |
전체 경로를 URL로 인코딩되지 않은 것으로 처리합니다(예: 원시 데이터입니다. |
ExpressionReportLevel
표현식 보고서 응답에 포함할 데이터의 양입니다.
열거형 | |
---|---|
LEVEL_UNSPECIFIED |
등급이 지정되지 않았습니다. 기본값은 'NONE'입니다. 있습니다. |
NONE |
추가 정보는 포함하지 마세요. |
FULL |
평가된 표현식에 대한 자세한 보고서를 포함합니다. |
VISITED |
평가 중에 방문한 표현식만 포함합니다. |
문제
문제에는 경고, 오류, 지원 중단 알림이 포함됩니다.
JSON 표현 | |
---|---|
{ "sourcePosition": { object ( |
필드 | |
---|---|
sourcePosition |
|
description |
간단한 오류 설명입니다. |
severity |
문제의 심각도입니다. |
소스 위치
Source
콘텐츠 내 위치(줄, 열 번호, Source
메시지 내 File
색인 포함) 디버그 목적으로 사용됩니다.
JSON 표현 | |
---|---|
{ "fileName": string, "line": integer, "column": integer, "currentOffset": integer, "endOffset": integer } |
필드 | |
---|---|
fileName |
|
line |
소스 프래그먼트의 줄 번호입니다. 1 기반. |
column |
소스 프래그먼트와 연결된 소스 줄의 첫 번째 열입니다. |
currentOffset |
파일의 시작 부분을 기준으로 한 시작 위치입니다. |
endOffset |
파일의 시작 부분을 기준으로 한 종료 위치입니다. |
심각도
문제의 심각도 집합입니다.
열거형 | |
---|---|
SEVERITY_UNSPECIFIED |
지정되지 않은 심각도입니다. |
DEPRECATION |
더 이상 지원 또는 유지 관리되지 않는 문과 메서드에 대한 지원 중단 문제입니다. |
WARNING |
사용되지 않는 변수와 같은 경고 |
ERROR |
일치하지 않는 중괄호 또는 변수 재정의와 같은 오류 |
TestResult
테스트 상태 및 테스트 실패에 대한 설명 및 소스 위치가 포함된 테스트 결과 메시지입니다.
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 |
방문한 표현식에 대해 평가된 값입니다. 예: 참/거짓 |
표현식 보고서
파일에서 표현식이 있는 위치와 사용 과정에서 표현식이 평가된 대상을 설명합니다.
JSON 표현 | |
---|---|
{ "sourcePosition": { object ( |
필드 | |
---|---|
sourcePosition |
원래 규칙 소스의 표현식 위치입니다. |
values[] |
이 표현식이 나올 때 평가되는 값입니다. |
children[] |
하위 표현식 |
값 개수
표현식이 특정 ExpressionValue로 평가된 횟수에 대한 튜플입니다.
JSON 표현 | |
---|---|
{ "value": value, "count": integer } |
필드 | |
---|---|
value |
표현식의 반환 값입니다. |
count |
표현식이 반환된 횟수입니다. |