- solicitud HTTP
- Parámetros de ruta
- Cuerpo de la solicitud
- Cuerpo de respuesta
- Alcances de autorización
- Banco de pruebas
- Caso de prueba
- Expectativa
- Función simulada
- Arg
- Resultado
- Codificación de ruta
- Nivel de informe de expresión
- Asunto
- Posición de origen
- Gravedad
- Resultado de la prueba
- Estado
- Llamada de función
- VisitadoExpresión
- Informe de expresión
- ValorContar
- ¡Intentalo!
Source
de prueba para la corrección sintáctica y semántica. Los problemas presentes, si los hay, se devolverán a la persona que llama con una descripción, gravedad y ubicación del origen.
El método de prueba se puede ejecutar con Source
. Pasar Source
es útil para realizar pruebas unitarias de nuevas reglas.
Tenga en cuenta que las pruebas ejecutadas con la API REST utilizan bases de datos de producción, depósitos de almacenamiento y recursos relacionados. Estas pruebas pueden generar cargos de uso. Le recomendamos encarecidamente que utilice Firebase Local Emulator Suite para realizar pruebas de reglas, ya que puede ejecutar pruebas en recursos fuera de línea y que no son de producción sin cargos por uso.
El siguiente es un ejemplo de Source
que permite a los usuarios cargar imágenes en un depósito con su identificación de usuario y que coincida 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 pruebas con |
Cuerpo de la solicitud
El cuerpo de la solicitud contiene datos con la siguiente estructura:
Representación JSON | |
---|---|
{ "source": { object ( |
Campos | |
---|---|
source | |
testSuite | El Cuando |
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 |
testResults[] | El conjunto de resultados de prueba dados los casos de prueba en |
Alcances 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 Descripción general de la autenticación .
Banco de pruebas
TestSuite
es una colección de instancias TestCase
que validan la corrección lógica de las reglas. Se puede hacer referencia a TestSuite
en línea dentro de una invocación projects.test
o como parte de un objeto Release
como una verificación previa al lanzamiento.
Representación JSON | |
---|---|
{
"testCases": [
{
object ( |
Campos | |
---|---|
testCases[] | Colección de casos de prueba asociados con |
Caso de prueba
Los mensajes TestCase
proporcionan el contexto de la solicitud y una expectativa sobre si el contexto dado será permitido o denegado. Los casos de prueba pueden especificar request
, resosurce
y functionMocks
para simular una llamada de función a una función proporcionada por el servicio.
El objeto 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 de Firestore) tal como aparece en el almacenamiento persistente antes de que se ejecute la solicitud.
Consulte 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 | Expectativa de prueba. | ||||||||||||||||
request | Solicitar contexto. El formato exacto del contexto de 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 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 | ||||||||||||||||
functionMocks[] | La función de reglas opcionales se simula para 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 influir o no en el resultado de la prueba. | ||||||||||||||||
pathEncoding | Especifica si las rutas (como request.path) están codificadas y cómo. | ||||||||||||||||
expressionReportLevel | Especifica lo que se debe incluir 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ón simulada
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 argumentos y resultados de la función se inferirán en el momento de la prueba. Si los valores arg o result 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 determinado siempre que los comparadores Arg
sean distintos. Puede haber solo una función para una sobrecarga determinada donde todos los valores Arg
sean Arg.any_value
.
Ver 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
Comparadores de argumentos para la función simulada.
Representación JSON | |
---|---|
{ // Union field |
Campos | ||
---|---|---|
type de campo de unión. Valores de argumentos admitidos. type puede ser sólo 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 función.
Representación JSON | |
---|---|
{ // Union field |
Campos | ||
---|---|---|
type de campo de unión. Valores de resultados admitidos. type puede ser sólo uno de los siguientes: | ||
value | El resultado es un valor real. El tipo de valor debe coincidir con el tipo declarado por el servicio. | |
undefined | El resultado no está definido, lo que significa que no se pudo calcular el resultado. |
Codificación de ruta
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 sin codificación URL, por ejemplo, sin formato. |
Nivel de informe de expresión
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 ninguna información adicional. |
FULL | Incluir 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 tema en la |
description | Breve descripción del error. |
severity | La gravedad del problema. |
Posición de origen
Posición en el contenido Source
, incluida su línea, número de columna y un índice del File
en el mensaje 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 fuente. Basado en 1. |
column | Primera columna de la línea de origen asociada con el fragmento de origen. |
currentOffset | Posición inicial relativa al comienzo del archivo. |
endOffset | Posición final relativa al comienzo del archivo. |
Gravedad
El conjunto de gravedades de problemas.
Enumeraciones | |
---|---|
SEVERITY_UNSPECIFIED | Una gravedad no especificada. |
DEPRECATION | Problema de desaprobación de declaraciones y métodos que quizás ya no sean compatibles o mantenidos. |
WARNING | Advertencias como: variables no utilizadas. |
ERROR | Errores como: llaves no coincidentes 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[] | Mensajes de depuración 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 simulacros 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 dar como resultado un error. Las reglas son denegadas 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 permiso visitadas para una prueba determinada. Esto devuelve las posiciones y los resultados de la evaluación de todas las expresiones de permiso visitadas que eran relevantes para el caso de prueba, por ejemplo
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 fueron evaluados. Parcialmente anidado para reflejar la estructura AST. Tenga en cuenta que este campo en realidad rastrea expresiones y no declaraciones de permiso, a diferencia del campo "visitedExpressions" anterior. Se omiten las expresiones literales. |
Estado
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. |
VisitadoExpresión
Almacene la posición y acceda al resultado de 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. |
Informe de expresión
Describe en qué parte de un archivo se encuentra una expresión y en qué se evaluó durante su uso.
Representación JSON | |
---|---|
{ "sourcePosition": { object ( |
Campos | |
---|---|
sourcePosition | Posición de expresión en la fuente de reglas original. |
values[] | Valores que esta expresión evaluó cuando se encontró. |
children[] | Subexpresiones |
ValorContar
Tupla de cuántas veces se evaluó una expresión en un ExpressionValue particular.
Representación JSON | |
---|---|
{ "value": value, "count": integer } |
Campos | |
---|---|
value | El valor de retorno de la expresión. |
count | El número de veces que regresó esa expresión. |