in firestore/testapp/Assets/Firebase/Sample/Firestore/UIHandlerAutomated.cs [2768:2909]
Task TestFirestoreSettings() {
return Async(() => {
// Verify that ToString() returns a meaningful value.
{
FirebaseApp customApp = FirebaseApp.Create(db.App.Options, "settings-tostring-test");
FirebaseFirestore customDb = FirebaseFirestore.GetInstance(customApp);
customDb.Settings.Host = "a.b.c";
customDb.Settings.SslEnabled = true;
customDb.Settings.PersistenceEnabled = false;
customDb.Settings.CacheSizeBytes = 9876543;
AssertStringContainsNoCase(customDb.Settings.ToString(), "FirebaseFirestoreSettings");
AssertStringContainsNoCase(customDb.Settings.ToString(), "Host=a.b.c");
AssertStringContainsNoCase(customDb.Settings.ToString(), "SslEnabled=true");
AssertStringContainsNoCase(customDb.Settings.ToString(), "PersistenceEnabled=false");
AssertStringContainsNoCase(customDb.Settings.ToString(), "CacheSizeBytes=9876543");
customApp.Dispose();
}
// Verify the default FirebaseFirestoreSettings values.
{
FirebaseApp customApp = FirebaseApp.Create(db.App.Options, "settings-defaults-test");
FirebaseFirestore customDb = FirebaseFirestore.GetInstance(customApp);
AssertEq(customDb.Settings.Host, "firestore.googleapis.com");
AssertEq(customDb.Settings.SslEnabled, true);
AssertEq(customDb.Settings.PersistenceEnabled, true);
AssertEq(customDb.Settings.CacheSizeBytes, 100 * 1024 * 1024);
customApp.Dispose();
}
// Verify that the FirebaseFirestoreSettings written are read back.
{
FirebaseApp customApp = FirebaseApp.Create(db.App.Options, "settings-readwrite-test");
FirebaseFirestore customDb = FirebaseFirestore.GetInstance(customApp);
customDb.Settings.Host = "a.b.c";
AssertEq<string>(customDb.Settings.Host, "a.b.c");
customDb.Settings.Host = "d.e.f";
AssertEq<string>(customDb.Settings.Host, "d.e.f");
customDb.Settings.SslEnabled = true;
AssertEq<bool>(customDb.Settings.SslEnabled, true);
customDb.Settings.SslEnabled = false;
AssertEq<bool>(customDb.Settings.SslEnabled, false);
customDb.Settings.PersistenceEnabled = true;
AssertEq<bool>(customDb.Settings.PersistenceEnabled, true);
customDb.Settings.PersistenceEnabled = false;
AssertEq<bool>(customDb.Settings.PersistenceEnabled, false);
customDb.Settings.CacheSizeBytes = 9876543;
AssertEq<long>(customDb.Settings.CacheSizeBytes, 9876543);
customDb.Settings.CacheSizeBytes = 1234567;
AssertEq<long>(customDb.Settings.CacheSizeBytes, 1234567);
customApp.Dispose();
}
// Verify the FirebaseFirestoreSettings behavior after the FirebaseFirestore is disposed.
{
FirebaseApp customApp = FirebaseApp.Create(db.App.Options, "settings-dispose-test");
FirebaseFirestore customDb = FirebaseFirestore.GetInstance(customApp);
FirebaseFirestoreSettings settings = customDb.Settings;
var oldHost = settings.Host;
var oldSslEnabled = settings.SslEnabled;
var oldPersistenceEnabled = settings.PersistenceEnabled;
var oldCacheSizeBytes = settings.CacheSizeBytes;
customApp.Dispose();
AssertException(typeof(InvalidOperationException), () => { settings.Host = "a.b.c"; });
AssertException(typeof(InvalidOperationException),
() => { settings.SslEnabled = false; });
AssertException(typeof(InvalidOperationException),
() => { settings.PersistenceEnabled = false; });
AssertException(typeof(InvalidOperationException),
() => { settings.CacheSizeBytes = 9876543; });
// Test "getting" the values after verifying that setting throws an exception to ensure
// that the values were not actually changed by the exception-throwing set operation.
AssertEq<string>(settings.Host, oldHost);
AssertEq<bool>(settings.SslEnabled, oldSslEnabled);
AssertEq<bool>(settings.PersistenceEnabled, oldPersistenceEnabled);
AssertEq<long>(settings.CacheSizeBytes, oldCacheSizeBytes);
}
// Verify the FirebaseFirestoreSettings behavior after the FirebaseFirestore is used.
{
FirebaseApp customApp = FirebaseApp.Create(db.App.Options, "settings-toolate-test");
FirebaseFirestore customDb = FirebaseFirestore.GetInstance(customApp);
var oldHost = customDb.Settings.Host;
var oldSslEnabled = customDb.Settings.SslEnabled;
var oldPersistenceEnabled = customDb.Settings.PersistenceEnabled;
var oldCacheSizeBytes = customDb.Settings.CacheSizeBytes;
// "Use" the settings to lock them in, so that future "set" operations will fail.
customDb.Collection("a");
AssertException(typeof(InvalidOperationException),
() => { customDb.Settings.Host = "a.b.c"; });
AssertException(typeof(InvalidOperationException),
() => { customDb.Settings.SslEnabled = false; });
AssertException(typeof(InvalidOperationException),
() => { customDb.Settings.PersistenceEnabled = false; });
AssertException(typeof(InvalidOperationException),
() => { customDb.Settings.CacheSizeBytes = 9876543; });
// Test "getting" the values after verifying that setting throws an exception to ensure
// that the values were not actually changed by the exception-throwing set operation.
AssertEq<string>(customDb.Settings.Host, oldHost);
AssertEq<bool>(customDb.Settings.SslEnabled, oldSslEnabled);
AssertEq<bool>(customDb.Settings.PersistenceEnabled, oldPersistenceEnabled);
AssertEq<long>(customDb.Settings.CacheSizeBytes, oldCacheSizeBytes);
customApp.Dispose();
}
// Verify that FirebaseFirestoreSettings.PersistenceEnabled is respected.
{
FirebaseApp customApp = FirebaseApp.Create(db.App.Options, "settings-persistence-test");
string docPath;
{
FirebaseFirestore customDb = FirebaseFirestore.GetInstance(customApp);
customDb.Settings.PersistenceEnabled = true;
DocumentReference doc = customDb.Collection("settings-persistence-test").Document();
docPath = doc.Path;
AssertTaskSucceeds(doc.SetAsync(TestData(1)));
AssertTaskSucceeds(doc.GetSnapshotAsync(Source.Cache));
AssertTaskSucceeds(customDb.TerminateAsync());
}
{
FirebaseFirestore customDb = FirebaseFirestore.GetInstance(customApp);
customDb.Settings.PersistenceEnabled = false;
DocumentReference doc = customDb.Document(docPath);
AssertTaskSucceeds(doc.SetAsync(TestData(1)));
AssertTaskFaults(doc.GetSnapshotAsync(Source.Cache));
AssertTaskSucceeds(customDb.TerminateAsync());
}
customApp.Dispose();
}
});
}