using System.Reflection; using Admin.NET.Plugin.AiDOP.DataPlatform.Executors; using Xunit; namespace Admin.NET.Plugin.AiDOP.Tests.DataPlatform; public class MdpDbPushExecutorSafetyTests { [Fact] public void AllowedTables_ContainsPlanAndWmsBaseTables_NotSystemObjects() { var field = typeof(MdpDbPushExecutor).GetField("AllowedTables", BindingFlags.NonPublic | BindingFlags.Static); Assert.NotNull(field); var tables = (HashSet)field!.GetValue(null)!; Assert.Contains("NbrMaster", tables); Assert.Contains("EmpWorkDutyMaster", tables); Assert.Contains("MobileTask", tables); Assert.Contains("LocationMaster", tables); Assert.DoesNotContain("sys.objects", tables); } [Fact] public void ApiExecutor_SupportedType_IsApi() { Assert.Equal("API", typeof(MdpApiPushExecutor) .GetProperty(nameof(MdpApiPushExecutor.SupportedType))! .GetValue(FormatterServicesCreateUninitialized(typeof(MdpApiPushExecutor)))! .ToString()); } private static object FormatterServicesCreateUninitialized(Type t) => System.Runtime.CompilerServices.RuntimeHelpers.GetUninitializedObject(t); }