- HTTP-Anfrage
- Pfadparameter
- Anforderungstext
- Antwortkörper
- Autorisierungsbereiche
- TestSuite
- Testfall
- Erwartung
- FunctionMock
- Arg
- Ergebnis
- Pfadkodierung
- ExpressionReportLevel
- Ausgabe
- Quellposition
- Schwere
- Testergebnis
- Zustand
- Funktionsaufruf
- VisitedExpression
- Ausdrucksbericht
- ValueCount
- Versuch es!
Source
auf syntaktische und semantische Korrektheit. Eventuell vorhandene Probleme werden mit einer Beschreibung, dem Schweregrad und dem Ursprungsort an den Anrufer zurückgesendet.
Die Testmethode kann mit Source
ausgeführt werden. Die Übergabe Source
ist nützlich für Unit-Tests neuer Regeln.
Beachten Sie, dass Tests, die mit der REST-API ausgeführt werden, Produktionsdatenbanken, Speicher-Buckets und zugehörige Ressourcen verwenden. Bei solchen Tests können Nutzungsgebühren anfallen. Wir empfehlen Ihnen dringend, die Firebase Local Emulator Suite zum Durchführen von Regeltests zu verwenden, da Sie Tests auf Offline-, Nicht-Produktionsressourcen ohne Nutzungsgebühren ausführen können.
Das Folgende ist ein Beispiel für Source
, die es Benutzern ermöglicht, Bilder in einen Bucket hochzuladen, der ihre Benutzer-ID trägt und mit den richtigen Metadaten übereinstimmt:
Beispiel
// 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-Anfrage
POST https://firebaserules.googleapis.com/v1/{name=projects/**}:test
Die URL verwendet die gRPC-Transcoding -Syntax.
Pfadparameter
Parameter | |
---|---|
name | Erforderlich. Für Tests gegen |
Anforderungstext
Der Anfragetext enthält Daten mit folgender Struktur:
JSON-Darstellung | |
---|---|
{ "source": { object ( |
Felder | |
---|---|
source | |
testSuite | Die Inline Wenn |
Antwortkörper
Bei Erfolg enthält der Antworttext Daten mit der folgenden Struktur:
Die Antwort für FirebaseRulesService.TestRuleset
.
JSON-Darstellung | |
---|---|
{ "issues": [ { object ( |
Felder | |
---|---|
issues[] | Syntaktische und semantische |
testResults[] | Der Satz von Testergebnissen anhand der Testfälle in der |
Autorisierungsbereiche
Erfordert einen der folgenden OAuth-Bereiche:
-
https://www.googleapis.com/auth/cloud-platform
-
https://www.googleapis.com/auth/firebase
-
https://www.googleapis.com/auth/firebase.readonly
Weitere Informationen finden Sie in der Authentifizierungsübersicht .
TestSuite
TestSuite
ist eine Sammlung von TestCase
Instanzen, die die logische Richtigkeit von Regeln validieren. Auf die TestSuite
kann inline innerhalb eines projects.test
Aufrufs oder als Teil eines Release
Objekts als Vorabprüfung verwiesen werden.
JSON-Darstellung | |
---|---|
{
"testCases": [
{
object ( |
Felder | |
---|---|
testCases[] | Sammlung von Testfällen, die der |
Testfall
TestCase
Nachrichten stellen den Anforderungskontext und eine Erwartung dar, ob der angegebene Kontext zugelassen oder abgelehnt wird. In Testfällen können request
, resosurce
und functionMocks
angegeben werden, um einen Funktionsaufruf an eine vom Dienst bereitgestellte Funktion zu verspotten.
Das request
stellt den zum Zeitpunkt der Anforderung vorhandenen Kontext dar.
Die resource
ist der Wert der Zielressource (z. B. Metadaten eines GCS-Objekts oder Firestore-Dokuments), wie er im persistenten Speicher erscheint, bevor die Anforderung ausgeführt wird.
Siehe auch die zugehörige Referenzdokumentation für Cloud Firestore ( Anfrage , Ressource ) und Cloud Storage für Firebase ( Anfrage , Ressource ).
JSON-Darstellung | |
---|---|
{ "expectation": enum ( |
Felder | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation | Testerwartung. | ||||||||||||||||
request | Kontext anfordern. Das genaue Format des Anforderungskontexts ist dienstabhängig. Informationen zu den unterstützten Feldern und Typen in der Anfrage finden Sie in der entsprechenden Servicedokumentation. Alle Dienste unterstützen mindestens die folgenden Felder und Typen:
Wenn der Anforderungswert für den Dienst nicht wohlgeformt ist, wird die Anforderung als ungültiges Argument abgelehnt. | ||||||||||||||||
resource | Optionaler Ressourcenwert, wie er im persistenten Speicher angezeigt wird, bevor die Anforderung erfüllt wird. Der Ressourcentyp hängt vom Wert | ||||||||||||||||
functionMocks[] | Optionale Rules-Funktionsmocks für servicedefinierte Funktionen. Wenn diese Option nicht festgelegt ist, wird von jeder vom Dienst definierten Regelfunktion erwartet, dass sie einen Fehler zurückgibt, der das Testergebnis beeinflussen kann oder auch nicht. | ||||||||||||||||
pathEncoding | Gibt an, ob und wie Pfade (z. B. request.path) codiert werden. | ||||||||||||||||
expressionReportLevel | Gibt an, was in der Antwort enthalten sein soll. |
Erwartung
Der Satz unterstützter Testfallerwartungen.
Aufzählungen | |
---|---|
EXPECTATION_UNSPECIFIED | Unbestimmte Erwartung. |
ALLOW | Erwarten Sie ein zulässiges Ergebnis. |
DENY | Erwarten Sie ein abgelehntes Ergebnis. |
FunctionMock
Definition der Mock-Rules-Funktion.
Mocks müssen auf eine vom Zieldienst deklarierte Funktion verweisen. Der Typ der Funktionsargumente und das Ergebnis werden zum Zeitpunkt des Tests abgeleitet. Wenn entweder die arg- oder result-Werte nicht mit der Funktionstypdeklaration kompatibel sind, wird die Anfrage als ungültig betrachtet.
Für einen bestimmten Funktionsnamen kann mehr als ein FunctionMock
bereitgestellt werden, solange die Arg
Matcher unterschiedlich sind. Für eine bestimmte Überladung kann es nur eine Funktion geben, bei der alle Arg
Werte Arg.any_value
sind.
Siehe auch Funktionen in der Sprache der Sicherheitsregeln .
JSON-Darstellung | |
---|---|
{ "function": string, "args": [ { object ( |
Felder | |
---|---|
function | Der Name der Funktion. Der Funktionsname muss mit einem durch eine Dienstdeklaration bereitgestellten Namen übereinstimmen. |
args[] | Die Liste der abzugleichenden |
result | Das Scheinergebnis des Funktionsaufrufs. |
Arg
Arg-Matcher für die Mock-Funktion.
JSON-Darstellung | |
---|---|
{ // Union field |
Felder | ||
---|---|---|
Union- type . Unterstützte Argumentwerte. type kann nur einer der folgenden sein: | ||
exactValue | Das Argument stimmt genau mit dem angegebenen Wert überein. | |
anyValue | Das Argument stimmt mit jedem angegebenen Wert überein. |
Ergebnis
Mögliche Ergebniswerte des Funktions-Mock-Aufrufs.
JSON-Darstellung | |
---|---|
{ // Union field |
Felder | ||
---|---|---|
Union- type . Unterstützte Ergebniswerte. type kann nur einer der folgenden sein: | ||
value | Das Ergebnis ist ein tatsächlicher Wert. Der Typ des Werts muss mit dem vom Dienst deklarierten Typ übereinstimmen. | |
undefined | Das Ergebnis ist undefiniert, was bedeutet, dass das Ergebnis nicht berechnet werden konnte. |
Pfadkodierung
Der Typ der verwendeten Pfadkodierung.
Aufzählungen | |
---|---|
ENCODING_UNSPECIFIED | Es wurde keine Kodierung angegeben. Standardmäßig wird das Verhalten „URL_ENCODED“ verwendet. |
URL_ENCODED | Behandelt Pfadsegmente als URL-codiert, jedoch mit nicht codierten Trennzeichen („/“). Dies ist das Standardverhalten. |
PLAIN | Behandelt den gesamten Pfad als nicht URL-codiert, z. B. als Rohdatei. |
ExpressionReportLevel
Die Datenmenge, die in die Antwort des Ausdrucksberichts einbezogen werden soll.
Aufzählungen | |
---|---|
LEVEL_UNSPECIFIED | Es wurde kein Level angegeben. Standardmäßig ist das Verhalten „NONE“. |
NONE | Fügen Sie keine zusätzlichen Informationen hinzu. |
FULL | Fügen Sie detaillierte Berichte zu ausgewerteten Ausdrücken hinzu. |
VISITED | Schließen Sie nur die Ausdrücke ein, die während der Auswertung besucht wurden. |
Ausgabe
Zu den Problemen gehören Warnungen, Fehler und veraltete Hinweise.
JSON-Darstellung | |
---|---|
{ "sourcePosition": { object ( |
Felder | |
---|---|
sourcePosition | Position des Problems in der |
description | Kurze Fehlerbeschreibung. |
severity | Die Schwere des Problems. |
Quellposition
Position im Source
, einschließlich seiner Zeile, Spaltennummer und einem Index der File
in der Source
. Wird für Debug-Zwecke verwendet.
JSON-Darstellung | |
---|---|
{ "fileName": string, "line": integer, "column": integer, "currentOffset": integer, "endOffset": integer } |
Felder | |
---|---|
fileName | Name der |
line | Zeilennummer des Quellfragments. 1-basiert. |
column | Erste Spalte in der Quellzeile, die dem Quellfragment zugeordnet ist. |
currentOffset | Startposition relativ zum Anfang der Datei. |
endOffset | Endposition relativ zum Anfang der Datei. |
Schwere
Der Satz von Problemschweregraden.
Aufzählungen | |
---|---|
SEVERITY_UNSPECIFIED | Ein nicht näher bezeichneter Schweregrad. |
DEPRECATION | Veraltungsproblem für Anweisungen und Methoden, die möglicherweise nicht mehr unterstützt oder gewartet werden. |
WARNING | Warnungen wie: nicht verwendete Variablen. |
ERROR | Fehler wie: nicht übereinstimmende geschweifte Klammern oder Neudefinition von Variablen. |
Testergebnis
Testergebnisnachricht, die den Status des Tests sowie eine Beschreibung und Quellenposition für Testfehler enthält.
JSON-Darstellung | |
---|---|
{ "state": enum ( |
Felder | |
---|---|
state | Stand des Tests. |
debugMessages[] | Debug-Meldungen im Zusammenhang mit Testausführungsproblemen, die während der Auswertung aufgetreten sind. Debug-Meldungen können mit zu vielen oder zu wenigen Aufrufen von Funktionsmocks oder mit Laufzeitfehlern zusammenhängen, die während der Auswertung auftreten. Beispiel: |
errorPosition | Position in der Die Auswertung eines Ausdrucks kann zu einem Fehler führen. Regeln verweigern standardmäßig, daher ist eine Beispiel: |
functionCalls[] | Der Satz von Funktionsaufrufen, die an dienstdefinierte Methoden erfolgen. Funktionsaufrufe werden in der Reihenfolge eingefügt, in der sie während der Auswertung auftreten, werden sowohl für simulierte als auch nicht simulierte Funktionen bereitgestellt und unabhängig vom |
visitedExpressions[] | Der Satz der besuchten Berechtigungsausdrücke für einen bestimmten Test. Dies gibt die Positionen und Auswertungsergebnisse aller besuchten Berechtigungsausdrücke zurück, die für den Testfall relevant waren, z
Einen detaillierten Bericht der Zwischenauswertungszustände finden Sie im Feld |
expressionReports[] | Die Zuordnung vom Ausdruck im Regelsatz-AST zu den Werten, anhand derer sie ausgewertet wurden. Teilweise verschachtelt, um die AST-Struktur widerzuspiegeln. Beachten Sie, dass dieses Feld im Gegensatz zum Feld „visitedExpressions“ oben tatsächlich Ausdrücke und keine Berechtigungsanweisungen verfolgt. Wörtliche Ausdrücke werden weggelassen. |
Zustand
Gültige Zustände für das Testergebnis.
Aufzählungen | |
---|---|
STATE_UNSPECIFIED | Der Teststatus ist nicht festgelegt. |
SUCCESS | Test ist ein Erfolg. |
FAILURE | Der Test ist ein Fehlschlag. |
Funktionsaufruf
Stellt einen dienstdefinierten Funktionsaufruf dar, der während der Testausführung aufgerufen wurde.
JSON-Darstellung | |
---|---|
{ "function": string, "args": [ value ] } |
Felder | |
---|---|
function | Name der aufgerufenen Funktion. |
args[] | Die Argumente, die der Funktion bereitgestellt wurden. |
VisitedExpression
Speichern Sie die Position und das Zugriffsergebnis für einen in Regeln besuchten Ausdruck.
JSON-Darstellung | |
---|---|
{
"sourcePosition": {
object ( |
Felder | |
---|---|
sourcePosition | Position in der |
value | Der ausgewertete Wert für den besuchten Ausdruck, z. B. wahr/falsch |
Ausdrucksbericht
Beschreibt, wo in einer Datei ein Ausdruck gefunden wird und wie er im Laufe seiner Verwendung ausgewertet wurde.
JSON-Darstellung | |
---|---|
{ "sourcePosition": { object ( |
Felder | |
---|---|
sourcePosition | Position des Ausdrucks in der ursprünglichen Regelquelle. |
values[] | Werte, zu denen dieser Ausdruck ausgewertet wird, wenn er auftritt. |
children[] | Unterausdrücke |
ValueCount
Tupel dafür, wie oft ein Ausdruck zu einem bestimmten ExpressionValue ausgewertet wurde.
JSON-Darstellung | |
---|---|
{ "value": value, "count": integer } |
Felder | |
---|---|
value | Der Rückgabewert des Ausdrucks |
count | Die Häufigkeit, mit der dieser Ausdruck zurückgegeben wurde. |