using Omika.Core.Compatibility; namespace Omika.Tests.Compatibility; /// /// Tests de : conservation de la provenance /// (Batik / Omika) sans exposer les noms HFSQL, et identifiant public stable. /// public class LegacyEntityReferenceTests { [Fact] public void FromLegacyId_IsBatikAndKeepsNumericId() { var reference = LegacyEntityReference.FromLegacyId(42); Assert.Equal(DatabaseSchemaVersion.Batik, reference.Source); Assert.Equal(42, reference.NumericId); Assert.Equal("42", reference.PublicIdentifier); } [Fact] public void FromGuid_KeepsEntityGuidAndSchemaVersion() { var guid = Guid.NewGuid(); var reference = LegacyEntityReference.FromGuid(DatabaseSchemaVersion.Omika, guid); Assert.Equal(DatabaseSchemaVersion.Omika, reference.Source); Assert.Equal(guid, reference.EntityGuid); Assert.Equal(guid.ToString("D"), reference.PublicIdentifier); } [Fact] public void FromBusinessKey_UsesBusinessKey() { var reference = LegacyEntityReference.FromBusinessKey("BK-2026-01"); Assert.Equal("BK-2026-01", reference.BusinessKey); Assert.Equal("BK-2026-01", reference.PublicIdentifier); } [Fact] public void PhysicalGuid_IsNotInterpretedAsGuid() { var reference = new LegacyEntityReference(DatabaseSchemaVersion.Batik, PhysicalGuid: "1A2B-étrange"); Assert.Equal(DatabaseSchemaVersion.Batik, reference.Source); Assert.Null(reference.EntityGuid); Assert.Equal("1A2B-étrange", reference.PhysicalGuid); } [Fact] public void Reference_DoesNotCarryConnectionSecret() { var reference = LegacyEntityReference.FromLegacyId(7); var publicProperties = reference.GetType().GetProperties(); Assert.DoesNotContain(publicProperties, p => p.Name.Contains("Password", StringComparison.Ordinal)); Assert.DoesNotContain(publicProperties, p => p.Name.Contains("ConnectionString", StringComparison.Ordinal)); Assert.DoesNotContain(publicProperties, p => p.Name.Contains("MotDePasse", StringComparison.Ordinal)); } }