public void GetAppConfiguration_ReturnsAppConfig_Success() { // Arrange var privateKey = GetPrivateKey(); var clientSecret = Guid.NewGuid().ToString(); var appSettingsJson = GetAppSettingsJson(privateKey, clientSecret); var directory = Directory.CreateDirectory(Path.Combine(Directory.GetCurrentDirectory(), "test")); File.WriteAllText(Path.Combine(directory.FullName, "appsettings.json"), appSettingsJson); var mockCertificateService = GetMockCertificateService(privateKey); var decryptionService = new DecryptionService(mockCertificateService); var config = new ConfigurationBuilder() .AddJsonFile(Path.Combine(directory.FullName, "appsettings.json")) .Build(); var identityConfigurationProvider = new IdentityConfigurationProvider(config); // Act var appConfig = identityConfigurationProvider.GetAppConfiguration(decryptionService); // Assert Assert.NotNull(appConfig); Assert.Equal(clientSecret, appConfig.IdentityServerConfidentialClientSettings.ClientSecret); Assert.Equal(clientSecret, appConfig.AzureActiveDirectorySettings.ClientSecret); Assert.Equal("InMemory", appConfig.HostingOptions.StorageProvider); Assert.Equal("HQCATALYST", appConfig.FilterSettings.GroupFilterSettings.Prefixes[0]); Assert.Equal(clientSecret, appConfig.AzureActiveDirectoryClientSettings.ClientAppSettings[0].ClientSecret); Assert.Equal(clientSecret, appConfig.AzureActiveDirectoryClientSettings.ClientAppSettings[1].ClientSecret); }
private TestServer CreateTestServer(string storageProvider, Action <IWebHostBuilder> customizeWebHost) { var loggerConfiguration = new LoggerConfiguration(); var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .AddEnvironmentVariables() .AddDockerSecrets(typeof(IAppConfiguration)) .SetBasePath(Directory.GetCurrentDirectory()) .Build(); var certificateService = IdentityConfigurationProvider.MakeCertificateService(); var decryptionService = new DecryptionService(certificateService); var appConfig = new IdentityConfigurationProvider(configuration).GetAppConfiguration(decryptionService); LogFactory.ConfigureTraceLogger(loggerConfiguration, appConfig.ApplicationInsights); Log.Logger = loggerConfiguration.CreateLogger(); var hostingOptions = new HostingOptions { UseIis = false, UseTestUsers = true, StorageProvider = storageProvider }; var apiBuilder = WebHost.CreateDefaultBuilder(); apiBuilder.ConfigureServices(c => c.AddSingleton(LdapSettings) .AddSingleton(Log.Logger) .AddSingleton(CouchDbSettings) .AddSingleton(hostingOptions) .AddSingleton(ConnectionStrings) .AddSingleton(GraphApi) .AddSingleton(ADProxy) .AddTransient <IExternalIdentityProviderSearchService, ActiveDirectoryProviderService>() .AddTransient <IExternalIdentityProviderSearchService, AzureDirectoryProviderService>() ); customizeWebHost?.Invoke(apiBuilder); apiBuilder .ConfigureAppConfiguration((hostContext, config) => { config.AddDockerSecrets(typeof(IAppConfiguration)); config.SetBasePath(Directory.GetCurrentDirectory()); }) .UseUrls(RegistrationApiServerUrl) .ConfigureKestrel((context, kestrelOptions) => { }) .UseSerilog() .UseStartup <Startup>(); return(new TestServer(apiBuilder)); }
public Startup(IConfiguration configuration) { _certificateService = IdentityConfigurationProvider.MakeCertificateService(); var decryptionService = new DecryptionService(_certificateService); _appConfig = new IdentityConfigurationProvider(configuration).GetAppConfiguration(decryptionService); }
public static void Main(string[] args) { var loggerConfiguration = new LoggerConfiguration(); //Create a builder just so that we can read the app insights instrumentation key from the config var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true) .Build(); var certificateService = IdentityConfigurationProvider.MakeCertificateService(); var decryptionService = new DecryptionService(certificateService); var appConfig = new IdentityConfigurationProvider(configuration).GetAppConfiguration(decryptionService); LogFactory.ConfigureTraceLogger(loggerConfiguration, appConfig.ApplicationInsights); Log.Logger = loggerConfiguration.CreateLogger(); try { Log.Information("Starting web host"); CreateWebHostBuilder(args).Build().Run(); Environment.Exit(0); } catch (Exception ex) { Log.Fatal(ex, "Host terminated unexpectedly"); Environment.Exit(1); } finally { Log.CloseAndFlush(); } }