62 lines
2.2 KiB
C#
62 lines
2.2 KiB
C#
using Omika.Core.Compatibility;
|
|
|
|
namespace Omika.Tests.Compatibility;
|
|
|
|
/// <summary>
|
|
/// Tests de <see cref="LegacyEntityReference"/> : conservation de la provenance
|
|
/// (Batik / Omika) sans exposer les noms HFSQL, et identifiant public stable.
|
|
/// </summary>
|
|
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));
|
|
}
|
|
}
|