public void Session_Error_WhenInvalidAccessToken() { TestHelpers.RunAsyncTest(async() => { var errors = new List <Exception>(); var config = await SyncTestHelpers.GetFakeConfigAsync(); using (var realm = GetRealm(config)) { EventHandler <ErrorEventArgs> handler = null; handler = new EventHandler <ErrorEventArgs>((sender, e) => { errors.Add(e.Exception); CleanupOnTearDown((Session)sender); }); Session.Error += handler; while (!errors.Any()) { await Task.Yield(); } Session.Error -= handler; var sessionErrors = errors.OfType <SessionException>().ToArray(); Assert.That(sessionErrors.Count, Is.EqualTo(1)); Assert.That(sessionErrors[0].ErrorCode, Is.EqualTo(ErrorCode.BadUserAuthentication)); } }); }
public void Session_DivergingHistories_ShouldRaiseClientResetException() { TestHelpers.RunAsyncTest(async() => { var config = await SyncTestHelpers.GetFakeConfigAsync(); ClientResetException error = null; using (var realm = GetRealm(config)) { var session = GetSession(realm); var result = await SyncTestHelpers.SimulateSessionErrorAsync <ClientResetException>(session, ErrorCode.DivergingHistories, "Fake client reset is required"); CleanupOnTearDown(result.Item1); error = result.Item2; } Assert.That(error.BackupFilePath, Is.Not.Null); Assert.That(error.BackupFilePath, Does.Contain(Path.Combine("io.realm.object-server-recovered-realms", "recovered_realm"))); Assert.That(File.Exists(error.BackupFilePath), Is.False); var clientResetSuccess = error.InitiateClientReset(); Assert.That(clientResetSuccess, Is.True); Assert.That(File.Exists(error.BackupFilePath), Is.True); }); }
public void GetInstance_WhenDynamic_ReadsSchemaFromDisk() { TestHelpers.RunAsyncTest(async() => { var config = await SyncTestHelpers.GetFakeConfigAsync(); config.ObjectClasses = new[] { typeof(AllTypesObject) }; // Create the realm and add some objects using (var realm = GetRealm(config)) { realm.Write(() => realm.Add(new AllTypesObject { Int32Property = 42, RequiredStringProperty = "This is required!" })); } config.IsDynamic = true; using (var dynamicRealm = GetRealm(config)) { Assert.That(dynamicRealm.Schema.Count == 1); var objectSchema = dynamicRealm.Schema.Find(nameof(AllTypesObject)); Assert.That(objectSchema, Is.Not.Null); var hasExpectedProp = objectSchema.TryFindProperty(nameof(AllTypesObject.RequiredStringProperty), out var requiredStringProp); Assert.That(hasExpectedProp); Assert.That(requiredStringProp.Type, Is.EqualTo(PropertyType.String)); var ato = dynamicRealm.All(nameof(AllTypesObject)).Single(); Assert.That(ato.RequiredStringProperty, Is.EqualTo("This is required!")); } }); }
public void GetInstance_WhenDynamicAndDoesntExist_ReturnsEmptySchema() { TestHelpers.RunAsyncTest(async() => { var config = await SyncTestHelpers.GetFakeConfigAsync(); config.IsDynamic = true; using (var realm = GetRealm(config)) { Assert.That(realm.Schema, Is.Empty); } }); }
/// <summary> /// Opens a random realm and calls session.Stop(). It will assert state changes /// to Inactive. /// </summary> /// <returns>The stopped session.</returns> private async Task <Session> OpenRealmAndStopSession() { var config = await SyncTestHelpers.GetFakeConfigAsync(); var realm = GetRealm(config); var session = GetSession(realm); Assert.That(session.State, Is.EqualTo(SessionState.Active)); session.Stop(); Assert.That(session.State, Is.EqualTo(SessionState.Inactive)); return(session); }
public void Realm_GetSession_ShouldReturnSameObject() { TestHelpers.RunAsyncTest(async() => { var config = await SyncTestHelpers.GetFakeConfigAsync(); using (var realm = GetRealm(config)) { var session1 = GetSession(realm); var session2 = GetSession(realm); Assert.That(session1, Is.EqualTo(session2)); Assert.That(session1.GetHashCode(), Is.EqualTo(session2.GetHashCode())); } }); }
public void Session_Error_ShouldPassCorrectSession() { TestHelpers.RunAsyncTest(async() => { var config = await SyncTestHelpers.GetFakeConfigAsync(); using (var realm = GetRealm(config)) { var session = GetSession(realm); const ErrorCode code = (ErrorCode)102; const string message = "Some fake error has occurred"; var result = await SyncTestHelpers.SimulateSessionErrorAsync <SessionException>(session, code, message); CleanupOnTearDown(result.Item1); var error = result.Item2; Assert.That(error.Message, Is.EqualTo(message)); Assert.That(error.ErrorCode, Is.EqualTo(code)); var errorSession = result.Item1; Assert.That(errorSession.ServerUri, Is.EqualTo(((SyncConfigurationBase)realm.Config).ServerUri)); } }); }