- Requête HTTP
- Paramètres du chemin
- Corps de la demande
- Corps de réponse
- Portées des autorisations
- Suite de tests
- Cas de test
- Attente
- FonctionMock
- Arg
- Résultat
- PathEncoding
- ExpressionReportLevel
- Problème
- PositionSource
- Gravité
- Résultat du test
- État
- FonctionAppel
- Expression visitée
- RapportExpression
- ValueCount
- Essayez-le !
Testez Source
pour l’exactitude syntaxique et sémantique. Les problèmes présents, le cas échéant, seront renvoyés à l'appelant avec une description, leur gravité et l'emplacement de la source.
La méthode de test peut être exécutée avec Source
. Passer Source
est utile pour tester de nouvelles règles unitaires.
Notez que les tests exécutés à l'aide de l'API REST utilisent des bases de données de production, des compartiments de stockage et des ressources associées. De tels tests peuvent entraîner des frais d'utilisation. Nous vous recommandons fortement d'utiliser la suite d'émulateurs locaux Firebase pour effectuer des tests de règles, car vous pouvez exécuter des tests sur des ressources hors production hors ligne sans frais d'utilisation.
Voici un exemple de Source
qui permet aux utilisateurs de télécharger des images dans un compartiment portant leur identifiant utilisateur et correspondant aux métadonnées correctes :
Exemple
// 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/')
}
}
Requête HTTP
POST https://firebaserules.googleapis.com/v1/{name=projects/**}:test
L'URL utilise la syntaxe de transcodage gRPC .
Paramètres du chemin
Paramètres | |
---|---|
name | Requis. Pour les tests sur |
Corps de la demande
Le corps de la requête contient des données avec la structure suivante :
Représentation JSON | |
---|---|
{ "source": { object ( |
Des champs | |
---|---|
source | |
testSuite | Le Lorsque |
Corps de réponse
En cas de succès, le corps de la réponse contient des données avec la structure suivante :
La réponse pour FirebaseRulesService.TestRuleset
.
Représentation JSON | |
---|---|
{ "issues": [ { object ( |
Des champs | |
---|---|
issues[] | Problèmes |
testResults[] | L'ensemble des résultats de test donnés aux cas de test dans |
Portées des autorisations
Nécessite l'une des étendues OAuth suivantes :
-
https://www.googleapis.com/auth/cloud-platform
-
https://www.googleapis.com/auth/firebase
-
https://www.googleapis.com/auth/firebase.readonly
Pour plus d'informations, consultez la Présentation de l'authentification .
Suite de tests
TestSuite
est une collection d'instances TestCase
qui valident l'exactitude logique des règles. La TestSuite
peut être référencée en ligne dans un appel projects.test
ou dans le cadre d'un objet Release
en tant que vérification préalable à la publication.
Représentation JSON | |
---|---|
{
"testCases": [
{
object ( |
Des champs | |
---|---|
testCases[] | Collection de cas de tests associés à la |
Cas de test
Les messages TestCase
fournissent le contexte de la demande et une attente quant à savoir si le contexte donné sera autorisé ou refusé. Les cas de test peuvent spécifier les request
, resosurce
et functionMocks
pour simuler un appel de fonction à une fonction fournie par un service.
L'objet request
représente le contexte présent au moment de la requête.
La resource
est la valeur de la ressource cible (par exemple, les métadonnées d'un objet GCS ou d'un document Firestore) telle qu'elle apparaît dans le stockage persistant avant l'exécution de la requête.
Consultez également la documentation de référence associée pour Cloud Firestore ( requête , ressource ) et Cloud Storage pour Firebase ( requête , ressource ).
Représentation JSON | |
---|---|
{ "expectation": enum ( |
Des champs | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation | Attente du test. | ||||||||||||||||
request | Contexte de la demande. Le format exact du contexte de demande dépend du service. Consultez la documentation du service approprié pour obtenir des informations sur les champs et les types pris en charge dans la demande. Au minimum, tous les services prennent en charge les champs et types suivants :
Si la valeur de la requête n'est pas bien formée pour le service, la requête sera rejetée comme argument non valide. | ||||||||||||||||
resource | Valeur de ressource facultative telle qu'elle apparaît dans le stockage persistant avant que la demande ne soit satisfaite. Le type de ressource dépend de la valeur | ||||||||||||||||
functionMocks[] | La fonction Règles facultatives se moque des fonctions définies par le service. Si elle n'est pas définie, toute fonction de règles définie par le service est censée renvoyer une erreur, qui peut ou non influencer le résultat du test. | ||||||||||||||||
pathEncoding | Spécifie si les chemins (tels que request.path) sont codés et comment. | ||||||||||||||||
expressionReportLevel | Spécifie ce qui doit être inclus dans la réponse. |
Attente
L’ensemble des attentes du scénario de test pris en charge.
Énumérations | |
---|---|
EXPECTATION_UNSPECIFIED | Attente non précisée. |
ALLOW | Attendez-vous à un résultat autorisé. |
DENY | Attendez-vous à un résultat refusé. |
FonctionMock
Définition de la fonction de règles simulées.
Les simulations doivent faire référence à une fonction déclarée par le service cible. Le type des arguments de la fonction et le résultat seront déduits au moment du test. Si les valeurs de l'argument ou du résultat ne sont pas compatibles avec la déclaration du type de fonction, la demande sera considérée comme invalide.
Plusieurs FunctionMock
peuvent être fournis pour un nom de fonction donné à condition que les matchers Arg
soient distincts. Il ne peut y avoir qu'une seule fonction pour une surcharge donnée où toutes les valeurs Arg
sont Arg.any_value
.
Voir aussi Fonctions dans le langage Règles de sécurité .
Représentation JSON | |
---|---|
{ "function": string, "args": [ { object ( |
Des champs | |
---|---|
function | Le nom de la fonction. Le nom de la fonction doit correspondre à celui fourni par une déclaration de service. |
args[] | La liste des valeurs |
result | Le résultat fictif de l'appel de fonction. |
Arg
Arg matchers pour la fonction mock.
Représentation JSON | |
---|---|
{ // Union field |
Des champs | ||
---|---|---|
type de champ Union. Valeurs d’argument prises en charge. type ne peut être que l'un des éléments suivants : | ||
exactValue | L’argument correspond exactement à la valeur fournie. | |
anyValue | L’argument correspond à n’importe quelle valeur fournie. |
Résultat
Valeurs de résultat possibles de l’invocation simulée de la fonction.
Représentation JSON | |
---|---|
{ // Union field |
Des champs | ||
---|---|---|
type de champ Union. Valeurs de résultat prises en charge. type ne peut être que l'un des éléments suivants : | ||
value | Le résultat est une valeur réelle. Le type de la valeur doit correspondre à celui du type déclaré par le service. | |
undefined | Le résultat n'est pas défini, ce qui signifie qu'il n'a pas pu être calculé. |
PathEncoding
Le type de codage de chemin utilisé.
Énumérations | |
---|---|
ENCODING_UNSPECIFIED | Aucun encodage n'a été spécifié. La valeur par défaut est le comportement "URL_ENCODED". |
URL_ENCODED | Traite les segments de chemin comme une URL codée mais avec des séparateurs non codés ("/"). Ceci est le comportement par défaut. |
PLAIN | Traite le chemin total comme non codé en URL, par exemple brut. |
ExpressionReportLevel
Quantité de données à inclure dans la réponse du rapport d'expression.
Énumérations | |
---|---|
LEVEL_UNSPECIFIED | Aucun niveau n'a été précisé. La valeur par défaut est le comportement « AUCUN ». |
NONE | N’incluez aucune information supplémentaire. |
FULL | Inclure un rapport détaillé sur les expressions évaluées. |
VISITED | Incluez uniquement les expressions qui ont été visitées lors de l’évaluation. |
Problème
Les problèmes incluent des avertissements, des erreurs et des avis de dépréciation.
Représentation JSON | |
---|---|
{ "sourcePosition": { object ( |
Des champs | |
---|---|
sourcePosition | Position du problème dans la |
description | Brève description de l'erreur. |
severity | La gravité du problème. |
PositionSource
Position dans le contenu Source
, y compris sa ligne, son numéro de colonne et un index du File
dans le message Source
. Utilisé à des fins de débogage.
Représentation JSON | |
---|---|
{ "fileName": string, "line": integer, "column": integer, "currentOffset": integer, "endOffset": integer } |
Des champs | |
---|---|
fileName | Nom du |
line | Numéro de ligne du fragment source. basé sur 1. |
column | Première colonne de la ligne source associée au fragment source. |
currentOffset | Position de départ par rapport au début du fichier. |
endOffset | Position de fin par rapport au début du fichier. |
Gravité
L’ensemble des gravités des problèmes.
Énumérations | |
---|---|
SEVERITY_UNSPECIFIED | Une gravité non précisée. |
DEPRECATION | Problème de dépréciation pour les instructions et les méthodes qui ne sont peut-être plus prises en charge ou maintenues. |
WARNING | Avertissements tels que : variables inutilisées. |
ERROR | Erreurs telles que : des accolades sans correspondance ou une redéfinition de variable. |
Résultat du test
Message de résultat du test contenant l'état du test ainsi qu'une description et la position source des échecs du test.
Représentation JSON | |
---|---|
{ "state": enum ( |
Des champs | |
---|---|
state | Etat de l'essai. |
debugMessages[] | Messages de débogage liés aux problèmes d’exécution des tests rencontrés lors de l’évaluation. Les messages de débogage peuvent être liés à trop ou trop peu d’appels de fonctions simulées ou à des erreurs d’exécution qui se produisent lors de l’évaluation. Par exemple : |
errorPosition | Position dans la L'évaluation d'une expression peut entraîner une erreur. Les règles sont refusées par défaut, donc une attente Par exemple |
functionCalls[] | L'ensemble des appels de fonction effectués vers des méthodes définies par le service. Les appels de fonction sont inclus dans l'ordre dans lequel ils sont rencontrés lors de l'évaluation, sont fournis pour les fonctions simulées et non simulées, et inclus dans la réponse quel que soit l' |
visitedExpressions[] | L'ensemble des expressions d'autorisation visitées pour un test donné. Cela renvoie les positions et les résultats d'évaluation de toutes les expressions d'autorisation visitées qui étaient pertinentes pour le scénario de test, par exemple
Pour un rapport détaillé des états d'évaluation intermédiaires, voir le champ |
expressionReports[] | Le mappage de l'expression dans l'ensemble de règles AST aux valeurs auxquelles elles ont été évaluées. Partiellement imbriqué pour refléter la structure AST. Notez que ce champ suit en fait les expressions et non les déclarations d'autorisation contrairement au champ "visitedExpressions" ci-dessus. Les expressions littérales sont omises. |
État
États valides pour le résultat du test.
Énumérations | |
---|---|
STATE_UNSPECIFIED | L’état du test n’est pas défini. |
SUCCESS | Le test est une réussite. |
FAILURE | Le test est un échec. |
FonctionAppel
Représente un appel de fonction défini par le service qui a été invoqué lors de l'exécution du test.
Représentation JSON | |
---|---|
{ "function": string, "args": [ value ] } |
Des champs | |
---|---|
function | Nom de la fonction invoquée. |
args[] | Les arguments fournis à la fonction. |
Expression visitée
Stockez la position et accédez au résultat d’une expression visitée dans les règles.
Représentation JSON | |
---|---|
{
"sourcePosition": {
object ( |
Des champs | |
---|---|
sourcePosition | Position dans la |
value | La valeur évaluée pour l'expression visitée, par exemple vrai/faux |
RapportExpression
Décrit où dans un fichier se trouve une expression et comment elle a été évaluée au cours de son utilisation.
Représentation JSON | |
---|---|
{ "sourcePosition": { object ( |
Des champs | |
---|---|
sourcePosition | Position de l'expression dans la source des règles originales. |
values[] | Valeurs auxquelles cette expression est évaluée lorsqu’elle est rencontrée. |
children[] | Sous-expressions |
ValueCount
Tuple indiquant combien de fois une expression a été évaluée avec une ExpressionValue particulière.
Représentation JSON | |
---|---|
{ "value": value, "count": integer } |
Des champs | |
---|---|
value | La valeur de retour de l'expression |
count | Nombre de fois que cette expression a été renvoyée. |