- HTTP isteği
- Yol parametreleri
- Talep gövdesi
- Yanıt gövdesi
- Yetki Kapsamları
- Test odası
- Test durumu
- Beklenti
- İşlevMock
- Argüman
- Sonuç
- Yol Kodlaması
- İfadeRapor Düzeyi
- Sorun
- Kaynak Konumu
- Şiddet
- Test sonucu
- Durum
- İşlev Çağrısı
- Ziyaret İfadesi
- İfadeRaporu
- ValueCount
- Dene!
Sözdizimsel ve anlamsal doğruluk için Test Source
. Varsa, mevcut sorunlar arayan kişiye bir açıklama, önem derecesi ve kaynak konumuyla birlikte iade edilecektir.
Test yöntemi Source
ile yürütülebilir. Source
Geçirme, yeni kuralların birim testi için kullanışlıdır.
REST API kullanılarak çalıştırılan testlerin üretim veritabanlarını, depolama paketlerini ve ilgili kaynak kaynaklarını kullandığını unutmayın. Bu tür testler kullanım ücretlerine neden olabilir. Kullanım ücreti ödemeden çevrimdışı, üretim dışı kaynaklar üzerinde testler çalıştırabileceğiniz için, Kural testi gerçekleştirmek için Firebase Local Emulator Suite'i kullanmanızı önemle tavsiye ederiz.
Aşağıda kullanıcıların, kullanıcı kimliklerini taşıyan ve doğru meta verilerle eşleşen bir pakete resim yüklemelerine izin veren bir Source
örneği verilmiştir:
Örnek
// 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 isteği
POST https://firebaserules.googleapis.com/v1/{name=projects/**}:test
URL, gRPC Kod Dönüştürme sözdizimini kullanır.
Yol parametreleri
Parametreler | |
---|---|
name | Gerekli. |
Talep gövdesi
İstek gövdesi aşağıdaki yapıya sahip verileri içerir:
JSON gösterimi | |
---|---|
{ "source": { object ( |
Alanlar | |
---|---|
source | |
testSuite | |
Yanıt gövdesi
Başarılı olursa yanıt gövdesi aşağıdaki yapıya sahip verileri içerir:
FirebaseRulesService.TestRuleset
yanıtı.
JSON gösterimi | |
---|---|
{ "issues": [ { object ( |
Alanlar | |
---|---|
issues[] | Değişen önem derecesine sahip sözdizimsel ve anlamsal |
testResults[] | |
Yetki Kapsamları
Aşağıdaki OAuth kapsamlarından birini gerektirir:
-
https://www.googleapis.com/auth/cloud-platform
-
https://www.googleapis.com/auth/firebase
-
https://www.googleapis.com/auth/firebase.readonly
Daha fazla bilgi için Kimlik Doğrulamaya Genel Bakış bölümüne bakın.
Test odası
TestSuite
kuralların mantıksal doğruluğunu doğrulayan bir TestCase
örnekleri koleksiyonudur. TestSuite
, bir projects.test
çağrısında satır içi olarak veya yayın öncesi kontrol olarak bir Release
nesnesinin parçası olarak başvurulabilir.
JSON gösterimi | |
---|---|
{
"testCases": [
{
object ( |
Alanlar | |
---|---|
testCases[] | |
Test durumu
TestCase
mesajları, istek bağlamını ve verilen bağlama izin verilip verilmeyeceğine veya reddedileceğine ilişkin beklentiyi sağlar. Test durumları, hizmet tarafından sağlanan bir işleve yapılan bir işlev çağrısını taklit etmek için request
, resosurce
ve functionMocks
belirtebilir.
request
nesnesi, istek anında mevcut olan bağlamı temsil eder.
resource
, istek yürütülmeden önce kalıcı depolamada görünen hedef kaynağın değeridir (örneğin, bir GCS nesnesinin veya Firestore belgesinin meta verileri).
Ayrıca Cloud Firestore ( istek , kaynak ) ve Cloud Storage for Firebase ( istek , kaynak ) için ilgili referans belgelerine de bakın.
JSON gösterimi | |
---|---|
{ "expectation": enum ( |
Alanlar | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation | Beklenti testi. | ||||||||||||||||
request | Bağlam isteyin. İstek bağlamının tam biçimi hizmete bağlıdır. İstekte desteklenen alanlar ve türler hakkında bilgi için uygun hizmet belgelerine bakın. Tüm hizmetler minimum olarak aşağıdaki alanları ve türleri destekler:
İstek değeri hizmet için iyi biçimlendirilmemişse istek geçersiz bir bağımsız değişken olarak reddedilecektir. | ||||||||||||||||
resource | İstek karşılanmadan önce kalıcı depolamada görünen isteğe bağlı kaynak değeri. Kaynak türü | ||||||||||||||||
functionMocks[] | Hizmet tanımlı işlevler için İsteğe Bağlı Kurallar işlevi taklitleri. Ayarlanmazsa, herhangi bir hizmet tanımlı Kural işlevinin, test sonucunu etkileyebilecek veya etkilemeyebilecek bir hata döndürmesi beklenir. | ||||||||||||||||
pathEncoding | Yolların (request.path gibi) kodlanıp kodlanmadığını ve nasıl kodlandığını belirtir. | ||||||||||||||||
expressionReportLevel | Yanıta nelerin dahil edilmesi gerektiğini belirtir. |
Beklenti
Desteklenen test senaryosu beklentileri kümesi.
Numaralandırmalar | |
---|---|
EXPECTATION_UNSPECIFIED | Belirtilmemiş beklenti. |
ALLOW | İzin verilen bir sonuç bekleyin. |
DENY | Reddedilen bir sonuç bekleyin. |
İşlevMock
Sahte Kurallar işlev tanımı.
Mocks, hedef hizmet tarafından bildirilen bir işleve atıfta bulunmalıdır. Args fonksiyonunun türü ve sonucu test zamanında çıkarılacaktır. Bağımsız değişken veya sonuç değerlerinden biri işlev türü bildirimiyle uyumlu değilse istek geçersiz sayılacaktır.
Arg
eşleştiricileri farklı olduğu sürece belirli bir işlev adı için birden fazla FunctionMock
sağlanabilir. Tüm Arg
değerlerinin Arg.any_value
olduğu belirli bir aşırı yük için yalnızca bir işlev olabilir.
Ayrıca bkz. Güvenlik Kuralları dilindeki İşlevler .
JSON gösterimi | |
---|---|
{ "function": string, "args": [ { object ( |
Alanlar | |
---|---|
function | Fonksiyonun adı. İşlev adı, hizmet bildirimi tarafından sağlanan adla eşleşmelidir. |
args[] | Eşleşecek |
result | İşlev çağrısının sahte sonucu. |
Argüman
Sahte işlev için bağımsız değişken eşleştiriciler.
JSON gösterimi | |
---|---|
{ // Union field |
Alanlar | ||
---|---|---|
Birleşim alanı type . Desteklenen bağımsız değişken değerleri. type aşağıdakilerden yalnızca biri olabilir: | ||
exactValue | Bağımsız değişken sağlanan değerle tam olarak eşleşiyor. | |
anyValue | Bağımsız değişken sağlanan herhangi bir değerle eşleşir. |
Sonuç
İşlev sahte çağrısının olası sonuç değerleri.
JSON gösterimi | |
---|---|
{ // Union field |
Alanlar | ||
---|---|---|
Birleşim alanı type . Desteklenen sonuç değerleri. type aşağıdakilerden yalnızca biri olabilir: | ||
value | Sonuç gerçek bir değerdir. Değerin türü, hizmet tarafından bildirilen türle eşleşmelidir. | |
undefined | Sonuç tanımsız, yani sonuç hesaplanamıyor. |
Yol Kodlaması
Kullanılan yol kodlamasının türü.
Numaralandırmalar | |
---|---|
ENCODING_UNSPECIFIED | Hiçbir kodlama belirtilmedi. Varsayılan olarak "URL_ENCODED" davranışı kullanılır. |
URL_ENCODED | Yol bölümlerini URL kodlu olarak ancak kodlanmamış ayırıcılarla ("/") ele alır. Bu varsayılan davranıştır. |
PLAIN | Toplam yolu URL'siz kodlanmış, örneğin ham olarak ele alır. |
İfadeRapor Düzeyi
İfade raporu yanıtına dahil edilecek veri miktarı.
Numaralandırmalar | |
---|---|
LEVEL_UNSPECIFIED | Herhangi bir seviye belirtilmedi. Varsayılan olarak "YOK" davranışına ayarlanır. |
NONE | Herhangi bir ek bilgi eklemeyin. |
FULL | Değerlendirilen ifadelere ilişkin ayrıntılı raporlamayı ekleyin. |
VISITED | Yalnızca değerlendirme sırasında ziyaret edilen ifadeleri dahil edin. |
Sorun
Sorunlar arasında uyarılar, hatalar ve kullanımdan kaldırma bildirimleri yer alır.
JSON gösterimi | |
---|---|
{ "sourcePosition": { object ( |
Alanlar | |
---|---|
sourcePosition | |
description | Kısa hata açıklaması. |
severity | Sorunun ciddiyeti. |
Kaynak Konumu
Source
mesajındaki satırı, sütun numarası ve File
dizini de dahil olmak üzere Source
içeriğindeki konum. Hata ayıklama amacıyla kullanılır.
JSON gösterimi | |
---|---|
{ "fileName": string, "line": integer, "column": integer, "currentOffset": integer, "endOffset": integer } |
Alanlar | |
---|---|
fileName | |
line | Kaynak parçanın satır numarası. 1 tabanlı. |
column | Kaynak parçasıyla ilişkili kaynak satırındaki ilk sütun. |
currentOffset | Dosyanın başlangıcına göre başlangıç konumu. |
endOffset | Dosyanın başlangıcına göre bitiş konumu. |
Şiddet
Sorunun ciddiyet derecesi kümesi.
Numaralandırmalar | |
---|---|
SEVERITY_UNSPECIFIED | Belirtilmemiş bir ciddiyet. |
DEPRECATION | Artık desteklenemeyecek veya sürdürülemeyecek ifadeler ve yöntemler için kullanımdan kaldırma sorunu. |
WARNING | Şunlar gibi uyarılar: kullanılmayan değişkenler. |
ERROR | Eşleşmeyen küme parantezleri veya değişkenlerin yeniden tanımlanması gibi hatalar. |
Test sonucu
Testin durumunu ve test başarısızlıklarının açıklamasını ve kaynak konumunu içeren test sonucu mesajı.
JSON gösterimi | |
---|---|
{ "state": enum ( |
Alanlar | |
---|---|
state | Testin durumu. |
debugMessages[] | Değerlendirme sırasında karşılaşılan test yürütme sorunlarıyla ilgili hata ayıklama mesajları. Hata ayıklama mesajları, işlev taklitlerinin çok fazla veya çok az çağrılması veya değerlendirme sırasında ortaya çıkan çalışma zamanı hatalarıyla ilgili olabilir. Örneğin: |
errorPosition | Bir ifadenin değerlendirilmesi hatayla sonuçlanabilir. Kurallar varsayılan olarak reddedilir, dolayısıyla bir hata oluştuğunda Örneğin |
functionCalls[] | Hizmet tanımlı yöntemlere yapılan işlev çağrıları kümesi. İşlev çağrıları, değerlendirme sırasında karşılaşıldıkları sıraya göre dahil edilir, hem sahte hem de sahte olmayan işlevler için sağlanır ve test |
visitedExpressions[] | Belirli bir test için ziyaret edilen izin ifadeleri kümesi. Bu, test senaryosuyla ilgili olan tüm ziyaret edilen izin ifadelerinin konumlarını ve değerlendirme sonuçlarını döndürür;
Ara değerlendirme durumlarının ayrıntılı bir raporu için |
expressionReports[] | AST kural kümesindeki ifadeden değerlendirildikleri değerlere eşleme. AST yapısını yansıtmak için kısmen yuvalanmıştır. Yukarıdaki "visitedExpressions" alanının aksine, bu alanın aslında izin ifadelerini değil, ifadeleri izlediğini unutmayın. Değişmez ifadeler atlanmıştır. |
Durum
Test sonucu için geçerli durumlar.
Numaralandırmalar | |
---|---|
STATE_UNSPECIFIED | Test durumu ayarlanmadı. |
SUCCESS | Test bir başarıdır. |
FAILURE | Test başarısızlıktır. |
İşlev Çağrısı
Test yürütme sırasında çağrılan hizmet tanımlı bir işlev çağrısını temsil eder.
JSON gösterimi | |
---|---|
{ "function": string, "args": [ value ] } |
Alanlar | |
---|---|
function | Çağrılan işlevin adı. |
args[] | İşleve sağlanan bağımsız değişkenler. |
Ziyaret İfadesi
Kurallarda ziyaret edilen bir ifadenin konumunu ve erişim sonucunu saklayın.
JSON gösterimi | |
---|---|
{
"sourcePosition": {
object ( |
Alanlar | |
---|---|
sourcePosition | |
value | Ziyaret edilen ifade için değerlendirilen değer; örneğin doğru/yanlış |
İfade Raporu
Bir ifadenin dosyanın neresinde bulunduğunu ve kullanımı boyunca neye göre değerlendirildiğini açıklar.
JSON gösterimi | |
---|---|
{ "sourcePosition": { object ( |
Alanlar | |
---|---|
sourcePosition | İfadenin orijinal kural kaynağındaki konumu. |
values[] | Bu ifadeyle karşılaşıldığında değerlendirilen değerler. |
children[] | Alt ifadeler |
Değer Sayısı
Bir İfadenin belirli bir ExpressionValue'ya göre kaç kez değerlendirildiğini gösteren Tuple.
JSON gösterimi | |
---|---|
{ "value": value, "count": integer } |
Alanlar | |
---|---|
value | İfadenin dönüş değeri |
count | Bu ifadenin döndürülme sayısı. |