- HTTP isteği
- Yol parametreleri
- İstek gövdesi
- Yanıt gövdesi
- Yetkilendirme Kapsamları
- TestSuite
- Test Durumu
- Beklenti
- İşlev Modeli
- ARG
- Sonuç
- Yol Kodlaması
- İfade Raporu Seviyesi
- Sorun
- KaynakKonumu
- Önem Düzeyi
- TestResult
- Durum
- FunctionCall
- Ziyaretçi İfadesi
- İfade Raporu
- ValueCount
- Deneyin
Source
SDK'sının söz dizimsel ve anlamsal doğruluğunu test edin. Varsa mevcut sorunlar, arayana açıklama, önem derecesi ve kaynak konumuyla birlikte geri gönderilir.
Test yöntemi Source
ile yürütülebilir. Yeni kuralların birim testi için Source
testine tabi tutulması önerilir.
REST API kullanılarak çalıştırılan testlerin üretim veritabanlarını, depolama paketlerini ve ilgili rse kaynaklarını kullandığını unutmayın. Bu tür testler için kullanım ücreti alınabilir. Kullanım ücreti ödemeden çevrimdışı, üretim dışı kaynaklarda testler çalıştırabileceğinizden Kural testi yapmak için Firebase Local Emulator Suite'i kullanmanızı önemle tavsiye ederiz.
Aşağıda, kullanıcıların kendi kullanıcı kimliklerini içeren ve doğru meta verilerle eşleşen bir pakete resim yüklemesine 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öz dizimini kullanır.
Yol parametreleri
Parametreler | |
---|---|
name |
Zorunlu. |
İstek içeriği
İ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ıyla birlikte verileri içerir:
FirebaseRulesService.TestRuleset
için yanıt.
JSON gösterimi | |
---|---|
{ "issues": [ { object ( |
Alanlar | |
---|---|
issues[] |
Farklı önem derecelerinde söz dizimsel ve anlamsal |
testResults[] |
|
Yetkilendirme 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ış başlıklı makaleye bakın.
Test Paketi
TestSuite
, kuralların mantıksal doğruluğunu doğrulayan TestCase
örnekten oluşan bir koleksiyondur. TestSuite
öğesine, projects.test
çağrısında satır içi veya yayın öncesi kontrolü olarak Release
nesnesinin parçası olarak referans verilebilir.
JSON gösterimi | |
---|---|
{
"testCases": [
{
object ( |
Alanlar | |
---|---|
testCases[] |
|
Test Durumu
TestCase
mesajları, isteğin bağlamını ve söz konusu bağlama izin verilip verilmeyeceğine dair beklentiyi sunar. Test durumlarında, hizmet tarafından sağlanan bir işleve işlev çağrısında bulunmak için request
, resosurce
ve functionMocks
belirtilebilir.
request
nesnesi, istek anında mevcut olan bağlamı temsil eder.
resource
, istek yürütülmeden önce kalıcı depolama alanında görünen hedef kaynağın (ör. bir GCS nesnesinin veya Firestore belgesinin meta verileri) değeridir.
Cloud Firestore ( istek, kaynak) ve Cloud Storage for Firebase (istek, kaynak) için de ilgili referans belgelerine bakın.
JSON gösterimi | |
---|---|
{ "expectation": enum ( |
Alanlar | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
expectation |
Beklentiyi test edin. |
||||||||||||||||
request |
Bağlam bilgisi isteyin. İstek bağlamının tam biçimi hizmete bağlıdır. İstekteki desteklenen alanlar ve türler hakkında bilgi için ilgili hizmet dokümanlarına bakın. Tüm hizmetler en azından aşağıdaki alanları ve türleri destekler:
İstek değeri hizmet için iyi biçimlendirilmemişse istek, geçersiz bağımsız değişken olarak reddedilir. |
||||||||||||||||
resource |
İstek yerine getirilmeden önce kalıcı depolama alanında göründüğü şekliyle 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 modelleri. Politika ayarlanmazsa hizmet tarafından tanımlanmış herhangi bir Kurallar işlevinin hata döndürmesi beklenir. Bu hata, test sonucunu etkileyebilir veya etkilemeyebilir. |
||||||||||||||||
pathEncoding |
Yolların (request.path gibi) kodlanıp kodlanmadığını ve nasıl kodlanacağını belirtir. |
||||||||||||||||
expressionReportLevel |
Yanıta nelerin dahil edilmesi gerektiğini belirtir. |
Beklenti
Desteklenen test durumu beklentileri grubu.
Sıralamalar | |
---|---|
EXPECTATION_UNSPECIFIED |
Beklenti belirtilmedi. |
ALLOW |
İzin verilen bir sonuç bekleyin. |
DENY |
Sonuç reddedildi. |
İşlev Modeli
Örnek Kuralları işlevinin tanımı.
Örnekler, hedef hizmet tarafından bildirilen bir işleve başvuruda bulunmalıdır. Fonksiyon bağımsız değişkenlerinin türü ve sonucu, test sırasında tahmin edilir. Bağımsız değişken veya sonuç değerleri işlev türü bildirimiyle uyumlu değilse istek geçersiz kabul edilir.
Arg
eşleştiricileri farklı olduğu sürece belirli bir işlev adı için birden fazla FunctionMock
sağlanabilir. Belirli bir aşırı yük için tüm Arg
değerlerinin Arg.any_value
olduğu yalnızca bir işlev olabilir.
Ayrıca, Güvenlik Kuralları dilindeki işlevler başlıklı makaleyi de inceleyin.
JSON gösterimi | |
---|---|
{ "function": string, "args": [ { object ( |
Alanlar | |
---|---|
function |
İşlevin adı. İşlev adı, hizmet beyanı tarafından sağlanan adla eşleşmelidir. |
args[] |
Eşleştirilecek |
result |
İşlev çağrısının örnek sonucu. |
Bağımsız değişken
Model işlevi için bağımsız değişken eşleştiriciler.
JSON gösterimi | |
---|---|
{ // Union field |
Alanlar | ||
---|---|---|
Birleştirme alanı type . Desteklenen bağımsız değişken değerleri. type şunlardan 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 örnek çağrısından olası sonuç değerleri.
JSON gösterimi | |
---|---|
{ // Union field |
Alanlar | ||
---|---|---|
Birleştirme alanı type . Desteklenen sonuç değerleri. type şunlardan yalnızca biri olabilir: |
||
value |
Sonuç, gerçek bir değerdir. Değerin türü, hizmet tarafından belirtilen türle eşleşmelidir. |
|
undefined |
Sonuç tanımlanmadı. Bu nedenle sonuç hesaplanamadı. |
Yol Kodlaması
Kullanılan yol kodlamasının türü.
Sıralamalar | |
---|---|
ENCODING_UNSPECIFIED |
Kodlama belirtilmedi. Varsayılan olarak "URL_ENCODED" değerine ayarlanır gösterir. |
URL_ENCODED |
Yol segmentlerini, kodlanmamış ayırıcılar ("/") ile kodlanmış URL olarak değerlendirir. Bu, varsayılan davranıştır. |
PLAIN |
Toplam yolu URL olarak kodlanmayan bir şekilde (ör. ham. |
İfadeRapor Düzeyi
İfade raporu yanıtına eklenecek veri miktarı.
Sıralamalar | |
---|---|
LEVEL_UNSPECIFIED |
Düzey belirtilmedi. Varsayılan olarak "NONE" değerine ayarlanır gösterir. |
NONE |
Başka bilgi eklemeyin. |
FULL |
Değerlendirilen ifadelerle ilgili ayrıntılı raporlar 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 |
Sorunun |
description |
Kısa hata açıklaması. |
severity |
Sorunun önem derecesi. |
KaynakKonumu
Satır, sütun numarası ve Source
mesajındaki File
dizini 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ı. temel alır. |
column |
Kaynak parçayla ilişkili kaynak satırdaki 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. |
Önem Düzeyi
Sorun önem dereceleri grubu.
Sıralamalar | |
---|---|
SEVERITY_UNSPECIFIED |
Önem derecesi belirtilmemiş. |
DEPRECATION |
Artık desteklenemeyecek veya sürdürülemeyecek ifadeler ve yöntemlerle ilgili desteğin sonlandırılması sorunu. |
WARNING |
Uyarılar: Kullanılmayan değişkenler. |
ERROR |
Eşleşmeyen küme parantezleri veya değişkenlerin yeniden tanımı gibi hatalar. |
TestResult
Testin durumunu ve test hataları için açıklama ile 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 mesajlarda hata ayıklayın. Hata ayıklama mesajları, işlev taklitlerinin çok fazla veya az sayıda çağrılmasıyla ya da değerlendirme sırasında oluşan çalışma zamanı hatalarıyla ilgili olabilir. Örneğin: |
errorPosition |
Bir ifadenin değerlendirilmesi hatayla sonuçlanabilir. Kurallar varsayılan olarak reddedildiğinden, hata oluşturulduğunda Ör. |
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şılan sıraya göre dahil edilir, hem sahte hem de modellenmemiş işlevler için sağlanır ve |
visitedExpressions[] |
Belirli bir test için ziyaret edilen izin ifadeleri kümesi. Bu komut, test senaryosu ile ilgili olan, ziyaret edilen tüm izin ifadelerinin konumlarını ve değerlendirme sonuçlarını döndürür (ör.
Ara değerlendirme durumlarının ayrıntılı raporu için |
expressionReports[] |
AST kural kümesindeki ifadeden değerlendirildikleri değerlere eşleme. AST yapısını yansıtacak şekilde kısmen iç içe yerleştirilmiş. Bu alanın, "visitedExpressions"un aksine aslında izleme ifadeleri değil, izin ifadeleri olduğunu unutmayın yukarıdaki alanı doldurun. Değişmez ifadeler atlanır. |
Eyalet
Test sonucu için geçerli durumlar.
Sıralamalar | |
---|---|
STATE_UNSPECIFIED |
Test durumu ayarlanmadı. |
SUCCESS |
Test başarılı oldu. |
FAILURE |
Test, başarısız oldu. |
İş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 Edilen İfade
Kurallarda ziyaret edilen bir ifadenin konumunu ve erişim sonucunu depolayın.
JSON gösterimi | |
---|---|
{
"sourcePosition": {
object ( |
Alanlar | |
---|---|
sourcePosition |
|
value |
Ziyaret edilen ifade için değerlendirilen değer, ör. doğru/yanlış |
İfade Raporu
Bir ifadenin dosyanın neresinde bulunduğunu ve kullanımı sırasında ne değerlendirildiğini açıklar.
JSON gösterimi | |
---|---|
{ "sourcePosition": { object ( |
Alanlar | |
---|---|
sourcePosition |
Orijinal kural kaynağındaki ifadenin konumu. |
values[] |
Karşılaşıldığında bu ifadenin değerlendirdiği değerler. |
children[] |
Alt ifadeler |
Değer Sayısı
Bir İfadenin belirli bir ExpressionValue için kaç kez değerlendirildiğini ayarlayın.
JSON gösterimi | |
---|---|
{ "value": value, "count": integer } |
Alanlar | |
---|---|
value |
İfadenin döndürülen değeri |
count |
Bu ifadenin döndürülme sayısı. |