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 }