34 lines
1.0 KiB
C#
34 lines
1.0 KiB
C#
namespace BuildFlow.Architecture.Tests;
|
||
|
||
using Xunit;
|
||
|
||
/// <summary>
|
||
/// 配置加载与日志输出的安全边界测试。
|
||
/// </summary>
|
||
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,无法验证配置日志安全边界。");
|
||
}
|
||
}
|