- Solicitação HTTP
- Parâmetros de caminho
- Solicitar corpo
- Corpo de resposta
- Escopos de Autorização
- Suíte de teste
- Caso de teste
- Expectativa
- FunctionMock
- Arg
- Resultado
- PathEncoding
- ExpressionReportLevel
- Emitir
- SourcePosition
- Gravidade
- Resultado do teste
- Estado
- FunctionCall
- VisitadoExpressão
- ExpressionReport
- ValueCount
- Tente!
Source
teste para correção sintática e semântica. Os problemas presentes, se houver, serão devolvidos ao chamador com uma descrição, gravidade e local de origem.
O método de teste pode ser executado com Source
. Passar Source
é útil para testar novas regras de unidade.
Observe que os testes executados usando a API REST usam bancos de dados de produção, depósitos de armazenamento e recursos de recursos relacionados. Esses testes podem incorrer em custos de uso. É altamente recomendável que você use o Firebase Local Emulator Suite para realizar o teste de regras, uma vez que você pode executar testes em recursos off-line de não produção sem custos de uso.
A seguir está um exemplo de Source
que permite aos usuários fazer upload de imagens para um balde com seu ID de usuário e correspondência com os metadados corretos:
Exemplo
// 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/')
}
}
Solicitação HTTP
POST https://firebaserules.googleapis.com/v1/{name=projects/**}:test
O URL usa a sintaxe de transcodificação gRPC .
Parâmetros de caminho
Parâmetros | |
---|---|
name | Obrigatório. Para testes em relação à |
Solicitar corpo
O corpo da solicitação contém dados com a seguinte estrutura:
Representação JSON | |
---|---|
{ "source": { object ( |
Campos | |
---|---|
source | |
testSuite | O Quando a |
Corpo de resposta
Se for bem-sucedido, o corpo da resposta conterá dados com a seguinte estrutura:
A resposta para FirebaseRulesService.TestRuleset
.
Representação JSON | |
---|---|
{ "issues": [ { object ( |
Campos | |
---|---|
issues[] | Problemas de |
testResults[] | O conjunto de resultados de teste dados os casos de teste no |
Escopos de Autorização
Requer um dos seguintes escopos OAuth:
-
https://www.googleapis.com/auth/cloud-platform
-
https://www.googleapis.com/auth/firebase
-
https://www.googleapis.com/auth/firebase.readonly
Para obter mais informações, consulte Visão geral da autenticação .
Suíte de teste
TestSuite
é uma coleção de instâncias do TestCase
que validam a exatidão lógica das regras. O TestSuite
pode ser referenciado in-line dentro de uma invocação projects.test
ou como parte de um objeto Release
como uma verificação pré-lançamento.
Representação JSON | |
---|---|
{
"testCases": [
{
object ( |
Campos | |
---|---|
testCases[] | Coleção de casos de teste associados ao |
Caso de teste
TestCase
mensagens do TestCase
fornecem o contexto da solicitação e uma expectativa se o contexto fornecido será permitido ou negado. Os casos de teste podem especificar a request
, resosurce
e functionMocks
para simular uma chamada de função para uma função fornecida pelo serviço.
O objeto de request
representa o contexto presente no momento da solicitação.
O resource
é o valor do recurso de destino (por exemplo, metadados de um objeto GCS ou documento Firestore) conforme aparece no armazenamento persistente antes da execução da solicitação.
Consulte também a documentação de referência relacionada para Cloud Firestore ( solicitação , recurso ) e Cloud Storage para Firebase ( solicitação , recurso ).
Representação JSON | |
---|---|
{ "expectation": enum ( |
Campos | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation | Expectativa de teste. | ||||||||||||||||
request | Solicite o contexto. O formato exato do contexto da solicitação depende do serviço. Consulte a documentação de serviço apropriada para obter informações sobre os campos e tipos suportados na solicitação. No mínimo, todos os serviços suportam os seguintes campos e tipos:
Se o valor da solicitação não for bem formado para o serviço, a solicitação será rejeitada como um argumento inválido. | ||||||||||||||||
resource | Valor de recurso opcional conforme aparece no armazenamento persistente antes que a solicitação seja atendida. O tipo de recurso depende do valor | ||||||||||||||||
functionMocks[] | Simulações de função de regras opcionais para funções definidas por serviço. Se não for definido, qualquer função de regras definidas pelo serviço deve retornar um erro, que pode ou não influenciar o resultado do teste. | ||||||||||||||||
pathEncoding | Especifica se os caminhos (como request.path) são codificados e como. | ||||||||||||||||
expressionReportLevel | Especifica o que deve ser incluído na resposta. |
Expectativa
O conjunto de expectativas de casos de teste com suporte.
Enums | |
---|---|
EXPECTATION_UNSPECIFIED | Expectativa não especificada. |
ALLOW | Espere um resultado permitido. |
DENY | Espere um resultado negado. |
FunctionMock
Definição da função das Regras Mock.
Mocks devem se referir a uma função declarada pelo serviço de destino. O tipo de args da função e o resultado serão inferidos no momento do teste. Se os valores arg ou result não forem compatíveis com a declaração do tipo de função, a solicitação será considerada inválida.
Mais de um FunctionMock
pode ser fornecido para um determinado nome de função, desde que os matchers Arg
sejam distintos. Pode haver apenas uma função para uma determinada sobrecarga, em que todos os valores Arg
são Arg.any_value
.
Consulte também Funções na linguagem Regras de segurança .
Representação JSON | |
---|---|
{ "function": string, "args": [ { object ( |
Campos | |
---|---|
function | O nome da função. O nome da função deve corresponder a um fornecido por uma declaração de serviço. |
args[] | A lista de valores |
result | O resultado simulado da chamada de função. |
Arg
Matchers Arg para a função simulada.
Representação JSON | |
---|---|
{ // Union field |
Campos | ||
---|---|---|
type campo de união. Valores de argumento suportados. type pode ser apenas um dos seguintes: | ||
exactValue | O argumento corresponde exatamente ao valor fornecido. | |
anyValue | O argumento corresponde a qualquer valor fornecido. |
Resultado
Valores de resultados possíveis da invocação simulada da função.
Representação JSON | |
---|---|
{ // Union field |
Campos | ||
---|---|---|
type campo de união. Valores de resultado com suporte. type pode ser apenas um dos seguintes: | ||
value | O resultado é um valor real. O tipo do valor deve corresponder ao tipo declarado pelo serviço. | |
undefined | O resultado é indefinido, o que significa que não foi possível calcular o resultado. |
PathEncoding
O tipo de codificação de caminho usado.
Enums | |
---|---|
ENCODING_UNSPECIFIED | Nenhuma codificação foi especificada. O padrão é o comportamento "URL_ENCODED". |
URL_ENCODED | Trata os segmentos de caminho como codificados por URL, mas com separadores não codificados ("/"). Este é o comportamento padrão. |
PLAIN | Trata o caminho total como não codificado por URL, por exemplo, bruto. |
ExpressionReportLevel
A quantidade de dados a incluir na resposta do relatório de expressão.
Enums | |
---|---|
LEVEL_UNSPECIFIED | Nenhum nível foi especificado. O padrão é o comportamento "NENHUM". |
NONE | Não inclua nenhuma informação adicional. |
FULL | Inclui relatórios detalhados sobre as expressões avaliadas. |
VISITED | Incluir apenas as expressões que foram visitadas durante a avaliação. |
Emitir
Os problemas incluem avisos, erros e avisos de depreciação.
Representação JSON | |
---|---|
{ "sourcePosition": { object ( |
Campos | |
---|---|
sourcePosition | Posição da questão na |
description | Breve descrição do erro. |
severity | A gravidade do problema. |
SourcePosition
Posicione no conteúdo de Source
, incluindo sua linha, número da coluna e um índice do File
na mensagem de Source
. Usado para fins de depuração.
Representação JSON | |
---|---|
{ "fileName": string, "line": integer, "column": integer, "currentOffset": integer, "endOffset": integer } |
Campos | |
---|---|
fileName | Nome do |
line | Número da linha do fragmento de origem. Baseado em 1. |
column | Primeira coluna na linha de origem associada ao fragmento de origem. |
currentOffset | Posição inicial relativa ao início do arquivo. |
endOffset | Posição final em relação ao início do arquivo. |
Gravidade
O conjunto de gravidades do problema.
Enums | |
---|---|
SEVERITY_UNSPECIFIED | Uma gravidade não especificada. |
DEPRECATION | Problema de descontinuação para instruções e métodos que podem não ser mais suportados ou mantidos. |
WARNING | Avisos como: variáveis não utilizadas. |
ERROR | Erros como: colchetes sem correspondência ou redefinição de variável. |
Resultado do teste
Mensagem do resultado do teste contendo o estado do teste, bem como uma descrição e posição da fonte para as falhas do teste.
Representação JSON | |
---|---|
{ "state": enum ( |
Campos | |
---|---|
state | Estado do teste. |
debugMessages[] | Depurar mensagens relacionadas a problemas de execução de teste encontrados durante a avaliação. As mensagens de depuração podem estar relacionadas a muitas ou poucas invocações de simulações de função ou a erros de tempo de execução que ocorrem durante a avaliação. Por exemplo: |
errorPosition | Posicione na A avaliação de uma expressão pode resultar em erro. As regras são negadas por padrão, portanto, uma expectativa Por exemplo: |
functionCalls[] | O conjunto de chamadas de função feitas para métodos definidos pelo serviço. As chamadas de função são incluídas na ordem em que são encontradas durante a avaliação, são fornecidas para funções simuladas e desbloqueadas e incluídas na resposta, independentemente do |
visitedExpressions[] | O conjunto de expressões de permissão visitadas para um determinado teste. Isso retorna as posições e os resultados da avaliação de todas as expressões de permissão visitadas que eram relevantes para o caso de teste, por exemplo
Para obter um relatório detalhado dos estados de avaliação intermediários, consulte o campo |
expressionReports[] | O mapeamento da expressão no conjunto de regras AST para os valores para os quais eles foram avaliados. Parcialmente aninhado para espelhar a estrutura AST. Observe que este campo está, na verdade, rastreando expressões e não declarações de permissão, em contraste com o campo "VisitExpressions" acima. Expressões literais são omitidas. |
Estado
Estados válidos para o resultado do teste.
Enums | |
---|---|
STATE_UNSPECIFIED | O estado de teste não está definido. |
SUCCESS | O teste é um sucesso. |
FAILURE | O teste é um fracasso. |
FunctionCall
Representa uma chamada de função definida pelo serviço que foi invocada durante a execução do teste.
Representação JSON | |
---|---|
{ "function": string, "args": [ value ] } |
Campos | |
---|---|
function | Nome da função invocada. |
args[] | Os argumentos fornecidos para a função. |
VisitadoExpressão
Armazene a posição e o resultado do acesso para uma expressão visitada nas regras.
Representação JSON | |
---|---|
{
"sourcePosition": {
object ( |
Campos | |
---|---|
sourcePosition | Posicione na |
value | O valor avaliado para a expressão visitada, por exemplo, verdadeiro / falso |
ExpressionReport
Descreve onde em um arquivo uma expressão é encontrada e como ela foi avaliada durante seu uso.
Representação JSON | |
---|---|
{ "sourcePosition": { object ( |
Campos | |
---|---|
sourcePosition | Posição de expressão na fonte das regras originais. |
values[] | Valores para os quais esta expressão foi avaliada quando encontrada. |
children[] | Subexpressões |
ValueCount
Tupla de quantas vezes uma Expression foi avaliada para um ExpressionValue específico.
Representação JSON | |
---|---|
{ "value": value, "count": integer } |
Campos | |
---|---|
value | O valor de retorno da expressão |
count | O número de vezes que essa expressão foi retornada. |