namespace BuildFlow.Architecture.Tests; using Xunit; /// /// 配置加载与日志输出的安全边界测试。 /// public class ConfigurationSecurityTests { [Fact] public void ConsulProviderShouldNeverLogConfigurationValues() { var source = File.ReadAllText(Path.Combine( FindRepoRoot().FullName, "src", "BuildFlow.Host", "Configuration", "ConsulConfigurationProvider.cs")); Assert.DoesNotContain("{Val}", source); Assert.DoesNotContain("dict[k]", source); Assert.DoesNotContain("示例 key:", source); } private static DirectoryInfo FindRepoRoot() { var current = new DirectoryInfo(AppContext.BaseDirectory); while (current is not null) { if (File.Exists(Path.Combine(current.FullName, "BuildFlow.slnx"))) return current; current = current.Parent; } throw new InvalidOperationException("无法定位 BuildFlow.slnx,无法验证配置日志安全边界。"); } }