- Solicitud HTTP
- Parámetros de ruta
- Cuerpo de la solicitud
- Cuerpo de respuesta
- Ámbitos de autorización
- Banco de pruebas
- Caso de prueba
- Expectativa
- FunciónMock
- Arg
- Resultado
- PathEncoding
- ExpressionReportLevel
- Asunto
- SourcePosition
- Gravedad
- Resultado de la prueba
- Expresar
- Llamada de función
- VisitedExpression
- ExpressionReport
- ValueCount
- ¡Intentalo!
Source
prueba para la corrección sintáctica y semántica. Los problemas presentes, si los hubiera, se devolverán a la persona que llama con una descripción, gravedad y ubicación de origen.
El método de prueba se puede ejecutar con Source
. Passing Source
es útil para realizar pruebas unitarias de nuevas reglas.
Tenga en cuenta que las pruebas que se ejecutan con la API REST utilizan bases de datos de producción, depósitos de almacenamiento y recursos relacionados. Dichas pruebas pueden generar cargos por uso. Te recomendamos encarecidamente que uses Firebase Local Emulator Suite para realizar pruebas de reglas, ya que puedes ejecutar pruebas en recursos que no son de producción y sin conexión sin cargos por uso.
El siguiente es un ejemplo de Source
que permite a los usuarios subir imágenes a un depósito con su identificación de usuario y que coinciden con los metadatos correctos:
Ejemplo
// 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/')
}
}
Solicitud HTTP
POST https://firebaserules.googleapis.com/v1/{name=projects/**}:test
La URL utiliza la sintaxis de transcodificación gRPC .
Parámetros de ruta
Parámetros | |
---|---|
name | Requerido. Para las pruebas contra la |
Cuerpo de la solicitud
El cuerpo de la solicitud contiene datos con la siguiente estructura:
Representación JSON | |
---|---|
{ "source": { object ( |
Campos | |
---|---|
source | |
testSuite | Cuando la |
Cuerpo de respuesta
Si tiene éxito, el cuerpo de la respuesta contiene datos con la siguiente estructura:
La respuesta para FirebaseRulesService.TestRuleset
.
Representación JSON | |
---|---|
{ "issues": [ { object ( |
Campos | |
---|---|
issues[] | Problemas de |
testResults[] | El conjunto de resultados de prueba dados los casos de prueba en |
Ámbitos de autorización
Requiere uno de los siguientes ámbitos de OAuth:
-
https://www.googleapis.com/auth/cloud-platform
-
https://www.googleapis.com/auth/firebase
-
https://www.googleapis.com/auth/firebase.readonly
Para obtener más información, consulte la descripción general de la autenticación .
Banco de pruebas
TestSuite
es una colección de instancias de TestCase
que validan la corrección lógica de las reglas. Se puede hacer referencia al TestSuite
en línea dentro de una invocación de projects.test
o como parte de un objeto Release
como una comprobación previa al lanzamiento.
Representación JSON | |
---|---|
{
"testCases": [
{
object ( |
Campos | |
---|---|
testCases[] | Colección de casos de prueba asociados con |
Caso de prueba
TestCase
mensajes de TestCase
proporcionan el contexto de la solicitud y una expectativa sobre si el contexto dado se permitirá o denegará. Los casos de prueba pueden especificar la request
, el resosurce
y la functionMocks
resosurce
una llamada de función a una función proporcionada por el servicio.
El objeto de request
representa el contexto presente en el momento de la solicitud.
El resource
es el valor del recurso de destino (por ejemplo, metadatos de un objeto GCS o documento Firestore) tal como aparece en el almacenamiento persistente antes de que se ejecute la solicitud.
Consulta también la documentación de referencia relacionada para Cloud Firestore ( solicitud , recurso ) y Cloud Storage para Firebase ( solicitud , recurso ).
Representación JSON | |
---|---|
{ "expectation": enum ( |
Campos | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation | Prueba de expectativa. | ||||||||||||||||
request | Solicitar contexto. El formato exacto del contexto de la solicitud depende del servicio. Consulte la documentación de servicio correspondiente para obtener información sobre los campos y tipos admitidos en la solicitud. Como mínimo, todos los servicios admiten los siguientes campos y tipos:
Si el valor de la solicitud no está bien formado para el servicio, la solicitud se rechazará como un argumento no válido. | ||||||||||||||||
resource | Valor de recurso opcional tal como aparece en el almacenamiento persistente antes de que se cumpla la solicitud. El tipo de recurso depende del valor de | ||||||||||||||||
functionMocks[] | La función de reglas opcionales simula las funciones definidas por el servicio. Si no se establece, se espera que cualquier función de reglas definidas por el servicio devuelva un error, que puede o no influir en el resultado de la prueba. | ||||||||||||||||
pathEncoding | Especifica si las rutas (como request.path) están codificadas y cómo. | ||||||||||||||||
expressionReportLevel | Especifica qué debe incluirse en la respuesta. |
Expectativa
El conjunto de expectativas de casos de prueba admitidos.
Enumeraciones | |
---|---|
EXPECTATION_UNSPECIFIED | Expectativa no especificada. |
ALLOW | Espere un resultado permitido. |
DENY | Espere un resultado denegado. |
FunciónMock
Definición de función de reglas simuladas.
Los simulacros deben hacer referencia a una función declarada por el servicio de destino. El tipo de los argumentos de la función y el resultado se deducirán en el momento de la prueba. Si el argumento o los valores de resultado no son compatibles con la declaración del tipo de función, la solicitud se considerará inválida.
Se puede proporcionar más de un FunctionMock
para un nombre de función dado siempre que los comparadores Arg
sean distintos. Puede haber solo una función para una sobrecarga dada donde todos los valores de Arg
son Arg.any_value
.
Consulte también Funciones en el lenguaje Reglas de seguridad .
Representación JSON | |
---|---|
{ "function": string, "args": [ { object ( |
Campos | |
---|---|
function | El nombre de la función. El nombre de la función debe coincidir con uno proporcionado por una declaración de servicio. |
args[] | La lista de valores de |
result | El resultado simulado de la llamada a la función. |
Arg
Coincidentes de argumentos para la función de simulación.
Representación JSON | |
---|---|
{ // Union field |
Campos | ||
---|---|---|
type campo de unión. Valores de argumento admitidos. type puede ser solo uno de los siguientes: | ||
exactValue | El argumento coincide exactamente con el valor proporcionado. | |
anyValue | El argumento coincide con cualquier valor proporcionado. |
Resultado
Posibles valores de resultado de la invocación simulada de la función.
Representación JSON | |
---|---|
{ // Union field |
Campos | ||
---|---|---|
type campo de unión. Valores de resultado admitidos. type puede ser solo uno de los siguientes: | ||
value | El resultado es un valor real. El tipo del valor debe coincidir con el del tipo declarado por el servicio. | |
undefined | El resultado no está definido, lo que significa que no se pudo calcular. |
PathEncoding
El tipo de codificación de ruta utilizada.
Enumeraciones | |
---|---|
ENCODING_UNSPECIFIED | No se ha especificado ninguna codificación. El comportamiento predeterminado es "URL_ENCODED". |
URL_ENCODED | Trata los segmentos de ruta como URL codificados pero con separadores no codificados ("/"). Este es el comportamiento predeterminado. |
PLAIN | Trata la ruta total como no codificada en URL, por ejemplo, sin formato. |
ExpressionReportLevel
La cantidad de datos que se incluirán en la respuesta del informe de expresión.
Enumeraciones | |
---|---|
LEVEL_UNSPECIFIED | No se ha especificado ningún nivel. El comportamiento predeterminado es "NINGUNO". |
NONE | No incluya información adicional. |
FULL | Incluya informes detallados sobre las expresiones evaluadas. |
VISITED | Incluya únicamente las expresiones que fueron visitadas durante la evaluación. |
Asunto
Los problemas incluyen advertencias, errores y avisos de obsolescencia.
Representación JSON | |
---|---|
{ "sourcePosition": { object ( |
Campos | |
---|---|
sourcePosition | Posición del problema en la |
description | Breve descripción del error. |
severity | La gravedad del problema. |
SourcePosition
Posición en el contenido de Source
, incluida su línea, número de columna y un índice del File
en el mensaje de Source
. Se utiliza con fines de depuración.
Representación JSON | |
---|---|
{ "fileName": string, "line": integer, "column": integer, "currentOffset": integer, "endOffset": integer } |
Campos | |
---|---|
fileName | Nombre del |
line | Número de línea del fragmento de origen. 1 basado. |
column | Primera columna de la línea fuente asociada con el fragmento fuente. |
currentOffset | Posición inicial relativa al principio del archivo. |
endOffset | Posición final relativa al comienzo del archivo. |
Gravedad
El conjunto de gravedad del problema.
Enumeraciones | |
---|---|
SEVERITY_UNSPECIFIED | Una gravedad no especificada. |
DEPRECATION | Problema de obsolescencia para declaraciones y métodos que ya no pueden ser compatibles o mantenidos. |
WARNING | Advertencias como: variables no utilizadas. |
ERROR | Errores como: llaves inigualables o redefinición de variables. |
Resultado de la prueba
Mensaje de resultado de la prueba que contiene el estado de la prueba, así como una descripción y la posición de origen de las fallas de la prueba.
Representación JSON | |
---|---|
{ "state": enum ( |
Campos | |
---|---|
state | Estado de la prueba. |
debugMessages[] | Depurar mensajes relacionados con problemas de ejecución de pruebas encontrados durante la evaluación. Los mensajes de depuración pueden estar relacionados con demasiadas o muy pocas invocaciones de simulaciones de funciones o con errores de tiempo de ejecución que ocurren durante la evaluación. Por ejemplo: |
errorPosition | Posición en la La evaluación de una expresión puede generar un error. Las reglas se niegan de forma predeterminada, por lo que una expectativa Por ejemplo, |
functionCalls[] | El conjunto de llamadas a funciones realizadas a métodos definidos por el servicio. Las llamadas a funciones se incluyen en el orden en que se encuentran durante la evaluación, se proporcionan para funciones simuladas y no simuladas, y se incluyen en la respuesta independientemente del |
visitedExpressions[] | El conjunto de expresiones de permisos visitadas para una prueba determinada. Esto devuelve las posiciones y los resultados de la evaluación de todas las expresiones de permiso visitadas que fueron relevantes para el caso de prueba, p. Ej.
Para obtener un informe detallado de los estados de evaluación intermedia, consulte el campo |
expressionReports[] | El mapeo de la expresión en el conjunto de reglas AST a los valores con los que se evaluaron. Parcialmente anidado para reflejar la estructura AST. Tenga en cuenta que este campo en realidad está rastreando expresiones y no declaraciones de permisos en contraste con el campo "VisitExpressions" anterior. Se omiten las expresiones literales. |
Expresar
Estados válidos para el resultado de la prueba.
Enumeraciones | |
---|---|
STATE_UNSPECIFIED | El estado de prueba no está establecido. |
SUCCESS | La prueba es un éxito. |
FAILURE | La prueba es un fracaso. |
Llamada de función
Representa una llamada de función definida por el servicio que se invocó durante la ejecución de la prueba.
Representación JSON | |
---|---|
{ "function": string, "args": [ value ] } |
Campos | |
---|---|
function | Nombre de la función invocada. |
args[] | Los argumentos que se proporcionaron a la función. |
VisitedExpression
Almacene la posición y el resultado de acceso para una expresión visitada en reglas.
Representación JSON | |
---|---|
{
"sourcePosition": {
object ( |
Campos | |
---|---|
sourcePosition | Posición en la |
value | El valor evaluado para la expresión visitada, por ejemplo, verdadero / falso |
ExpressionReport
Describe en qué parte de un archivo se encuentra una expresión y con qué se evaluó durante el transcurso de su uso.
Representación JSON | |
---|---|
{ "sourcePosition": { object ( |
Campos | |
---|---|
sourcePosition | Posición de expresión en la fuente de reglas originales. |
values[] | Valores a los que se evaluó esta expresión cuando se encontró. |
children[] | Subexpresiones |
ValueCount
Tupla de cuántas veces se evaluó una expresión en un valor de expresión en particular.
Representación JSON | |
---|---|
{ "value": value, "count": integer } |
Campos | |
---|---|
value | El valor de retorno de la expresión. |
count | La cantidad de veces que regresó esa expresión. |