Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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);
                }
            }
        }
Пример #3
0
        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);
                }
            }
        }
Пример #4
0
        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));
        }
Пример #5
0
        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);
                }
            }
        }