Firebase Local Emulator Suite, uygulamanızın özelliklerini ve davranışını tam olarak doğrulamanızı kolaylaştırır. Bu araç, Firebase Security Rules yapılandırmalarınızı doğrulamak için de mükemmel bir çözümdür. Yerel ortamda birim testlerini çalıştırmak ve otomatikleştirmek için Firebase Emülatörleri'ni kullanın. Bu belgede açıklanan yöntemler, uygulamanız için birim testleri oluşturup otomatikleştirirken ve Rules doğrularken size yardımcı olmalıdır.
Henüz yapmadıysanız Firebase emülatörlerini ayarlayın.
Emülatörü çalıştırmadan önce
Emülatörü kullanmaya başlamadan önce aşağıdakileri göz önünde bulundurun:
- Emülatör, başlangıçta
firebase.json
dosyanızınfirestore.rules
veyastorage.rules
alanında belirtilen kuralları yükler. Dosya yoksa ve aşağıda açıklandığı gibiloadFirestoreRules
veyaloadStorageRules
yöntemini kullanmıyorsanız emülatör, tüm projeleri açık kurallara sahipmiş gibi değerlendirir. - Çoğu Firebase SDK'sı doğrudan emülatörlerle çalışsa da yalnızca
@firebase/rules-unit-testing
kitaplığı, Security Rules'daauth
sahteleme özelliğini destekler. Bu da birim testlerini çok daha kolay hale getirir. Ayrıca, kitaplık aşağıdaki listede belirtildiği gibi tüm verileri temizleme gibi emülatöre özgü birkaç özelliği de destekler. - Emülatörler, İstemci SDK'ları aracılığıyla sağlanan üretim Firebase Auth jetonlarını da kabul eder ve kuralları buna göre değerlendirir. Bu sayede, uygulamanızı entegrasyon ve manuel testlerde doğrudan emülatörlere bağlayabilirsiniz.
Veritabanı emülatörleri ile üretim arasındaki farklar
- Veritabanı örneğini açıkça oluşturmanız gerekmez. Emülatör, erişilen tüm veritabanı örneklerini otomatik olarak oluşturur.
- Her yeni veritabanı kapalı kurallarla başlatılır. Bu nedenle, yönetici olmayan kullanıcılar okuma veya yazma işlemi yapamaz.
- Emüle edilen her veritabanı, Spark planı sınırlarını ve kotalarını uygular (en önemlisi, bu durum her örneği 100 eşzamanlı bağlantıyla sınırlar).
- Herhangi bir veritabanı,
"owner"
dizesini yönetici kimlik doğrulama jetonu olarak kabul eder. - Emülatörler şu anda diğer Firebase ürünleriyle çalışır durumda değildir. Normal Firebase Authentication akışının çalışmadığını belirtmek isteriz.
Bunun yerine,
auth
alanını alanrules-unit-testing
kitaplığındakiinitializeTestApp()
yöntemini kullanabilirsiniz. Bu yöntem kullanılarak oluşturulan Firebase nesnesi, sağladığınız herhangi bir varlık olarak kimliği başarıyla doğrulanmış gibi davranır.null
değerini iletirseniz kimliği doğrulanmamış bir kullanıcı gibi davranılır (örneğin,auth != null
kuralları başarısız olur).
Realtime Database emülatörüyle etkileşim
Bir üretim Firebase Realtime Database örneğine firebaseio.com
alt alan adından erişilebilir ve REST API'ye şu şekilde erişebilirsiniz:
https://<database_name>.firebaseio.com/path/to/my/data.json
Emülatör yerel olarak çalışır ve localhost:9000
adresinde kullanılabilir. Belirli bir veritabanı örneğiyle etkileşim kurmak için veritabanı adını belirtmek üzere ns
sorgu parametresini kullanmanız gerekir.
http://localhost:9000/path/to/my/data.json?ns=<database_name>
9. sürüm JavaScript SDK'sı ile yerel birim testleri çalıştırma
Firebase, hem 9. sürüm JavaScript SDK'sı hem de 8. sürüm SDK'sı ile birlikte bir Güvenlik Kuralları birim testi kitaplığı dağıtır. Kitaplık API'leri önemli ölçüde farklıdır. Daha akıcı olan ve emülatörlere bağlanmak için daha az kurulum gerektiren v9 test kitaplığını kullanmanızı öneririz. Bu sayede, üretim kaynaklarının yanlışlıkla kullanılmasını güvenli bir şekilde önleyebilirsiniz. Geriye dönük uyumluluk için v8 test kitaplığını kullanıma sunmaya devam ediyoruz.
- v9 SDK'sındaki yaygın test yöntemleri ve yardımcı işlevler
- v9 SDK'sında emülatöre özgü test yöntemleri
Yerel olarak çalışan emülatörle etkileşimde bulunmak için @firebase/rules-unit-testing
modülünü kullanın. Zaman aşımları veya ECONNREFUSED
hataları alırsanız emülatörün gerçekten çalıştığını iki kez kontrol edin.
async/await
notasyonunu kullanabilmek için Node.js'nin yeni bir sürümünü kullanmanızı önemle tavsiye ederiz. Test etmek isteyebileceğiniz davranışların neredeyse tamamı asenkron işlevleri içerir ve test modülü, Promise tabanlı kodla çalışacak şekilde tasarlanmıştır.
v9 Kuralları Birim Testi kitaplığı, emülatörlerin her zaman farkındadır ve üretim kaynaklarınıza asla dokunmaz.
Kitaplığı v9 modüler içe aktarma ifadelerini kullanarak içe aktarırsınız. Örneğin:
import {
assertFails,
assertSucceeds,
initializeTestEnvironment
} from "@firebase/rules-unit-testing"
// Use `const { … } = require("@firebase/rules-unit-testing")` if imports are not supported
// Or we suggest `const testing = require("@firebase/rules-unit-testing")` if necessary.
İçe aktarıldıktan sonra birim testlerinin uygulanması şu adımları içerir:
RulesTestEnvironment
numarası aranarakinitializeTestEnvironment
ile görüşme oluşturma ve yapılandırma.- Rules tetiklenmeden test verilerini ayarlama,
RulesTestEnvironment.withSecurityRulesDisabled
kullanarak bunları geçici olarak atlamanıza olanak tanıyan bir kolaylık yöntemi kullanma. - Test verilerini ve ortamını temizlemek için
RulesTestEnvironment.cleanup()
veyaRulesTestEnvironment.clearFirestore()
gibi çağrılarla test paketi ve test öncesi/sonrası kancaları ayarlama. RulesTestEnvironment.authenticatedContext
veRulesTestEnvironment.unauthenticatedContext
kullanarak kimlik doğrulama durumlarını taklit eden test durumları uygulama.
Sık kullanılan yöntemler ve yardımcı işlevler
Ayrıca, modüler API'yi kullanarak emülatöre özgü test yöntemleri başlıklı makaleyi de inceleyin.
initializeTestEnvironment() => RulesTestEnvironment
Bu işlev, kurallar birim testi için bir test ortamı başlatır. Test kurulumu için önce bu işlevi çağırın. Başarılı bir yürütme için emülatörlerin çalışıyor olması gerekir.
Bu işlev, TestEnvironmentConfig
tanımlayan isteğe bağlı bir nesne kabul eder. Bu nesne, proje kimliği ve emülatör yapılandırma ayarlarından oluşabilir.
let testEnv = await initializeTestEnvironment({ projectId: "demo-project-1234", firestore: { rules: fs.readFileSync("firestore.rules", "utf8"), }, });
RulesTestEnvironment.authenticatedContext({ user_id: string, tokenOptions?: TokenOptions }) => RulesTestContext
Bu yöntem, kimliği doğrulanmış bir Authentication kullanıcısı gibi davranan bir RulesTestContext
oluşturur. Döndürülen bağlam aracılığıyla oluşturulan isteklere sahte Authentication jetonu eklenir. İsteğe bağlı olarak, Authentication jetonu yükleri için özel talepleri veya geçersiz kılmaları tanımlayan bir nesne iletin.
initializeTestEnvironment
ile yapılandırılanlar da dahil olmak üzere yapılandırılmış tüm emülatör örneklerine erişmek için testlerinizde döndürülen test bağlamı nesnesini kullanın.
// Assuming a Firestore app and the Firestore emulator for this example import { setDoc } from "firebase/firestore"; const alice = testEnv.authenticatedContext("alice", { … }); // Use the Firestore instance associated with this context await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });
RulesTestEnvironment.unauthenticatedContext() => RulesTestContext
Bu yöntem, Authentication üzerinden oturum açılmamış bir istemci gibi davranan bir RulesTestContext
oluşturur. Döndürülen bağlam aracılığıyla oluşturulan isteklerde Firebase Auth jetonları eklenmez.
initializeTestEnvironment
ile yapılandırılanlar da dahil olmak üzere yapılandırılmış tüm emülatör örneklerine erişmek için testlerinizde döndürülen test bağlamı nesnesini kullanın.
// Assuming a Cloud Storage app and the Storage emulator for this example import { getStorage, ref, deleteObject } from "firebase/storage"; const alice = testEnv.unauthenticatedContext(); // Use the Cloud Storage instance associated with this context const desertRef = ref(alice.storage(), 'images/desert.jpg'); await assertSucceeds(deleteObject(desertRef));
RulesTestEnvironment.withSecurityRulesDisabled()
Güvenlik kuralları devre dışı bırakılmış gibi davranan bir bağlamla test kurulumu işlevi çalıştırın.
Bu yöntem, Security-Rules-bypassing bağlamını alan ve bir promise döndüren bir geri çağırma işlevi alır. Bağlam, söz çözüldüğünde / reddedildiğinde yok edilir.
RulesTestEnvironment.cleanup()
Bu yöntem, test ortamında oluşturulan tüm RulesTestContexts
öğelerini yok eder ve temel kaynakları temizleyerek temiz bir çıkışa olanak tanır.
Bu yöntem, emülatörlerin durumunu hiçbir şekilde değiştirmez. Testler arasındaki verileri sıfırlamak için uygulamaya özel emülatör veri temizleme yöntemini kullanın.
assertSucceeds(pr: Promise<any>)) => Promise<any>
Bu, bir test durumu yardımcı işlevidir.
Bu işlev, bir emülatör işlemini sarmalayan sağlanan Promise'in, güvenlik kuralları ihlali olmadan çözümleneceğini iddia eder.
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });
assertFails(pr: Promise<any>)) => Promise<any>
Bu, bir test durumu yardımcı işlevidir.
Bu işlev, bir emülatör işlemini sarmalayan sağlanan Promise'in bir güvenlik kuralları ihlaliyle reddedileceğini iddia eder.
await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });
Emülatöre özel yöntemler
Ayrıca modüler API'yi kullanan yaygın test yöntemleri ve yardımcı işlevler bölümüne de bakın.
Cloud Firestore
Cloud Firestore
RulesTestEnvironment.clearFirestore() => Promise<void>
Bu yöntem, Firestore emülatörü için projectId
yapılandırılmış Firestore veritabanındaki verileri temizler.
RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;
Bu yöntem, test bağlamı için bir Firestore örneği alır. Döndürülen Firebase JS Client SDK örneği, istemci SDK API'leriyle (v9 modüler veya v9 uyumlu) kullanılabilir.
Realtime Database
Realtime Database
RulesTestEnvironment.clearDatabase() => Promise<void>
Bu yöntem, Realtime Database öykünücüsü için yapılandırılmış projectId
öğesine ait Realtime Database içindeki verileri temizler.
RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;
Bu test bağlamı için bir Realtime Database örneği alın. Döndürülen Firebase JS istemci SDK'sı örneği, istemci SDK'sı API'leriyle (modüler veya ad alanlı, 9. sürüm ya da daha yeni) kullanılabilir. Yöntem, Realtime Database örneğinin URL'sini kabul eder. Belirtilirse URL'den çıkarılan parametrelerle ad alanının taklit edilmiş bir sürümünün örneğini döndürür.
Cloud Storage
Cloud Storage
RulesTestEnvironment.clearStorage() => Promise<void>
Bu yöntem, Cloud Storage emülatörü için yapılandırılmış projectId
hizmetine ait depolama paketlerindeki nesneleri ve meta verileri temizler.
RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;
Bu yöntem, emülatöre bağlanacak şekilde yapılandırılmış bir Storage örneği döndürür.
Yöntem, test için Firebase Storage paketinin gs://
URL'sini kabul eder. Belirtilirse paket adının emüle edilmiş sürümü için bir Storage örneği döndürür.
v8 JavaScript SDK ile yerel birim testleri çalıştırma
Firebase Test SDK'sının emülatörle arayüz oluşturmak için kullandığı yöntemleri görmek üzere bir ürün seçin.
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
Bu yöntem, seçeneklerde belirtilen proje kimliğine ve kimlik doğrulama değişkenine karşılık gelen başlatılmış bir Firebase uygulaması döndürür. Testlerde kullanılacak, belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bu özelliği kullanın.
firebase.initializeTestApp({ projectId: "my-test-project", auth: { uid: "alice", email: "alice@example.com" } });
initializeAdminApp({ projectId: string }) => FirebaseApp
Bu yöntem, başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, okuma ve yazma işlemleri gerçekleştirirken güvenlik kurallarını atlar. Testler için durumu ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bu yöntemi kullanın.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Bu yöntem, şu anda başlatılmış tüm test ve yönetici uygulamalarını döndürür.
Testler arasında veya testlerden sonra uygulamaları temizlemek için bu özelliği kullanın.
Promise.all(firebase.apps().map(app => app.delete()))
loadFirestoreRules({ projectId: string, rules: Object }) => Promise
Bu yöntem, kuralları yerel olarak çalışan bir veritabanına gönderir. Kuralları dize olarak belirten bir nesne alır. Veritabanınızın kurallarını ayarlamak için bu yöntemi kullanın.
firebase.loadFirestoreRules({ projectId: "my-test-project", rules: fs.readFileSync("/path/to/firestore.rules", "utf8") });
assertFails(pr: Promise) => Promise
Bu yöntem, giriş başarılı olursa reddedilen, giriş reddedilirse başarılı olan bir söz döndürür. Veritabanı okuma veya yazma işlemi başarısız olursa bunu onaylamak için kullanın.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Bu yöntem, giriş başarılı olursa başarılı olan ve giriş reddedilirse reddedilen bir söz döndürür. Veritabanı okuma veya yazma işleminin başarılı olup olmadığını onaylamak için kullanılır.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
Bu yöntem, yerel olarak çalışan Firestore örneğindeki belirli bir projeyle ilişkili tüm verileri temizler. Testlerden sonra temizlik yapmak için bu yöntemi kullanın.
firebase.clearFirestoreData({ projectId: "my-test-project" });
Realtime Database
Realtime Database
initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp
Bunu, testlerde kullanılacak, belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için kullanın.
Seçeneklerde belirtilen veritabanı adı ve auth değişkeni geçersiz kılma işlemine karşılık gelen başlatılmış bir Firebase uygulaması döndürür.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Testler için durum ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bu yöntemi kullanın.
Seçeneklerde belirtilen veritabanı adına karşılık gelen başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, veritabanına okuma ve yazma işlemi yaparken güvenlik kurallarını atlıyor.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
Veritabanınızın kurallarını ayarlamak için bu seçeneği kullanın.
Kuralları yerel olarak çalışan bir veritabanına gönderir. "databaseName" ve "rules" değerlerini dize olarak belirten bir seçenekler nesnesi alır.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
Şu anda başlatılmış tüm test ve yönetici uygulamalarını döndürür.
Bunu, testler arasında veya testlerden sonra uygulamaları temizlemek için kullanın (etkin dinleyicilere sahip başlatılmış uygulamaların JavaScript'in çıkmasını engellediğini unutmayın):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Giriş başarılı olursa reddedilen, giriş reddedilirse başarılı olan bir söz döndürür.
Bir veritabanı okuma veya yazma işleminin başarısız olduğunu onaylamak için bunu kullanın:
firebase.assertFails(app.database().ref("secret").once("value"));
assertSucceeds(pr: Promise) => Promise
Giriş başarılı olursa başarılı olan, giriş reddedilirse reddedilen bir söz döndürür.
Bir veritabanı okuma veya yazma işleminin başarılı olduğunu onaylamak için bunu kullanın:
firebase.assertSucceeds(app.database().ref("public").once("value"));
Cloud Storage
Cloud Storage
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
Bunu, testlerde kullanılacak, belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için kullanın.
Seçeneklerde belirtilen depolama paketi adına ve kimlik doğrulama değişkeni geçersiz kılmaya karşılık gelen başlatılmış bir Firebase uygulaması döndürür.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
Testler için durum ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bu yöntemi kullanın.
Seçeneklerde belirtilen depolama paketi adına karşılık gelen başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, pakete okuma ve yazma işlemi yaparken güvenlik kurallarını atlıyor.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Depolama paketinize ait kuralları ayarlamak için bu seçeneği kullanın.
Kuralları yerel olarak yönetilen depolama alanı gruplarına gönderir. "storageBucket" ve "rules" değerlerinizi dize olarak belirten bir seçenekler nesnesi alır.
firebase
.loadStorageRules({
storageBucket: "my-bucket",
rules: fs.readFileSync("/path/to/storage.rules", "utf8")
});
apps() => [FirebaseApp]
Şu anda başlatılmış tüm test ve yönetici uygulamalarını döndürür.
Bunu, testler arasında veya testlerden sonra uygulamaları temizlemek için kullanın (etkin dinleyicilere sahip başlatılmış uygulamaların JavaScript'in çıkmasını engellediğini unutmayın):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Giriş başarılı olursa reddedilen, giriş reddedilirse başarılı olan bir söz döndürür.
Depolama alanı grubu okuma veya yazma işleminin başarısız olduğunu onaylamak için bunu kullanın:
firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());
assertSucceeds(pr: Promise) => Promise
Giriş başarılı olursa başarılı olan, giriş reddedilirse reddedilen bir söz döndürür.
Depolama paketi okuma veya yazma işleminin başarılı olduğunu onaylamak için bunu kullanın:
firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());
JS SDK v8 için RUT kitaplığı API'si
Firebase Test SDK'sının emülatörle arayüz oluşturmak için kullandığı yöntemleri görmek üzere bir ürün seçin.
Cloud Firestore
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
Bu yöntem, seçeneklerde belirtilen proje kimliğine ve kimlik doğrulama değişkenine karşılık gelen başlatılmış bir Firebase uygulaması döndürür. Testlerde kullanılacak, belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bu özelliği kullanın.
firebase.initializeTestApp({ projectId: "my-test-project", auth: { uid: "alice", email: "alice@example.com" } });
initializeAdminApp({ projectId: string }) => FirebaseApp
Bu yöntem, başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, okuma ve yazma işlemleri gerçekleştirirken güvenlik kurallarını atlar. Testler için durumu ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bu yöntemi kullanın.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Bu yöntem, şu anda başlatılmış tüm test ve yönetici uygulamalarını döndürür.
Testler arasında veya testlerden sonra uygulamaları temizlemek için bu özelliği kullanın.
Promise.all(firebase.apps().map(app => app.delete()))
loadFirestoreRules({ projectId: string, rules: Object }) => Promise
Bu yöntem, kuralları yerel olarak çalışan bir veritabanına gönderir. Kuralları dize olarak belirten bir nesne alır. Veritabanınızın kurallarını ayarlamak için bu yöntemi kullanın.
firebase.loadFirestoreRules({ projectId: "my-test-project", rules: fs.readFileSync("/path/to/firestore.rules", "utf8") });
assertFails(pr: Promise) => Promise
Bu yöntem, giriş başarılı olursa reddedilen, giriş reddedilirse başarılı olan bir söz döndürür. Veritabanı okuma veya yazma işlemi başarısız olursa bunu onaylamak için kullanın.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Bu yöntem, giriş başarılı olursa başarılı olan ve giriş reddedilirse reddedilen bir söz döndürür. Veritabanı okuma veya yazma işleminin başarılı olup olmadığını onaylamak için kullanılır.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
Bu yöntem, yerel olarak çalışan Firestore örneğindeki belirli bir projeyle ilişkili tüm verileri temizler. Testlerden sonra temizlik yapmak için bu yöntemi kullanın.
firebase.clearFirestoreData({ projectId: "my-test-project" });
Realtime Database
Realtime Database
initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp
Bunu, testlerde kullanılacak, belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için kullanın.
Seçeneklerde belirtilen veritabanı adı ve auth değişkeni geçersiz kılma işlemine karşılık gelen başlatılmış bir Firebase uygulaması döndürür.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Testler için durum ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bu yöntemi kullanın.
Seçeneklerde belirtilen veritabanı adına karşılık gelen başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, veritabanına okuma ve yazma işlemi yaparken güvenlik kurallarını atlıyor.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
Veritabanınızın kurallarını ayarlamak için bu seçeneği kullanın.
Kuralları yerel olarak çalışan bir veritabanına gönderir. "databaseName" ve "rules" değerlerini dize olarak belirten bir seçenekler nesnesi alır.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
Şu anda başlatılmış tüm test ve yönetici uygulamalarını döndürür.
Bunu, testler arasında veya testlerden sonra uygulamaları temizlemek için kullanın (etkin dinleyicilere sahip başlatılmış uygulamaların JavaScript'in çıkmasını engellediğini unutmayın):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Giriş başarılı olursa reddedilen, giriş reddedilirse başarılı olan bir söz döndürür.
Bir veritabanı okuma veya yazma işleminin başarısız olduğunu onaylamak için bunu kullanın:
firebase.assertFails(app.database().ref("secret").once("value"));
assertSucceeds(pr: Promise) => Promise
Giriş başarılı olursa başarılı olan, giriş reddedilirse reddedilen bir söz döndürür.
Bir veritabanı okuma veya yazma işleminin başarılı olduğunu onaylamak için bunu kullanın:
firebase.assertSucceeds(app.database().ref("public").once("value"));
Cloud Storage
Cloud Storage
initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp
Bunu, testlerde kullanılacak, belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için kullanın.
Seçeneklerde belirtilen depolama paketi adına ve kimlik doğrulama değişkeni geçersiz kılmaya karşılık gelen başlatılmış bir Firebase uygulaması döndürür.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
Testler için durum ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bu yöntemi kullanın.
Seçeneklerde belirtilen depolama paketi adına karşılık gelen başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, pakete okuma ve yazma işlemi yaparken güvenlik kurallarını atlıyor.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Depolama paketinize ait kuralları ayarlamak için bu seçeneği kullanın.
Kuralları yerel olarak yönetilen depolama alanı gruplarına gönderir. "storageBucket" ve "rules" değerlerinizi dize olarak belirten bir seçenekler nesnesi alır.
firebase
.loadStorageRules({
storageBucket: "my-bucket",
rules: fs.readFileSync("/path/to/storage.rules", "utf8")
});
apps() => [FirebaseApp]
Şu anda başlatılmış tüm test ve yönetici uygulamalarını döndürür.
Bunu, testler arasında veya testlerden sonra uygulamaları temizlemek için kullanın (etkin dinleyicilere sahip başlatılmış uygulamaların JavaScript'in çıkmasını engellediğini unutmayın):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Giriş başarılı olursa reddedilen, giriş reddedilirse başarılı olan bir söz döndürür.
Depolama alanı grubu okuma veya yazma işleminin başarısız olduğunu onaylamak için bunu kullanın:
firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());
assertSucceeds(pr: Promise) => Promise
Giriş başarılı olursa başarılı olan, giriş reddedilirse reddedilen bir söz döndürür.
Depolama paketi okuma veya yazma işleminin başarılı olduğunu onaylamak için bunu kullanın:
firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());