Fix BizTalk application ownership mapping

This commit is contained in:
2026-08-27 19:54:33 +02:00
parent b18adab26d
commit 61b5b7e452
21 changed files with 735 additions and 35 deletions
@@ -40,6 +40,7 @@ namespace BizTalkPlatformManagementTool.Tests
Run("PlanExecutionSkipsAlreadySatisfiedState", PlanExecutionSkipsAlreadySatisfiedState);
Run("ExecutionReportRoundTripPreservesFailure", ExecutionReportRoundTripPreservesFailure);
Run("ScheduledReceivePlanCarriesAdapterMetadata", ScheduledReceivePlanCarriesAdapterMetadata);
Run("ApplicationResolverMapsArtifactsAndRejectsAmbiguity", ApplicationResolverMapsArtifactsAndRejectsAmbiguity);
Run("AdapterAssemblyResolverRequiresMatchingIdentity", AdapterAssemblyResolverRequiresMatchingIdentity);
Run("OperationLogPersistsCompressesAndRetainsThirtyDays", OperationLogPersistsCompressesAndRetainsThirtyDays);
Run("OperationLogUsesVerifiedStartupFallback", OperationLogUsesVerifiedStartupFallback);
@@ -208,6 +209,25 @@ namespace BizTalkPlatformManagementTool.Tests
});
}
/// <summary>Prüft die ExplorerOM-basierte Zuordnung aller Laufzeitartefakte und den Ambiguitätsschutz.</summary>
private static void ApplicationResolverMapsArtifactsAndRejectsAmbiguity()
{
var resolver = new BizTalkApplicationResolver();
resolver.AddSendPort("APP-A", "SP-A");
resolver.AddReceivePort("APP-B", "RP-B");
resolver.AddReceiveLocation("APP-B", "RL-B");
resolver.AddOrchestration("APP-C", "Company.Process.Order");
Assert(resolver.ApplicationCount == 3, "application count did not de-duplicate artifact owners");
Assert(resolver.ResolveSendPort("sp-a") == "APP-A", "send port was not resolved case-insensitively");
Assert(resolver.ResolveReceiveLocation("RL-B", null) == "APP-B", "receive location was not resolved");
Assert(resolver.ResolveReceiveLocation("missing", "rp-b") == "APP-B", "receive-port fallback was not used");
Assert(resolver.ResolveOrchestration("company.process.order") == "APP-C", "orchestration was not resolved");
resolver.AddSendPort("APP-D", "SP-A");
Assert(resolver.ResolveSendPort("SP-A") == null, "cross-application duplicate was not rejected as ambiguous");
}
/// <summary>Prüft Dateinamen- und vollständige Assemblyidentität vor prozesslokalem Laden.</summary>
private static void AdapterAssemblyResolverRequiresMatchingIdentity()
{