using Microsoft.Extensions.Configuration;
namespace Apq.Cfg.Tests;
///
/// 测试配置读取器,用于读取 appsettings.json 中的测试配置
///
public static class TestSettings
{
private static readonly IConfigurationRoot _configuration;
static TestSettings()
{
var builder = new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false);
_configuration = builder.Build();
}
#region Redis
///
/// Redis 连接字符串
///
public static string? RedisConnectionString => _configuration["TestConnections:Redis"];
///
/// 检查 Redis 连接是否已配置
///
public static bool IsRedisConfigured => !string.IsNullOrWhiteSpace(RedisConnectionString);
#endregion
#region Database
///
/// 数据库连接字符串
///
public static string? DatabaseConnectionString => _configuration["TestConnections:Database"];
///
/// 数据库提供程序类型
///
public static string? DatabaseProvider => _configuration["TestConnections:DatabaseProvider"];
///
/// 检查数据库连接是否已配置
///
public static bool IsDatabaseConfigured =>
!string.IsNullOrWhiteSpace(DatabaseConnectionString) &&
!string.IsNullOrWhiteSpace(DatabaseProvider);
#endregion
#region Zookeeper
///
/// Zookeeper 连接字符串
///
public static string? ZookeeperConnectionString => _configuration["TestConnections:Zookeeper"];
///
/// 检查 Zookeeper 连接是否已配置
///
public static bool IsZookeeperConfigured => !string.IsNullOrWhiteSpace(ZookeeperConnectionString);
#endregion
#region Apollo
///
/// Apollo AppId
///
public static string? ApolloAppId => _configuration["TestConnections:Apollo:AppId"];
///
/// Apollo Meta Server 地址
///
public static string? ApolloMetaServer => _configuration["TestConnections:Apollo:MetaServer"];
///
/// Apollo 命名空间
///
public static string? ApolloNamespace => _configuration["TestConnections:Apollo:Namespace"];
///
/// 检查 Apollo 是否已配置
///
public static bool IsApolloConfigured =>
!string.IsNullOrWhiteSpace(ApolloAppId) &&
!string.IsNullOrWhiteSpace(ApolloMetaServer);
#endregion
#region Consul
///
/// Consul 服务地址
///
public static string? ConsulAddress => _configuration["TestConnections:Consul:Address"];
///
/// Consul ACL Token
///
public static string? ConsulToken => _configuration["TestConnections:Consul:Token"];
///
/// Consul KV 前缀
///
public static string? ConsulKeyPrefix => _configuration["TestConnections:Consul:KeyPrefix"];
///
/// 检查 Consul 是否已配置
///
public static bool IsConsulConfigured => !string.IsNullOrWhiteSpace(ConsulAddress);
#endregion
#region Etcd
///
/// Etcd 连接字符串
///
public static string? EtcdConnectionString => _configuration["TestConnections:Etcd:ConnectionString"];
///
/// Etcd 用户名
///
public static string? EtcdUsername => _configuration["TestConnections:Etcd:Username"];
///
/// Etcd 密码
///
public static string? EtcdPassword => _configuration["TestConnections:Etcd:Password"];
///
/// Etcd 键前缀
///
public static string? EtcdKeyPrefix => _configuration["TestConnections:Etcd:KeyPrefix"];
///
/// 检查 Etcd 是否已配置
///
public static bool IsEtcdConfigured => !string.IsNullOrWhiteSpace(EtcdConnectionString);
#endregion
#region Nacos
///
/// Nacos 服务地址
///
public static string? NacosServerAddress => _configuration["TestConnections:Nacos:ServerAddress"];
///
/// Nacos 命名空间
///
public static string? NacosNamespace => _configuration["TestConnections:Nacos:Namespace"];
///
/// Nacos 分组
///
public static string? NacosGroup => _configuration["TestConnections:Nacos:Group"];
///
/// Nacos DataId
///
public static string? NacosDataId => _configuration["TestConnections:Nacos:DataId"];
///
/// 检查 Nacos 是否已配置
///
public static bool IsNacosConfigured => !string.IsNullOrWhiteSpace(NacosServerAddress);
#endregion
#region Vault
///
/// Vault 服务地址
///
public static string? VaultAddress => _configuration["TestConnections:Vault:Address"];
///
/// Vault Token
///
public static string? VaultToken => _configuration["TestConnections:Vault:Token"];
///
/// Vault KV 引擎路径
///
public static string? VaultEnginePath => _configuration["TestConnections:Vault:EnginePath"];
///
/// Vault 密钥路径
///
public static string? VaultPath => _configuration["TestConnections:Vault:Path"];
///
/// Vault KV 版本 (1 或 2)
///
public static int VaultKvVersion => int.TryParse(_configuration["TestConnections:Vault:KvVersion"], out var v) ? v : 2;
///
/// 检查 Vault 是否已配置
///
public static bool IsVaultConfigured =>
!string.IsNullOrWhiteSpace(VaultAddress) &&
!string.IsNullOrWhiteSpace(VaultToken);
#endregion
}