using System.ComponentModel; using System.Linq; using System.Reflection; using PolyTrader.Core.Security; using PolyTraderSharp.Models; using Xunit; namespace PolyTrader.Tests { /// /// Geheimnisse in den Server-Einstellungen sind entweder ganz ausgeblendet oder als /// markiert (#567). Der Desktop-Editor zeigt markierte Felder nur /// entsperrt; ein neues Geheimnisfeld ohne Markierung stünde dort sonst offen im Fenster. /// public class SensitiveSettingsTests { private static PropertyInfo Prop(string name) => typeof(ServerSettings).GetProperty(name)!; [Theory] [InlineData(nameof(ServerSettings.MullvadAccount))] [InlineData(nameof(ServerSettings.PolygonRpcUrl))] public void Sichtbare_Geheimnisfelder_sind_markiert(string name) { Assert.NotNull(Prop(name).GetCustomAttribute()); } [Theory] [InlineData(nameof(ServerSettings.WatchdogToken))] [InlineData(nameof(ServerSettings.LicenseKey))] public void Token_und_Lizenzschluessel_sind_ganz_ausgeblendet(string name) { Assert.False(Prop(name).GetCustomAttribute()?.Browsable ?? true); } [Fact] public void Keine_weiteren_Felder_sind_versehentlich_markiert() { var marked = typeof(ServerSettings).GetProperties() .Where(p => p.GetCustomAttribute() != null) .Select(p => p.Name) .OrderBy(n => n) .ToArray(); Assert.Equal(new[] { nameof(ServerSettings.MullvadAccount), nameof(ServerSettings.PolygonRpcUrl) }, marked); } } }