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);
        }
Beispiel #4
0
 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));
 }