示例#1
0
        public static IWebHostBuilder BuildWebHostBuilder(string[] args)
        {
            // TEMP CONFIG BUILDER TO GET THE VALUES IN THE ELASTIC BEANSTALK CONFIG
            IConfigurationBuilder tempConfigBuilder = new ConfigurationBuilder();

            tempConfigBuilder.AddJsonFile(
                @"C:\Program Files\Amazon\ElasticBeanstalk\config\containerconfiguration",
                optional: true,
                reloadOnChange: true
                );

            IConfigurationRoot tempConfig = tempConfigBuilder.Build();

            Dictionary <string, string> ebConfig = ConfigurationBuilderExtensions.GetConfig(tempConfig);

            // START WEB HOST BUILDER
            IWebHostBuilder builder = new WebHostBuilder()
                                      .UseKestrel()
                                      .UseContentRoot(Directory.GetCurrentDirectory());

            // CHECK IF EBCONFIG HAS ENVIRONMENT KEY IN IT
            // IF SO THEN CHANGE THE BUILDERS ENVIRONMENT
            const string envKey = "ASPNETCORE_ENVIRONMENT";

            if (ebConfig.ContainsKey(envKey))
            {
                string ebEnvironment = ebConfig[envKey];
                builder.UseEnvironment(ebEnvironment);
            }

            // CONTINUE WITH WEB HOST BUILDER AS NORMAL
            builder.ConfigureAppConfiguration((hostingContext, config) =>
            {
                IHostingEnvironment env = hostingContext.HostingEnvironment;

                // ADD THE ELASTIC BEANSTALK CONFIG DICTIONARY
                config.AddJsonFile(
                    "appsettings.json",
                    optional: false,
                    reloadOnChange: true
                    )
                .AddJsonFile(
                    $"appsettings.{env.EnvironmentName}.json",
                    optional: true,
                    reloadOnChange: true
                    )
                .AddInMemoryCollection(ebConfig);


                config.AddEnvironmentVariables();

                if (args != null)
                {
                    config.AddCommandLine(args);
                }
            })
            .UseIISIntegration();

            return(builder);
        }
示例#2
0
        public void GetSettingsDictionary_returns_the_expected_configuration_values()
        {
            // ARRANGE
            var settingsObject = new TestSettingsClass1()
            {
                Setting1 = "value1",
                Setting2 = true,
                Setting3 = false,
                Setting4 = TestEnum3.Value2,
                Setting5 = TestEnum3.Value2,
                Setting6 = 1,
                Setting7 = 2
            };

            // ACT
            var settingsDictionary = ConfigurationBuilderExtensions.GetSettingsDictionary(settingsObject);

            // ASSERT
            Assert.NotNull(settingsDictionary);
            Assert.Contains("root:Setting1", settingsDictionary.Keys);
            Assert.Contains("root:Setting2", settingsDictionary.Keys);
            Assert.Contains("root:Setting3", settingsDictionary.Keys);
            Assert.Contains("root:Setting4", settingsDictionary.Keys);
            Assert.Contains("root:Setting5", settingsDictionary.Keys);

            Assert.Equal("value1", settingsDictionary["root:Setting1"]);
            Assert.Equal("True", settingsDictionary["root:Setting2"]);
            Assert.Equal("False", settingsDictionary["root:Setting3"]);
            Assert.Equal("Value2", settingsDictionary["root:Setting4"]);
            Assert.Equal("Value2", settingsDictionary["root:Setting5"]);
            Assert.Equal("1", settingsDictionary["root:Setting6"]);
            Assert.Equal("2", settingsDictionary["root:Setting7"]);
        }
示例#3
0
        public void GetSettingsDictionary_throws_InvalidOperationException_is_property_has_not_getter()
        {
            // ARRANGE
            var settingsObject = new TestSettingsClass4();

            // ACT / ASSERT
            Assert.Throws <InvalidOperationException>(() => ConfigurationBuilderExtensions.GetSettingsDictionary(settingsObject));
        }
示例#4
0
        public static async Task Main(string[] args)
        {
            IConfigurationBuilder tempConfigBuilder = new ConfigurationBuilder();

            tempConfigBuilder.AddJsonFile(
                @"C:\Program Files\Amazon\ElasticBeanstalk\config\containerconfiguration",
                optional: true,
                reloadOnChange: true
                );
            IConfigurationRoot tempConfig = tempConfigBuilder.Build();

            Dictionary <string, string> ebConfig = ConfigurationBuilderExtensions.GetConfig(tempConfig);
            // CHECK IF EBCONFIG HAS ENVIRONMENT KEY IN IT
            // IF SO THEN CHANGE THE BUILDERS ENVIRONMENT
            const string envKey = "ASPNETCORE_ENVIRONMENT";

            var ebEnvironment = "Development";

            if (ebConfig.ContainsKey(envKey))
            {
                ebEnvironment = ebConfig[envKey];
            }

            tempConfigBuilder.AddJsonFile(
                "appsettings.json",
                optional: false,
                reloadOnChange: true
                )
            .AddJsonFile(
                $"appsettings.{ebEnvironment}.json",
                optional: true,
                reloadOnChange: true
                )
            .AddInMemoryCollection(ebConfig);

            try
            {
                IServiceCollection services = new ServiceCollection();
                services.AddMemoryCache();
                var builder = new ContainerBuilder();
                builder.RegisterModule(new Modules.AutofacModule(tempConfigBuilder.Build()));
                builder.Populate(services);
                var container = builder.Build();

                using (var scope = container.BeginLifetimeScope())
                {
                    await scope.Resolve <ISynchronizer>().Synchronize();
                }
            }
            catch (Exception e)
            {
                // TODO: Log and report
                Console.WriteLine($"EXCEPTION: {e.Message}");
            }
            Console.WriteLine("ExperienceOz Sync Completed..!");
        }
示例#5
0
 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
 WebHost.CreateDefaultBuilder(args)
 .UseContentRoot(Directory.GetCurrentDirectory())
 .ConfigureAppConfiguration((hostingContext, config) =>
 {
     var environmentName = hostingContext.HostingEnvironment.EnvironmentName;
     config = ConfigurationBuilderExtensions.GetConfigurationBuilder(environmentName);
 })
 .UseIISIntegration()
 .UseStartup <Startup>();
示例#6
0
        public void GetSettingsDictionary_ignores_non_public_properties()
        {
            // ARRANGE
            var settingsObject = new TestSettingsClass7();

            // ACT
            var settingsDictionary = ConfigurationBuilderExtensions.GetSettingsDictionary(settingsObject);

            // ASSERT
            Assert.NotNull(settingsDictionary);
            Assert.Empty(settingsDictionary);
        }
示例#7
0
        public void ParameterValidation()
        {
            var sut = new ConfigurationBuilder();

            Assert.Throws <ArgumentNullException>(() =>
            {
                sut.AddBotRuntimeConfiguration(null);
            });

            Assert.Throws <ArgumentNullException>(() =>
            {
                ConfigurationBuilderExtensions.AddBotRuntimeConfiguration(null, "blah");
            });
        }
示例#8
0
        public void GetSettingsDictionary_ignores_properties_if_their_value_is_null()
        {
            // ARRANGE
            var settingsObject = new TestSettingsClass5()
            {
                Setting1 = null
            };

            // ACT
            var settingsDictionary = ConfigurationBuilderExtensions.GetSettingsDictionary(settingsObject);

            // ASSERT
            Assert.NotNull(settingsDictionary);
            Assert.Empty(settingsDictionary);
        }
示例#9
0
        public void GetSettingsDictionary_loads_values_from_readonly_properties()
        {
            // ARRANGE
            var settingsObject = new TestSettingsClass6("value1");

            // ACT
            var settingsDictionary = ConfigurationBuilderExtensions.GetSettingsDictionary(settingsObject);

            // ASSERT
            Assert.NotNull(settingsDictionary);
            var kvp = Assert.Single(settingsDictionary);

            Assert.Equal("root:Setting1", kvp.Key);
            Assert.Equal("value1", kvp.Value);
        }
示例#10
0
        public void Matcher_does_not_match_other_macros()
        {
            // ARRANGE
            var builder = new ConfigurationBuilder()
                          .AddInMemoryCollection(new Dictionary <string, string>
            {
                ["Root:NotRoot:Setting"] = "@Microsoft.Other(SecretUri=https://foo.bar/baz)"
            });

            // ACT
            var found = ConfigurationBuilderExtensions.GatherTransformablePairs(builder);

            // ASSERT
            Assert.NotNull(found);
            Assert.Empty(found);
        }
示例#11
0
        public void Matcher_can_find_nested_level_matches()
        {
            // ARRANGE
            var builder = new ConfigurationBuilder()
                          .AddInMemoryCollection(new Dictionary <string, string>
            {
                ["Root:NotRoot:Setting"] = "@Microsoft.KeyVault(SecretUri=https://foo.bar/baz)"
            });

            // ACT
            var found = ConfigurationBuilderExtensions.GatherTransformablePairs(builder);

            // ASSERT
            Assert.NotNull(found);
            Assert.NotEmpty(found);
            Assert.Single(found, match => match.Key == "Root:NotRoot:Setting" && match.Value == "https://foo.bar/baz");
        }
示例#12
0
        public void GetSettingsDictionary_correctly_handles_IEnumerables()
        {
            // ARRANGE
            var settingsObject = new TestSettingsClass12()
            {
                Setting1 = Enumerable.Range(1, 2).Select(i => $"value{i}")
            };

            // ACT
            var settingsDictionary = ConfigurationBuilderExtensions.GetSettingsDictionary(settingsObject);

            // ASSERT
            Assert.NotNull(settingsDictionary);
            Assert.Equal(2, settingsDictionary.Count);
            Assert.Contains("setting1:0", settingsDictionary.Keys);
            Assert.Contains("setting1:1", settingsDictionary.Keys);

            Assert.Equal("value1", settingsDictionary["setting1:0"]);
            Assert.Equal("value2", settingsDictionary["setting1:1"]);
        }
示例#13
0
        public void GetSettingsDictionary_correctly_handles_arrays()
        {
            // ARRANGE
            var settingsObject = new TestSettingsClass11()
            {
                Setting1 = new[] { "value1", "value2" }
            };

            // ACT
            var settingsDictionary = ConfigurationBuilderExtensions.GetSettingsDictionary(settingsObject);

            // ASSERT
            Assert.NotNull(settingsDictionary);
            Assert.Equal(2, settingsDictionary.Count);
            Assert.Contains("setting1:0", settingsDictionary.Keys);
            Assert.Contains("setting1:1", settingsDictionary.Keys);

            Assert.Equal("value1", settingsDictionary["setting1:0"]);
            Assert.Equal("value2", settingsDictionary["setting1:1"]);
        }
示例#14
0
        private TContext Create(string connectionStringName)
        {
            var environmentName      = Environment.GetEnvironmentVariable(ConfigurationNames.AspNetCoreEnvironment);
            var configurationBuilder = ConfigurationBuilderExtensions.GetConfigurationBuilder(environmentName);
            var configuration        = configurationBuilder.Build();

            var connectionString = configuration.GetConnectionString(connectionStringName);

            if (string.IsNullOrEmpty(connectionString))
            {
                throw new ArgumentException($"Connection string '{connectionStringName}' is null or empty.", nameof(connectionString));
            }

            Console.WriteLine($"DesignTimeDbContextFactoryBase.Create(string): Connection string: '{connectionString}'.");

            var optionsBuilder = new DbContextOptionsBuilder <TContext>();

            optionsBuilder.UseSqlServer(connectionString);

            return(CreateNewInstance(optionsBuilder.Options));
        }
示例#15
0
        public void GetSettingsDictionary_correctly_handles_nullable_ints()
        {
            // ARRANGE
            var settingsObject = new TestSettingsClass10()
            {
                Setting1 = 23,
                Setting2 = 42,
                Setting3 = null
            };

            // ACT
            var settingsDictionary = ConfigurationBuilderExtensions.GetSettingsDictionary(settingsObject);

            // ASSERT
            Assert.NotNull(settingsDictionary);
            Assert.Contains("setting1", settingsDictionary.Keys);
            Assert.Contains("setting2", settingsDictionary.Keys);
            Assert.DoesNotContain("setting3", settingsDictionary.Keys);

            Assert.Equal("23", settingsDictionary["setting1"]);
            Assert.Equal("42", settingsDictionary["setting2"]);
        }
示例#16
0
        private static async void TimerCallBack(Object o)
        {
            IConfigurationBuilder tempConfigBuilder = new ConfigurationBuilder();
            //tempConfigBuilder.AddJsonFile(
            //    @"C:\Program Files\Amazon\ElasticBeanstalk\config\containerconfiguration",
            //    optional: true,
            //    reloadOnChange: true
            //);
            IConfigurationRoot tempConfig = tempConfigBuilder.Build();

            Dictionary <string, string> ebConfig = ConfigurationBuilderExtensions.GetConfig(tempConfig);
            // CHECK IF EBCONFIG HAS ENVIRONMENT KEY IN IT
            // IF SO THEN CHANGE THE BUILDERS ENVIRONMENT
            const string envKey = "ASPNETCORE_ENVIRONMENT";

            var ebEnvironment = "Development";

            if (ebConfig.ContainsKey(envKey))
            {
                ebEnvironment = ebConfig[envKey];
            }

            tempConfigBuilder.AddJsonFile(
                "appsettings.json",
                optional: false,
                reloadOnChange: true
                )
            .AddJsonFile(
                $"appsettings.{ebEnvironment}.json",
                optional: true,
                reloadOnChange: true
                )
            .AddInMemoryCollection(ebConfig);

            try
            {
                IServiceCollection services = new ServiceCollection();
                services.AddMemoryCache();
                var builder = new ContainerBuilder();
                builder.RegisterModule(new AutofacModule(tempConfigBuilder.Build()));
                builder.Populate(services);
                var container = builder.Build();

                using (var scope = container.BeginLifetimeScope())
                {
                    //await scope.Resolve<ISynchronizer>().Synchronize();
                    //await scope.Resolve<IValueRetailDataSync>().Synchronize();
                    //await scope.Resolve<IPOneSync>().Synchronize();
                    await scope.Resolve <ITiqetsDataSync>().Synchronize();

                    //await scope.Resolve<IHohoSync>().Synchronize();
                    //await scope.Resolve<IAlgoliaDataSync>().Synchronize();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception : " + DateTime.Now);
            }

            Console.WriteLine("Timer: " + DateTime.Now);
            GC.Collect();
        }
示例#17
0
 public void IsSupportedPropertyType_returns_false_for_unsupported_property_types(Type type)
 {
     Assert.False(ConfigurationBuilderExtensions.IsSupportedPropertyType(type));
 }