using Xunit;
namespace Admin.NET.Plugin.AiDOP.Tests.DataPlatform;
///
/// 对接配置接口的租户收口契约。匿名写入与跨租户改登记必须在源码层被拿掉,
/// 不靠运行时铺两套租户数据。
///
public class MdpConfigApiTenantIsolationTests
{
[Fact]
public void ConfigWriteServices_AreNotAnonymous()
{
foreach (var file in new[]
{
"MdpSourceConfigService.cs",
"MdpTenantStdSourceService.cs",
"MdpSourceMappingService.cs",
"MdpSyncEntityConfigService.cs",
"MdpSyncTaskConfigService.cs"
})
{
var source = ReadPluginFile("DataPlatform", file);
Assert.DoesNotContain("[AllowAnonymous]", source, StringComparison.Ordinal);
}
}
[Fact]
public void TenantStdSource_RejectsCrossTenantWrite()
{
var source = ReadPluginFile("DataPlatform", "MdpTenantStdSourceService.cs");
Assert.Contains("不能修改其他租户的来源登记", source, StringComparison.Ordinal);
Assert.Contains("不能查看其他租户的来源登记", source, StringComparison.Ordinal);
}
[Fact]
public void SourceList_IsTenantScoped_AndDoesNotReturnPassword()
{
var source = ReadPluginFile("DataPlatform", "MdpSourceConfigService.cs");
Assert.Contains("x.TenantId == _user.TenantId", source, StringComparison.Ordinal);
Assert.DoesNotContain("dbPassword", source, StringComparison.Ordinal);
Assert.DoesNotContain("DbPasswordEnc =", source.Split("public async Task