public void Authorized() { var result1 = _processor.Upload(new UploadDataRequest() { ChangeNotifications = new[] { new UploadRequestItem() { PrimaryKey = "123", Type = "DbSyncObject", SerializedObject = JsonConvert.SerializeObject(new DbSyncObject() { Id = "123", Text = "zxc", Tags = "u1" }), } } }, new LimitedUser()); var result = _processor.Download(new DownloadDataRequest() { LastChangeTime = new DateTimeOffset(DateTime.Now).AddHours(-1).ToDictionary(), Types = new[] { nameof(DbSyncObject) }, }, new LimitedUser(new[] { "u2" })); result.ChangedObjects.Should().BeEmpty(); var result2 = _processor.Download(new DownloadDataRequest() { LastChangeTime = new DateTimeOffset(DateTime.Now).AddHours(-1).ToDictionary(), Types = new[] { nameof(DbSyncObject) }, }, new LimitedUser(new[] { "u1" })); result2.ChangedObjects.Count.Should().Be(1); }
public void UploadData_ModifyObjectWithinCheckAndProcess_RequestObject() { _contextFunc().DbSyncObjectWithIgnoredFields.Count().Should().Be(0); var config = new Mock <ShareEverythingConfiguration>(_contextFunc, typeof(DbSyncObjectWithIgnoredFields)) { CallBase = true }; var controller = new RealmiusServerProcessor(config.Object); var result = controller.Upload(new UploadDataRequest { ChangeNotifications = { new UploadRequestItem() { Type = "DbSyncObjectWithIgnoredFields", PrimaryKey = "1", SerializedObject = "{Id: '1', Text: '123', Tags: 'zxc'}", } } }, null); CheckNoError(result); config.Setup( x => x.CheckAndProcess(It.IsAny <CheckAndProcessArgs <object> >())) .Returns((CheckAndProcessArgs <object> args) => { ((LocalDbContext)args.Database).DbSyncObjectWithIgnoredFields.Find(args.Entity.MobilePrimaryKey).Should().NotBeNull(); ((DbSyncObjectWithIgnoredFields)args.Entity).Text = "qwe"; return(true); }); var result2 = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = "DbSyncObjectWithIgnoredFields", PrimaryKey = "1", SerializedObject = "{Id: '1', Text: 'asd', Tags: 'zxc'}", } } }, null); CheckNoError(result2); var db2 = _contextFunc(); var obj2 = db2.DbSyncObjectWithIgnoredFields.First(); obj2.Text.Should().Be("qwe"); }
public void DoNotUpdateIgnoredFields() { _contextFunc().DbSyncObjectWithIgnoredFields.Count().Should().Be(0); var controller = new RealmiusServerProcessor(new ShareEverythingConfiguration(_contextFunc, typeof(DbSyncObjectWithIgnoredFields))); var result = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = "DbSyncObjectWithIgnoredFields", PrimaryKey = "1", SerializedObject = "{Id: '1', Text: '123', Tags: 'zxc'}", } } }, null); CheckNoError(result); var db = _contextFunc(); var obj = db.DbSyncObjectWithIgnoredFields.First(); obj.Text.Should().Be("123"); obj.Tags.Should().BeNullOrEmpty(); var result2 = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = "DbSyncObjectWithIgnoredFields", PrimaryKey = "1", SerializedObject = "{Id: '1', Text: '1234', Tags: 'zxc'}", } } }, null); CheckNoError(result2); var db2 = _contextFunc(); var obj2 = db2.DbSyncObjectWithIgnoredFields.First(); obj2.Text.Should().Be("1234"); obj2.Tags.Should().BeNullOrEmpty(); }
public void KnownType_Saved1() { _contextFunc().DbSyncObjects.Count().Should().Be(0); var controller = new RealmiusServerProcessor(new ShareEverythingConfiguration(_contextFunc, typeof(DbSyncObject))); var objectToSave = new DbSyncObject() { Text = "123123123", Id = Guid.NewGuid().ToString() }; var result = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = "DbSyncObject", PrimaryKey = objectToSave.MobilePrimaryKey, SerializedObject = JsonConvert.SerializeObject(objectToSave), } } }, null); result.Results.Count.Should().Be(1); CheckNoError(result); result.Results[0].MobilePrimaryKey.Should().Be(objectToSave.MobilePrimaryKey); _contextFunc().DbSyncObjects.Count().Should().Be(1); }
public void IdGuid() { _contextFunc().IdGuidObjects.Count().Should().Be(0); var controller = new RealmiusServerProcessor(new SyncConfigForCustomId(_contextFunc, typeof(IdGuidObject))); var objectToSave = new IdGuidObject() { Text = "123123123", Id = Guid.NewGuid(), }; var result = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = nameof(IdGuidObject), PrimaryKey = objectToSave.MobilePrimaryKey, SerializedObject = JsonConvert.SerializeObject(objectToSave), } } }, null); CheckNoError(result); result = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = nameof(IdGuidObject), PrimaryKey = objectToSave.MobilePrimaryKey, SerializedObject = "{Text: 'asd'}", } } }, null); CheckNoError(result); _contextFunc().IdGuidObjects.Find(objectToSave.Id).Text.Should().BeEquivalentTo("asd"); _contextFunc().IdGuidObjects.Count().Should().Be(1); }
public UploadDataResponse UploadData(UploadDataRequest request, string connectionId) { if (!Connections.ContainsKey(connectionId)) { Logger.Info($"User with ConnectionId {connectionId} not found in the connections pool (not authorized?)"); return(new UploadDataResponse()); } var result = Processor.Upload(request, Connections[connectionId]); return(result); }
public void UnknownType_NotInDb_TypeDoesNotExist() { var controller = new RealmiusServerProcessor(new ShareEverythingConfiguration(_contextFunc, typeof(DbSyncObject))); var result = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = "UnknownSyncObject", PrimaryKey = "123", SerializedObject = JsonConvert.SerializeObject(new UnknownSyncObject()), } } }, null); result.Results.Count.Should().Be(0); }
public void Deleted() { _contextFunc().DbSyncObjects.Count().Should().Be(0); var controller = new RealmiusServerProcessor(new ShareEverythingConfiguration(_contextFunc, typeof(DbSyncObject))); var objectToSave = new DbSyncObject() { Text = "123123123", Id = Guid.NewGuid().ToString() }; var db = _contextFunc(); db.DbSyncObjects.Add(objectToSave); db.SaveChanges(); Func <DownloadDataResponse> getDownloaded = () => controller.Download(new DownloadDataRequest() { Types = new[] { nameof(DbSyncObject) }, }, new { }); var downloaded1 = getDownloaded(); downloaded1.ChangedObjects.Count.Should().Be(1); var result = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = nameof(DbSyncObject), PrimaryKey = objectToSave.MobilePrimaryKey, SerializedObject = "", IsDeleted = true, } } }, null); CheckNoError(result); _contextFunc().DbSyncObjects.Find(objectToSave.Id).Should().BeNull(); var downloaded2 = getDownloaded(); downloaded2.ChangedObjects.Count.Should().Be(0); //deleted items should not be downloaded during initial DB download }
public void UnknownType_Exception() { var controller = new RealmiusServerProcessor(new ShareEverythingConfiguration(_contextFunc, typeof(UnknownSyncObject))); var result = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = "UnknownSyncObject", PrimaryKey = "123", SerializedObject = JsonConvert.SerializeObject(new UnknownSyncObject()), } } }, null); result.Results.Count.Should().Be(1); result.Results[0].Error.Should().ContainEquivalentOf("The entity type UnknownSyncObject is not part of the model for the current context"); }
public void IntFieldSentAsString() { var controller = new RealmiusServerProcessor(new ShareEverythingConfiguration(_contextFunc, typeof(IntFieldSentAsStringObject))); var result = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = nameof(IntFieldSentAsStringObject), PrimaryKey = "123", SerializedObject = "{Id: \"123\", IntField: \"456\", MobilePrimaryKey: \"123\"}", } } }, null); CheckNoError(result); _contextFunc().IntFieldSentAsStringObjects.Count().Should().Be(1); var q = _contextFunc().IntFieldSentAsStringObjects.First(); q.IntField.Should().Be(456); }
public void Upload_Delete_UploadAgain() { var controller = new RealmiusServerProcessor(new ShareEverythingConfiguration(_contextFunc, typeof(DbSyncObject))); Func <DownloadDataResponse> getDownloaded = () => controller.Download(new DownloadDataRequest() { Types = new[] { nameof(DbSyncObject) }, }, new { }); Func <string> dataToCompare = () => { var data = getDownloaded(); return(string.Join(", ", data.ChangedObjects.Select(x => $"{x.IsDeleted}"))); }; var objectToSave = new DbSyncObject() { Text = "123123123", Id = Guid.NewGuid().ToString() }; var result1 = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = nameof(DbSyncObject), PrimaryKey = objectToSave.MobilePrimaryKey, SerializedObject = JsonConvert.SerializeObject(objectToSave), //IsDeleted = true, } } }, null); dataToCompare().Should().BeEquivalentTo("False"); var result2 = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = nameof(DbSyncObject), PrimaryKey = objectToSave.MobilePrimaryKey, SerializedObject = "", IsDeleted = true, } } }, null); //dataToCompare().Should().BeEquivalentTo("True"); objectToSave.Text = "zxc"; var result3 = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = nameof(DbSyncObject), PrimaryKey = objectToSave.MobilePrimaryKey, SerializedObject = JsonConvert.SerializeObject(objectToSave), IsDeleted = false, } } }, null); dataToCompare().Should().BeEquivalentTo("False"); }
public void UploadData_CheckAndProcessCanRetrieveUnmodifiedEntityFromDatabase() { _contextFunc().DbSyncObjectWithIgnoredFields.Count().Should().Be(0); var config = new Mock <ShareEverythingConfiguration>(_contextFunc, typeof(DbSyncObjectWithIgnoredFields)) { CallBase = true }; var controller = new RealmiusServerProcessor(config.Object); var result = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = "DbSyncObjectWithIgnoredFields", PrimaryKey = "1", SerializedObject = "{Id: '1', Text: '123', Tags: 'zxc'}", } } }, null); CheckNoError(result); config.Setup( x => x.CheckAndProcess(It.IsAny <CheckAndProcessArgs <object> >())) .Returns((CheckAndProcessArgs <object> args) => { var localDb = (LocalDbContext)args.Database; var dbObj = (DbSyncObjectWithIgnoredFields)args.OriginalDbEntity; dbObj.Text.Should().Be("123"); ((DbSyncObjectWithIgnoredFields)args.Entity).Text.Should().Be("asd"); return(true); }); var result2 = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = "DbSyncObjectWithIgnoredFields", PrimaryKey = "1", SerializedObject = "{Id: '1', Text: 'asd', Tags: 'zxc'}", } } }, null); CheckNoError(result2); config.VerifyAll(); var db2 = _contextFunc(); var obj2 = db2.DbSyncObjectWithIgnoredFields.First(); obj2.Text.Should().Be("asd"); obj2.Tags.Should().BeNullOrEmpty(); }
public void ManyToManyRef() { var db = _contextFunc(); var controller = new RealmiusServerProcessor(new ShareEverythingConfiguration(_contextFunc, typeof(RefSyncObject))); var result = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = nameof(RefSyncObject), PrimaryKey = "123", SerializedObject = "{Id: '123', Text: 'zxc'}", }, new UploadRequestItem() { Type = nameof(RefSyncObject), PrimaryKey = "22", SerializedObject = "{Id: '22', Text: 'qwe'}", }, new UploadRequestItem() { Type = nameof(RefSyncObject), PrimaryKey = "456", SerializedObject = "{Id: '456', Text: 'qwe', References: ['123']}", } } }, null); result.Results.Count.Should().Be(3); string.Join(", ", result.Results.Where(x => !x.IsSuccess).Select(x => x.Error)).Should().Be(""); db = _contextFunc(); var obj0 = db.RefSyncObjects.First(x => x.Id == "123"); obj0.Text.Should().Be("zxc"); var obj = db.RefSyncObjects.First(x => x.Id == "456"); obj.Text.Should().Be("qwe"); string.Join(", ", obj.References.Select(x => x.Text)).Should().BeEquivalentTo("zxc"); var result2 = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = nameof(RefSyncObject), PrimaryKey = "456", SerializedObject = "{References:null}", } } }, null); result2.Results.Count.Should().Be(1); string.Join(", ", result2.Results.Where(x => !x.IsSuccess).Select(x => x.Error)).Should().Be(""); db = _contextFunc(); string.Join(", ", db.RefSyncObjects.First(x => x.Id == "456").References.Select(x => x.Text)).Should().BeEquivalentTo(""); var result3 = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = nameof(RefSyncObject), PrimaryKey = "456", SerializedObject = "{References:['22']}", } } }, null); result3.Results.Count.Should().Be(1); string.Join(", ", result3.Results.Where(x => !x.IsSuccess).Select(x => x.Error)).Should().Be(""); db = _contextFunc(); string.Join(", ", db.RefSyncObjects.First(x => x.Id == "456").References.Select(x => x.Text)).Should().BeEquivalentTo("qwe"); var result4 = controller.Upload(new UploadDataRequest() { ChangeNotifications = { new UploadRequestItem() { Type = nameof(RefSyncObject), PrimaryKey = "456", SerializedObject = "{References:['22', '123']}", } } }, null); result4.Results.Count.Should().Be(1); string.Join(", ", result3.Results.Where(x => !x.IsSuccess).Select(x => x.Error)).Should().Be(""); db = _contextFunc(); string.Join(", ", db.RefSyncObjects.First(x => x.Id == "456").References.Select(x => x.Text).OrderBy(x => x)).Should().BeEquivalentTo("qwe, zxc"); }