protected async Task OutputFolderContentsMatchInputFolderContents() { Debug.WriteLine(Directory.GetCurrentDirectory()); var configReader = new ConfigFileReader(); var inputConfiguration = await configReader.ReadConfiguration(InputFolder); var outputConfiguration = await configReader.ReadConfiguration(OutputFolder); inputConfiguration.GlobalConfig.Plugins.Should().NotBeEmpty(); inputConfiguration.Services.Count.Should().Be(3); outputConfiguration.GlobalConfig.Plugins.Should().BeEquivalentTo(inputConfiguration.GlobalConfig.Plugins); outputConfiguration.Services.Should().BeEquivalentTo(inputConfiguration.Services); foreach (var outputService in outputConfiguration.Services) { var inputService = inputConfiguration.Services.Single(x => x.Name == outputService.Name); outputService.Plugins.Should().BeEquivalentTo(inputService.Plugins); outputService.Routes.Should().BeEquivalentTo(inputService.Routes); foreach (var outputServiceRoute in outputService.Routes) { var inputServiceRoute = inputService.Routes.Single(x => x.Equals(outputServiceRoute)); outputServiceRoute.Plugins.Should().BeEquivalentTo(inputServiceRoute.Plugins); } } }
protected async Task OutputFolderContentsMatchesFolderContentsOf(string name) { var folder = name.StartsWith("Folder") ? name : MakeFolderName(name); Debug.WriteLine(Directory.GetCurrentDirectory()); var kongReader = new KongAdminReader(new KongAdminHttpClient(new KongAdminApiConnectionDetails())); var kongConfiguration = await kongReader.GetConfiguration(); var availablePlugins = kongConfiguration.Plugins.Available.Where(x => x.Value).Select(x => x.Key).ToDictionary(x => x, x => new AsyncLazy <KongPluginSchema>(() => kongReader.GetPluginSchema(x))); var configReader = new ConfigFileReader(); var folderConfiguration = await configReader.ReadConfiguration(folder, availablePlugins); var outputConfiguration = await configReader.ReadConfiguration(OutputFolder, availablePlugins); folderConfiguration.GlobalConfig.Plugins.Should().NotBeEmpty(); folderConfiguration.Services.Count.Should().Be(3); outputConfiguration.GlobalConfig.Plugins.Should().BeEquivalentTo(folderConfiguration.GlobalConfig.Plugins); outputConfiguration.Services.Should().BeEquivalentTo(folderConfiguration.Services); foreach (var outputService in outputConfiguration.Services) { var folderService = folderConfiguration.Services.Single(x => x.Name == outputService.Name); outputService.Plugins.Should().BeEquivalentTo(folderService.Plugins); outputService.Routes.Should().BeEquivalentTo(folderService.Routes); foreach (var outputServiceRoute in outputService.Routes) { var folderServiceRoute = folderService.Routes.Single(x => x.Equals(outputServiceRoute)); outputServiceRoute.Plugins.Should().BeEquivalentTo(folderServiceRoute.Plugins); } } }
protected async Task OutputFolderContentsMatchesFolderContentsOf(string name) { var folder = name.StartsWith("Folder") ? name : MakeFolderName(name); Debug.WriteLine(Directory.GetCurrentDirectory()); var kongReader = new KongAdminReader(new KongAdminHttpClient(new KongAdminApiConnectionDetails())); var kongConfiguration = await kongReader.GetConfiguration(); var schemas = kongConfiguration.GetSchemas(kongReader); var configReader = new ConfigFileReader(new PhysicalFileProvider()); var folderConfiguration = await configReader.ReadConfiguration(folder, schemas); var outputConfiguration = await configReader.ReadConfiguration(OutputFolder, schemas); folderConfiguration.GlobalConfig.Plugins.Should().NotBeEmpty(); folderConfiguration.Services.Count.Should().Be(3); outputConfiguration.GlobalConfig.Plugins.Should().BeEquivalentTo(folderConfiguration.GlobalConfig.Plugins); outputConfiguration.Services.Should().BeEquivalentTo(folderConfiguration.Services); foreach (var outputService in outputConfiguration.Services) { var folderService = folderConfiguration.Services.Single(x => x.Name == outputService.Name); outputService.Plugins.Should().BeEquivalentTo(folderService.Plugins); outputService.Routes.Should().BeEquivalentTo(folderService.Routes); foreach (var outputServiceRoute in outputService.Routes) { var folderServiceRoute = folderService.Routes.Single(x => x.Equals(outputServiceRoute)); outputServiceRoute.Plugins.Should().BeEquivalentTo(folderServiceRoute.Plugins); } } }
public override async Task <int> DoExecute() { KongvergeConfiguration targetConfiguration; try { targetConfiguration = await _configReader.ReadConfiguration(Configuration.InputFolder); } catch (DirectoryNotFoundException ex) { return(ExitWithCode.Return(ExitCode.InputFolderUnreachable, ex.Message)); } catch (InvalidConfigurationFileException ex) { return(ExitWithCode.Return(ExitCode.InvalidConfigurationFile, $"Invalid configuration file {ex.Path}{Environment.NewLine}{ex.Message}")); } var existingConfiguration = await _configBuilder.FromKong(KongReader); await ConvergeObjects( existingConfiguration.Services, targetConfiguration.Services, x => _kongWriter.DeleteService(x.Id), x => _kongWriter.AddService(x), x => _kongWriter.UpdateService(x), ConvergeServiceChildren); await ConvergeChildrenPlugins(existingConfiguration.GlobalConfig, targetConfiguration.GlobalConfig); return(ExitWithCode.Return(ExitCode.Success)); }
protected async Task OutputFolderContentsMatchesFolderContentsOf(string name) { var folder = name.StartsWith("Folder") ? name : MakeFolderName(name); Debug.WriteLine(Directory.GetCurrentDirectory()); var settings = new Settings { Admin = new Admin { Host = Host, Port = Port } }; var kongReader = new KongAdminReader(new KongAdminHttpClient(Options.Create(settings))); var kongConfiguration = await kongReader.GetConfiguration(); var availablePlugins = kongConfiguration.Plugins.Available.Where(x => x.Value).Select(x => x.Key).ToArray(); var configReader = new ConfigFileReader(); var folderConfiguration = await configReader.ReadConfiguration(folder, availablePlugins); var outputConfiguration = await configReader.ReadConfiguration(OutputFolder, availablePlugins); folderConfiguration.GlobalConfig.Plugins.Should().NotBeEmpty(); folderConfiguration.Services.Count.Should().Be(3); outputConfiguration.GlobalConfig.Plugins.Should().BeEquivalentTo(folderConfiguration.GlobalConfig.Plugins); outputConfiguration.Services.Should().BeEquivalentTo(folderConfiguration.Services); foreach (var outputService in outputConfiguration.Services) { var folderService = folderConfiguration.Services.Single(x => x.Name == outputService.Name); outputService.Plugins.Should().BeEquivalentTo(folderService.Plugins); outputService.Routes.Should().BeEquivalentTo(folderService.Routes); foreach (var outputServiceRoute in outputService.Routes) { var folderServiceRoute = folderService.Routes.Single(x => x.Equals(outputServiceRoute)); outputServiceRoute.Plugins.Should().BeEquivalentTo(folderServiceRoute.Plugins); } } }