/// <summary>
        /// Add Config Server and Cloud Foundry as application configuration sources. Add Config Server health check
        /// contributor to the service container.
        /// </summary>
        /// <param name="hostBuilder"><see cref="IWebHostBuilder"/></param>
        /// <param name="loggerFactory"><see cref="ILoggerFactory"/></param>
        /// <returns><see cref="IWebHostBuilder"/> with config server and Cloud Foundry Config Provider attached</returns>
        public static IWebHostBuilder AddConfigServer(this IWebHostBuilder hostBuilder, ILoggerFactory loggerFactory = null)
        {
            hostBuilder.ConfigureAppConfiguration((context, config) =>
            {
                config.AddConfigServer(context.HostingEnvironment, loggerFactory);
            });

            hostBuilder.ConfigureServices((services) =>
            {
                services.AddConfigServerHealthContributor();
            });

            return(hostBuilder);
        }
Beispiel #2
0
        public static IWebHostBuilder AddSharedConfiguration(this IWebHostBuilder builder)
        {
            builder.ConfigureAppConfiguration((context, configurationBuilder) =>
            {
                var env  = context.HostingEnvironment;
                var path = AppDomain.CurrentDomain.BaseDirectory;

                configurationBuilder.AddJsonFile(Path.Combine(path, "sharedsettings.json"), true);
                configurationBuilder.AddJsonFile(
                    Path.Combine(path, $"sharedsettings.{env.EnvironmentName}.json"), true);
            });

            return(builder);
        }
Beispiel #3
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            base.ConfigureWebHost(builder);

            var config = new ConfigurationBuilder();

            config.AddEnvironmentVariables();
            var con = config.Build();

            // 增加单元测试本身的配置文件
            builder.ConfigureAppConfiguration(app => app.AddJsonFile(TestHelper.RetrievePath($"UnitTest{Path.DirectorySeparatorChar}appsettings.json"), false, true));
            if (con.GetValue("Appveyor", false))
            {
                builder.ConfigureAppConfiguration(app => app.AddJsonFile(TestHelper.RetrievePath($"UnitTest{Path.DirectorySeparatorChar}appsettings.appveyor.json"), false, true));
            }
            TestHelper.ConfigureWebHost(builder);

            // 替换 SMS 服务
            builder.ConfigureServices(services =>
            {
                services.AddTransient <ISMSProvider, DefaultSMSProvider>();
            });
        }
Beispiel #4
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            // Use TestAppSettings
            builder.ConfigureAppConfiguration(configuration =>
            {
                configuration.AddJsonFile("appsettings.json");
                Configuration = configuration.Build();
            });

            builder.ConfigureServices(services =>
            {
                services.UseConfigurationValidation();

                // Parse and setup settings from configuration
                services.ConfigureValidatableSetting <DatabaseSettings>(Configuration.GetSection("DatabaseSettings"));
                services.ConfigureValidatableSetting <EnvironmentSettings>(
                    Configuration.GetSection("EnvironmentSettings"));
                services.ConfigureValidatableSetting <IdentitySettings>(Configuration.GetSection("IdentitySettings"));
                services.ConfigureValidatableSetting <MailgunSettings>(Configuration.GetSection("MailgunSettings"));
                services.ConfigureValidatableSetting <MobilePaySettings>(Configuration.GetSection("MobilePaySettings"));

                // Remove the app's ApplicationDbContext registration.
                var descriptor = services.SingleOrDefault(
                    d => d.ServiceType ==
                    typeof(DbContextOptions <CoffeeCardContext>));

                if (descriptor != null)
                {
                    services.Remove(descriptor);
                }

                // Add ApplicationDbContext using an in-memory database for testing.
                services.AddDbContext <CoffeeCardContext>(options =>
                {
                    options.UseInMemoryDatabase("InMemoryDbForTesting");
                });

                // Build the service provider
                var sp = services.BuildServiceProvider();

                // Create a scope to obtain a reference to the database context (ApplicationDbContext).
                using var scope    = sp.CreateScope();
                var scopedServices = scope.ServiceProvider;
                var db             = scopedServices.GetRequiredService <CoffeeCardContext>();

                // Ensure the database is created.
                db.Database.EnsureCreated();
            });
        }
Beispiel #5
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.UseEnvironment("Testing");

            builder.ConfigureAppConfiguration((context, conf) =>
            {
                conf.AddJsonFile(AppDomain.CurrentDomain.BaseDirectory + "appsettings.Testing.json");
                conf.AddUserSecrets <Startup>();
            });

            builder.ConfigureTestServices((services) =>
            {
                var configuration = services.BuildServiceProvider().GetRequiredService <IConfiguration>();
                services.RegisterDebugRepositoriesModule(configuration);
                services.AddDebugServicesModule(configuration);

                var testGraphsMapping = configuration.GetSection("FunctionalTests:Graphs").Get <Dictionary <string, string> >();
                var fakeRepo          = new FakeTripleStoreRepository(testGraphsMapping);

                services.RemoveAll(typeof(ITripleStoreRepository));
                services.AddSingleton <ITripleStoreRepository>(provider =>
                {
                    return(fakeRepo);
                });

                services.RemoveAll(typeof(IRemoteAppDataService));
                services.AddTransient(provider =>
                {
                    var remoteAppDataMock = new Mock <IRemoteAppDataService>();
                    var validPersons      = new List <string> {
                        "*****@*****.**", "*****@*****.**", "*****@*****.**"
                    };

                    remoteAppDataMock.Setup(mock => mock.CheckPerson(It.IsIn <string>(validPersons))).Returns(It.IsAny <bool>());
                    remoteAppDataMock.Setup(mock => mock.CheckPerson(It.IsNotIn <string>(validPersons))).Returns(It.IsAny <bool>());
                    remoteAppDataMock.Setup(t => t.CreateConsumerGroup(It.IsAny <Uri>()));
                    remoteAppDataMock.Setup(t => t.DeleteConsumerGroup(It.IsAny <Uri>()));
                    remoteAppDataMock.Setup(t => t.NotifyResourcePublished(It.IsAny <Resource>()));

                    return(remoteAppDataMock.Object);
                });

                services.RemoveAll(typeof(IMessageQueueService));
                services.AddTransient(provider => new Mock <IMessageQueueService>().Object);

                services.RemoveAll(typeof(IReindexingService));
                services.AddTransient(provider => new Mock <IReindexingService>().Object);
            });
        }
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            // This instructs the web host to use the appsettings.json file in the
            // test project not the one in the original project being tested
            var projectDir = Directory.GetCurrentDirectory();
            var configPath = Path.Combine(projectDir, "appsettings.tests.json");

            builder.ConfigureAppConfiguration((_, cfg) =>
            {
                cfg.AddJsonFile(configPath);
                cfg.AddUserSecrets(typeof(Scenario_01).Assembly);
            });

            builder.ConfigureTestServices(services =>
            {
                // This reconfigures identity server to accept the ResourceOwnerPassword
                // grant which enables the integration tests to acquire access tokens
                // directly using the username and password
                services.AddSingleton <IUserClientsProvider, IntegrationTestsClientsProvider>();
            });

            //// This initializes the test database
            //builder.ConfigureServices(services =>
            //{
            //    var sp = services.BuildServiceProvider();

            //    // This won't run automatically when using WebApplicationFactory
            //    Program.InitDatabase(sp).Wait();

            //    // Databases seeding and preparation
            //    string connString;
            //    string adminEmail;
            //    IShardResolver shardResolver;

            //    using (var scope = sp.CreateScope())
            //    {
            //        var config = scope.ServiceProvider.GetRequiredService<IConfiguration>();

            //        connString = config.GetConnectionString(Constants.AdminConnection);
            //        adminEmail = config.Get<GlobalOptions>()?.Admin?.Email ?? "*****@*****.**";
            //        shardResolver = scope.ServiceProvider.GetRequiredService<IShardResolver>();

            //        // Retrieve the access token specific to the developer
            //        _token = config.GetValue<string>("AccessToken");
            //    }

            //    ArrangeDatabasesForTests(connString, adminEmail, shardResolver);
            //});
        }
Beispiel #7
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureServices(s =>
            {
                s.AddTransient <IUnitOfWorkManager, FakeUnitOfWorkManager>();
                s.AddTransient <IConnectionFactory, TestsDbConnectionFactory>();
            });

            builder.ConfigureAppConfiguration(a =>
            {
                a.Sources.Clear();
                a.AddInMemoryCollection(_config);
            });
            builder.UseEnvironment("LOCAL");
        }
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            // https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2
            // Add database name for testing
            builder.ConfigureAppConfiguration((hostingContext, config) =>
            {
                config.AddInMemoryCollection(arrayDict);
            })
            .ConfigureServices(services =>
            {
                services.AddScoped <BookService>();
            });

            SeedData.InitData();
        }
Beispiel #9
0
 protected override void ConfigureWebHost(IWebHostBuilder builder)
 {
     builder.ConfigureAppConfiguration(config =>
     {
         ModifyConfiguration(config);
         var integrationConfig = new ConfigurationBuilder().AddJsonFile("appsettings.integrationtest.json").Build();
         config.AddConfiguration(integrationConfig);
     });
     builder.ConfigureTestServices(services =>
     {
         ModifyServices(services);
         services.AddSingleton <RestApiOptions, RestApiOptions>();
         services.AutoRegistrateServices(Assembly.GetAssembly(typeof(ApiRegistration)) !, Assembly.GetAssembly(typeof(WebApiStartupFactory)) !);
     });
 }
Beispiel #10
0
        /// <summary>
        /// 配置应用启动
        /// </summary>
        /// <param name="builder"></param>
        public void Configure(IWebHostBuilder builder)
        {
            // 自动注入 AddApp() 服务
            builder.ConfigureServices(services =>
            {
                services.AddTransient <IStartupFilter, StartupFilter>();
                services.AddApp();
            });

            // 自动装载配置
            builder.ConfigureAppConfiguration(configurationBuilder =>
            {
                AutoAddJsonFile(configurationBuilder);
            });
        }
Beispiel #11
0
        /// <summary>
        /// 配置应用启动
        /// </summary>
        /// <param name="builder"></param>
        public void Configure(IWebHostBuilder builder)
        {
            //可以添加配置
            builder.ConfigureAppConfiguration((hostingContext, config) =>
            {
                // 自动装载配置
                App.AddConfigureFiles(config, hostingContext.HostingEnvironment);
            });

            //可以添加ConfigureServices
            // 自动注入 AddApp() 服务
            builder.ConfigureServices(services =>
            {
            });
        }
Beispiel #12
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
#if Debug
            builder.ConfigureLogging(loggingBuilder =>
            {
                loggingBuilder.SetMinimumLevel(LogLevel.Trace).AddDebug().AddConsole();
            });
#else
            builder.ConfigureLogging(loggingBuilder =>
            {
                loggingBuilder.SetMinimumLevel(LogLevel.Error).AddDebug().AddConsole();
            });
#endif
            builder.ConfigureAppConfiguration(SetupConfig);
        }
Beispiel #13
0
 protected override void ConfigureWebHost(IWebHostBuilder builder)
 {
     builder.ConfigureAppConfiguration((hostingContext, config) =>
     {
         config.AddJsonFile("appsettings.IntegrationTests.json",
                            optional: true,
                            reloadOnChange: false);
     });
     builder.ConfigureTestServices(ConfigureServices);
     builder.ConfigureLogging((WebHostBuilderContext context, ILoggingBuilder loggingBuilder) =>
     {
         loggingBuilder.ClearProviders();
         loggingBuilder.AddConsole(options => options.IncludeScopes = true);
     });
 }
Beispiel #14
0
 public static IWebHostBuilder UseAzureKeyVaultConfiguration(this IWebHostBuilder webHostBuilder)
 {
     return(webHostBuilder.ConfigureAppConfiguration(builder =>
     {
         var config = builder.Build();
         string keyVaultUrl = $"https://{config["KeyVault"]}.vault.azure.net/";
         if (!string.IsNullOrEmpty(keyVaultUrl))
         {
             var azureServiceTokenProvider = new AzureServiceTokenProvider();
             var kvClient = new KeyVaultClient(
                 (authority, resource, scope) => azureServiceTokenProvider.KeyVaultTokenCallback(authority, resource, scope));
             builder.AddAzureKeyVault(keyVaultUrl, kvClient, new DefaultKeyVaultSecretManager());
         }
     }));
 }
 protected override void ConfigureWebHost(IWebHostBuilder builder)
 {
     builder.ConfigureAppConfiguration((context, configBuilder) =>
     {
         configBuilder.AddInMemoryCollection(
             new Dictionary <string, string>
         {
             ["ApiKey"] = "DummyKey"
         });
     });
     builder.ConfigureServices(services =>
     {
         services.AddSingleton(provider => _blobContainerClient);
     });
 }
 protected override void Init(IWebHostBuilder builder)
 {
     builder
     .ConfigureAppConfiguration((hostingContext, config) =>
     {
         config.AddEnvironmentVariables("URA_KATA_");
     })
     .ConfigureLogging((context, loggingBuilder) =>
     {
         loggingBuilder.ClearProviders();
         loggingBuilder.AddLambdaLogger(context.Configuration, "Logging");
         loggingBuilder.SetMinimumLevel(LogLevel.Trace);
     })
     .UseStartup <Startup>();
 }
Beispiel #17
0
 public static IWebHostBuilder AddGatewayConfigurationFiles(this IWebHostBuilder webHostBuilder)
 {
     return(webHostBuilder.ConfigureAppConfiguration((hostingContext, config) =>
     {
         config
         .SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
         .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
         .AddJsonFile(
             $"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json",
             optional: true,
             reloadOnChange: true)
         .AddJsonFile("ocelot-configuration.json")
         .AddEnvironmentVariables();
     }));
 }
Beispiel #18
0
 protected override void ConfigureWebHost(IWebHostBuilder builder)
 {
     builder.ConfigureAppConfiguration((context, configBuilder) =>
     {
         var json = JsonConvert.SerializeObject(ApplicationSettings.New(), new JsonSerializerSettings
         {
             ContractResolver = new PrivateReadResolver(),
             Converters       = new List <JsonConverter> {
                 new StringEnumConverter()
             },
         });
         configBuilder.Sources.Clear();
         configBuilder.AddJsonStream(new MemoryStream(Encoding.ASCII.GetBytes(json)));
     });
 }
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureAppConfiguration(config =>
            {
                Configuration = new ConfigurationBuilder().AddJsonFile("integrationsettings.json").Build();
                config.AddConfiguration(Configuration);
            });

            builder.ConfigureTestServices(services =>
            {
                services.AddScoped <ICarsService, CarsService>();
                services.AddScoped <IDriversService, DriversService>();
                services.AddScoped <IGrandPrixesService, GrandPrixesService>();
            });
        }
Beispiel #20
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            var env = GetEnvironmentName();

            builder.ConfigureAppConfiguration(config =>
            {
                var integrationConfig = new ConfigurationBuilder()
                                        .AddJsonFile("appsettings.json")
                                        .AddJsonFile($"appsettings.{env}.json", optional: true)
                                        .AddEnvironmentVariables()
                                        .Build();

                config.AddConfiguration(integrationConfig);
            });
        }
Beispiel #21
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureAppConfiguration(b => b.AddEnvironmentVariables())
            .UseStartup <Startup>();
            builder.ConfigureServices(services =>
            {
                services.ConfigureDynamoDB();

                var serviceProvider = services.BuildServiceProvider();
                DynamoDb            = serviceProvider.GetRequiredService <IAmazonDynamoDB>();
                DynamoDbContext     = serviceProvider.GetRequiredService <IDynamoDBContext>();

                EnsureTablesExist(DynamoDb, _tables);
            });
        }
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureAppConfiguration(b => b.AddEnvironmentVariables())
            .UseStartup <Startup>();
            builder.ConfigureServices(services =>
            {
                services.ConfigureDynamoDB();
                services.ConfigureDynamoDbFixture();

                var serviceProvider = services.BuildServiceProvider();

                DbFixture = serviceProvider.GetRequiredService <IDynamoDbFixture>();
                DbFixture.EnsureTablesExist(_tables);
            });
        }
Beispiel #23
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.UseContentRoot(".");

            builder.ConfigureAppConfiguration(configuration =>
            {
                configuration.AddInMemoryCollection(new Dictionary <string, string>
                {
                    { "connectionStrings:featureFlags", databaseFixture.ConnectionString },
                    { "connectionStrings:featureFlagsInitialization", databaseFixture.ConnectionString },
                });
            });

            base.ConfigureWebHost(builder);
        }
Beispiel #24
0
        protected override void Init(IWebHostBuilder builder)
        {
            builder.ConfigureAppConfiguration((context, config) =>
            {
                var env = context.HostingEnvironment;

                // NOTE: A default AWS SDK configuration has been added to appsettings.Development.json.
                // More Details can be found at: https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-netcore.html

                // Add systems manager parameter store paths
                config.AddSystemsManager($"/dotnet-aws-samples/systems-manager-sample/common");
                config.AddSystemsManager($"/dotnet-aws-samples/systems-manager-sample/{env.EnvironmentName}", optional: true);
            })
            .UseStartup <Startup>();
        }
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureAppConfiguration((_, conf) =>
            {
                var projectDir = Directory.GetCurrentDirectory();
                var configPath = Path.Combine(projectDir, "appsettings.Test.json");

                conf.AddJsonFile(configPath);
            });
            builder.ConfigureServices(services =>
            {
                Console.WriteLine("\t--Configring services test-location-01");
                services.ConfigureInMemoryDB();
            });
        }
Beispiel #26
0
 public static IWebHostBuilder ConfigureDefaultAppConfiguration(
     this IWebHostBuilder host
     , string webHostBuilderBasePath
     , string[] args)
 {
     host
     .ConfigureAppConfiguration((hostContext, configApp) =>
     {
         configApp.SetBasePath(webHostBuilderBasePath);
         configApp.AddJsonFile("appsettings.json", optional: true);
         configApp.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", optional: true);
         configApp.AddCommandLine(args);
     });
     return(host);
 }
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureAppConfiguration(config =>
            {
                var integrationConfig = new ConfigurationBuilder()
                                        .AddJsonFile("IntegrationSettings.json")
                                        .Build();

                config.AddConfiguration(integrationConfig);
            });

            builder.ConfigureTestServices(services =>
            {
                services.AddAutoMapper(typeof(WebAPI.Startup));
            });
        }
Beispiel #28
0
        public static IWebHostBuilder UseAzureKeyVaultConfiguration(this IWebHostBuilder webHostBuilder)
        {
            return(webHostBuilder.ConfigureAppConfiguration(builder =>
            {
                IConfigurationRoot config = builder.Build();
                string keyVaultUrl = config["Lab:KeyVaultBaseUrl"];

                if (!string.IsNullOrEmpty(keyVaultUrl))
                {
                    // Need token provider to use Managed Identity
                    var azureServiceTokenProvider = new AzureServiceTokenProvider();
                    var kvClient = new KeyVaultClient((authority, resource, scope) => azureServiceTokenProvider.KeyVaultTokenCallback(authority, resource, scope));
                    builder.AddAzureKeyVault(keyVaultUrl, kvClient, new DefaultKeyVaultSecretManager());
                }
            }));
        }
Beispiel #29
0
        public static IWebHostBuilder UseDbSettings(this IWebHostBuilder builder, bool reloadOnChange = true)
        {
            var dbConfigurationSource = new DbConfigurationSource {
                ReloadOnChange = reloadOnChange
            };

            return(builder
                   .ConfigureAppConfiguration((_, config) =>
            {
                config.Add(dbConfigurationSource);
            })
                   .ConfigureServices((_, services) =>
            {
                services.AddSingleton <INotificationHandler <SettingsChanged> >(dbConfigurationSource);
            }));
        }
Beispiel #30
0
 protected override void ConfigureWebHost(IWebHostBuilder builder)
 {
     if (builder == null)
     {
         throw new ArgumentNullException(nameof(builder));
     }
     builder.ConfigureAppConfiguration((hostingContext, config) =>
     {
         var dict = new Dictionary <string, string>
         {
             ["Storage"] = "InMemory"
         };
         config.AddInMemoryCollection(dict);
     });
     base.ConfigureWebHost(builder);
 }