public async Task Set_SavesConfiguration() { var expectedInstance = new ConfigInstance <SimpleConfig>(new SimpleConfig { IntProperty = 23 }, defaultIdentity); List <SnapshotTextEntry> observedValue = new List <SnapshotTextEntry>(); connector.Setup(c => c.SetSnapshotEntries(defaultEntry.Id, It.IsAny <IEnumerable <SnapshotTextEntry> >())) .Returns((string id, IEnumerable <SnapshotTextEntry> e) => { observedValue = e.ToList(); return(Task.FromResult(0)); }); var entry = new ConfigurationSnapshotEntry { Info = defaultEntry, Configurations = new List <ConfigInstance> { expectedInstance } }; await target.SaveSnapshot(entry); Assert.Single(observedValue); Assert.Equal(expectedInstance.Name, observedValue[0].ConfigurationName); var jObject = JObject.Parse(observedValue[0].ConfigurationJson); Assert.Equal(defaultIdentity.ServerVersion.ToString(), jObject.GetValue(nameof(ConfigStorageObject.ServerVersion)).ToString()); Assert.Equal(defaultIdentity.Client.ClientId, jObject.GetValue(nameof(ConfigStorageObject.ClientId)).ToString()); Assert.Equal(expectedInstance.Name, jObject.GetValue(nameof(ConfigStorageObject.ConfigName)).ToString()); Assert.Equal(23, jObject.GetValue(nameof(ConfigStorageObject.Config)).ToObject <SimpleConfig>().IntProperty); }
public async Task Set_UpdatesRegistry() { var expectedInstance = new ConfigInstance <SimpleConfig>(new SimpleConfig { IntProperty = 23 }, defaultIdentity); List <SnapshotEntryInfo> observedValue = new List <SnapshotEntryInfo>(); connector.Setup(c => c.SetSnapshotRegistryFileAsync(It.IsAny <string>())) .Returns((string value) => { observedValue = JsonConvert.DeserializeObject <List <SnapshotEntryInfo> >(value); return(Task.FromResult(0)); }); var entry = new ConfigurationSnapshotEntry { Info = defaultEntry, Configurations = new List <ConfigInstance> { expectedInstance } }; await target.SaveSnapshot(entry); Assert.Equal(new[] { defaultEntry }, observedValue, new SnapShotEqualityComparer()); }
public async Task Handle_CallsSaveWithCorrectConfiguration() { var snapshotName = "NameOne"; ConfigurationSnapshotEntry observedEntry = null; var config = new ConfigInstance <SimpleConfig>(new SimpleConfig { IntProperty = 23 }, new ConfigurationIdentity(client, version)); configurationService.Setup(s => s.GetAsync(typeof(SimpleConfig), It.Is <ConfigurationIdentity>(i => i.Client.Equals(client) && i.ServerVersion.Equals(version)))) .ReturnsAsync(config); snapshotRepository.Setup(s => s.SaveSnapshot(It.IsAny <ConfigurationSnapshotEntry>())) .Returns((ConfigurationSnapshotEntry entry) => { observedEntry = entry; return(Task.FromResult(true)); }); var result = await target.Handle(new CreateSnapshotCommand { ClientId = clientId, Name = snapshotName }); Assert.True(result.IsSuccessful); Assert.NotNull(observedEntry); Assert.Equal(1, observedEntry.Configurations.Count); var observedConfig = observedEntry.Configurations.Single().GetConfiguration() as SimpleConfig; Assert.NotNull(observedConfig); Assert.Equal(23, observedConfig.IntProperty); }
private IEnumerable <ConfigInstance> GetConfigurations(ConfigurationSnapshotEntry entry, PushSnapshotToClientCommand command) { if (command.ConfigsToCopy == null || command.ConfigsToCopy.Length == 0) { return(entry.Configurations); } return(entry.Configurations.Where(w => command.ConfigsToCopy.Contains(w.Name, StringComparer.OrdinalIgnoreCase))); }
public Task <ConfigurationSnapshotEntry> GetSnapshot(string snapshotId, ConfigurationIdentity targetConfigurationIdentity) { var entry = source.SingleOrDefault(s => string.Equals(snapshotId, s.Key.Id)); var result = new ConfigurationSnapshotEntry { Info = entry.Key, Configurations = entry.Value }; return(Task.FromResult(result)); }
/// <summary> /// Save snapshot /// </summary> /// <param name="snapshot">snapshot to saved</param> /// <returns>Task for operation</returns> public async Task SaveSnapshot(ConfigurationSnapshotEntry snapshot) { var entries = snapshot.Configurations.Select(Map); await connector.SetSnapshotEntries(snapshot.Info.Id, entries); await locker.WaitAsync(); try { var snapshots = (await GetSnapshots()).ToDictionary(k => k.Id, StringComparer.OrdinalIgnoreCase); snapshots[snapshot.Info.Id] = snapshot.Info; await connector.SetSnapshotRegistryFileAsync(JsonConvert.SerializeObject(snapshots.Values)); } finally { locker.Release(); } }
public async Task Handle_CallsSaveWithCorrectInfo() { var snapshotName = "NameOne"; ConfigurationSnapshotEntry observedEntry = null; snapshotRepository.Setup(s => s.SaveSnapshot(It.IsAny <ConfigurationSnapshotEntry>())) .Returns((ConfigurationSnapshotEntry entry) => { observedEntry = entry; return(Task.FromResult(true)); }); var result = await target.Handle(new CreateSnapshotCommand { ClientId = clientId, Name = snapshotName }); Assert.True(result.IsSuccessful); Assert.NotNull(observedEntry); Assert.Equal(snapshotName, observedEntry.Info.Name); Assert.Equal(groupId, observedEntry.Info.GroupId); Assert.True(!string.IsNullOrWhiteSpace(observedEntry.Info.Id)); }
public Task SaveSnapshot(ConfigurationSnapshotEntry snapshot) { source[snapshot.Info] = snapshot.Configurations; return(Task.FromResult(0)); }