62 lines
2.5 KiB
C#
62 lines
2.5 KiB
C#
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
using Xunit;
|
|
|
|
using CoreTests.Core;
|
|
|
|
namespace Tests.CoreTests.Abstractions {
|
|
[TestCaseOrderer(PriorityOrderer.Name, PriorityOrderer.Assembly)]
|
|
public abstract class ConfigurationBase {
|
|
|
|
protected IConfiguration _configuration;
|
|
|
|
protected ServiceCollection ServiceCollection = new ServiceCollection();
|
|
|
|
protected ServiceProvider ServiceProvider { get => ServiceCollection.BuildServiceProvider(); }
|
|
|
|
public ConfigurationBase() {
|
|
_configuration = InitConfig();
|
|
ConfigureServices(ServiceCollection);
|
|
}
|
|
|
|
protected abstract void ConfigureServices(IServiceCollection services);
|
|
|
|
private IConfiguration InitConfig() {
|
|
var aspNetCoreEnvironment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
|
|
var currentDirectory = Directory.GetCurrentDirectory();
|
|
|
|
var configurationBuilder = new ConfigurationBuilder()
|
|
.SetBasePath(Directory.GetCurrentDirectory())
|
|
.AddEnvironmentVariables();
|
|
|
|
if (!string.IsNullOrWhiteSpace(aspNetCoreEnvironment) && new FileInfo(Path.Combine(currentDirectory, $"appsettings.{aspNetCoreEnvironment}.json")).Exists)
|
|
configurationBuilder.AddJsonFile($"appsettings.{aspNetCoreEnvironment}.json", true);
|
|
else if (new FileInfo(Path.Combine(currentDirectory, "appsettings.json")).Exists)
|
|
configurationBuilder.AddJsonFile("appsettings.json", true, true);
|
|
else
|
|
throw new FileNotFoundException($"Unable to find appsetting.json in {currentDirectory}");
|
|
|
|
//var builtConfig = configurationBuilder.Build();
|
|
//var vaultOptions = builtConfig.GetSection("Vault");
|
|
|
|
//configurationBuilder.AddVault(options => {
|
|
// options.Address = vaultOptions["Address"];
|
|
|
|
// options.UnsealKeys = vaultOptions.GetSection("UnsealKeys").Get<List<string>>();
|
|
|
|
// options.AuthMethod = EnumerationStringId.FromValue<AuthenticationMethod>(vaultOptions["AuthMethod"]);
|
|
// options.AppRoleAuthMethod = vaultOptions.GetSection("AppRoleAuthMethod").Get<AppRoleAuthMethod>();
|
|
// options.TokenAuthMethod = vaultOptions.GetSection("TokenAuthMethod").Get<TokenAuthMethod>();
|
|
|
|
// options.MountPath = vaultOptions["MountPath"];
|
|
// options.SecretType = vaultOptions["SecretType"];
|
|
|
|
// options.ConfigurationMappings = vaultOptions.GetSection("ConfigurationMappings").Get<Dictionary<string, string>>();
|
|
//});
|
|
|
|
return configurationBuilder.Build();
|
|
}
|
|
}
|
|
}
|