Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
using System.Reflection;
|
||||
using Omika.Core.Constants;
|
||||
using Omika.Core.Observability.Diagnostic;
|
||||
|
||||
namespace Omika.Tests.Observability.Diagnostic;
|
||||
|
||||
public class DeviceInfoProviderTests
|
||||
{
|
||||
[Fact]
|
||||
public void PortableProvider_ReturnsUsefulSnapshot()
|
||||
{
|
||||
var provider = new PortableDeviceInfoProvider();
|
||||
DeviceInfoSnapshot snapshot = provider.GetSnapshot();
|
||||
|
||||
Assert.NotNull(snapshot.AppVersion);
|
||||
Assert.NotNull(snapshot.Platform);
|
||||
Assert.NotNull(snapshot.OperatingSystem);
|
||||
Assert.NotNull(snapshot.Architecture);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Snapshot_ExposesNoForbiddenHardwareIdentifier()
|
||||
{
|
||||
string[] names = typeof(DeviceInfoSnapshot).GetProperties().Select(p => p.Name).ToArray();
|
||||
|
||||
Assert.DoesNotContain(names, n =>
|
||||
n.Contains("Imei", StringComparison.OrdinalIgnoreCase)
|
||||
|| n.Contains("Imsi", StringComparison.OrdinalIgnoreCase)
|
||||
|| n.Contains("MacAddress", StringComparison.OrdinalIgnoreCase)
|
||||
|| n.Contains("AdvertisingId", StringComparison.OrdinalIgnoreCase)
|
||||
|| n.Contains("Serial", StringComparison.OrdinalIgnoreCase)
|
||||
|| n.Contains("Sim", StringComparison.OrdinalIgnoreCase)
|
||||
|| n.Contains("Fingerprint", StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PortableProvider_OperatingSystemIsCanonical_NotOsDescription()
|
||||
{
|
||||
var provider = new PortableDeviceInfoProvider();
|
||||
DeviceInfoSnapshot snapshot = provider.GetSnapshot();
|
||||
|
||||
// Dimension analytique stable (Android/iOS/Windows/…) au lieu d'une chaîne
|
||||
// système longue et variable (ex. « Microsoft Windows 10.0.26200 »).
|
||||
Assert.Equal(snapshot.Platform, snapshot.OperatingSystem);
|
||||
Assert.DoesNotContain("Microsoft", snapshot.OperatingSystem, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PortableProvider_ScreenFieldsRemainNull()
|
||||
{
|
||||
// Le portable (Desktop) n'a pas d'écran mobile : les champs restent null.
|
||||
var provider = new PortableDeviceInfoProvider();
|
||||
DeviceInfoSnapshot snapshot = provider.GetSnapshot();
|
||||
|
||||
Assert.Null(snapshot.ScreenWidth);
|
||||
Assert.Null(snapshot.ScreenHeight);
|
||||
Assert.Null(snapshot.LogicalWidth);
|
||||
Assert.Null(snapshot.LogicalHeight);
|
||||
Assert.Null(snapshot.DisplayScale);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PortableProvider_AppVersionIsNotHardcoded()
|
||||
{
|
||||
var provider = new PortableDeviceInfoProvider();
|
||||
DeviceInfoSnapshot snapshot = provider.GetSnapshot();
|
||||
|
||||
// Source réelle (assembly InformationalVersion) avec repli sur
|
||||
// ApplicationConstants.Version — plus une valeur « 1.0.0.0 » codée en dur.
|
||||
Assert.NotNull(snapshot.AppVersion);
|
||||
Assert.Equal(ApplicationConstants.Version, snapshot.AppVersion);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ThrowingProvider_HostFallsBackToEmpty_NoThrow()
|
||||
{
|
||||
var host = new OmikaLocalDiagnostics(
|
||||
new LocalDiagnosticOptions { Directory = string.Empty },
|
||||
deviceInfoProvider: new ThrowingDeviceInfoProvider());
|
||||
|
||||
Assert.Same(DeviceInfoSnapshot.Empty, host.DeviceInfo);
|
||||
}
|
||||
|
||||
private sealed class ThrowingDeviceInfoProvider : IDeviceInfoProvider
|
||||
{
|
||||
public DeviceInfoSnapshot GetSnapshot() => throw new InvalidOperationException("provider défaillant (test)");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user