using Omika.Core.Contracts.Mobile.License; using Omika.Core.Observability.Diagnostic; namespace Omika.Tests.Contracts.License; /// /// Tests de l'application du snapshot d'appareil à la requête d'activation (T17-C). /// Vérifie que OsType/OsVersion/AppVersion/DeviceInfo sont remplis depuis la MÊME /// source que le diagnostic, sans jamais exposer de DeviceId ni de secret. /// public class LicenseActivateRequestDeviceExtensionsTests { [Fact] public void ApplyDeviceSnapshot_FillsOsVersionAppAndDeviceInfo() { var request = new LicenseActivateRequest { CodeClient = "C", NumeroLicence = "L", DeviceId = "D" }; var device = new DeviceInfoSnapshot { OperatingSystem = "Android", OperatingSystemVersion = "16", AppVersion = "1.0.0", DeviceManufacturer = "Xiaomi", DeviceModel = "23113RKC6G" }; LicenseActivateRequest result = request.ApplyDeviceSnapshot(device); Assert.Equal("Android", result.OsType); Assert.Equal("16", result.OsVersion); Assert.Equal("1.0.0", result.AppVersion); Assert.Equal("manufacturer=Xiaomi;model=23113RKC6G", result.DeviceInfo); Assert.Null(result.NotificationKey); Assert.Equal("D", result.DeviceId); } [Fact] public void ApplyDeviceSnapshot_NullLeavesFieldsNull() { var request = new LicenseActivateRequest { CodeClient = "C", NumeroLicence = "L", DeviceId = "D" }; LicenseActivateRequest result = request.ApplyDeviceSnapshot(null); Assert.Null(result.OsType); Assert.Null(result.OsVersion); Assert.Null(result.AppVersion); Assert.Null(result.DeviceInfo); Assert.Null(result.NotificationKey); } [Fact] public void ApplyDeviceSnapshot_NeverExposesDeviceIdInDeviceInfo() { var request = new LicenseActivateRequest { CodeClient = "C", NumeroLicence = "L", DeviceId = "secret-device-id" }; var device = new DeviceInfoSnapshot { DeviceManufacturer = "Apple", DeviceModel = "iPhone17,2" }; LicenseActivateRequest result = request.ApplyDeviceSnapshot(device); Assert.DoesNotContain("secret-device-id", result.DeviceInfo); Assert.DoesNotContain("device-id", result.DeviceInfo); } }