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);
}
}
}