105 lines
2.9 KiB
C#
105 lines
2.9 KiB
C#
using Omika.Data.HfSql.Connection;
|
|
|
|
namespace Omika.Tests.Connection;
|
|
|
|
public class HfSqlOleDbConnectionStringBuilderTests
|
|
{
|
|
private static HfSqlConnectionOptions CreateOptions() => new()
|
|
{
|
|
Server = "hfsql-serveur",
|
|
Port = 4900,
|
|
Database = "Omika",
|
|
User = "tech",
|
|
Credential = "secret"
|
|
};
|
|
|
|
[Fact]
|
|
public void Build_ContainsProvider()
|
|
{
|
|
var connectionString = HfSqlOleDbConnectionStringBuilder.Build(CreateOptions());
|
|
|
|
Assert.Contains("PCSOFT.HFSQL", connectionString);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_ContainsServerAndPort()
|
|
{
|
|
var connectionString = HfSqlOleDbConnectionStringBuilder.Build(CreateOptions());
|
|
|
|
Assert.Contains("hfsql-serveur:4900", connectionString);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_ContainsDatabase()
|
|
{
|
|
var connectionString = HfSqlOleDbConnectionStringBuilder.Build(CreateOptions());
|
|
|
|
Assert.Contains("Omika", connectionString);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_ContainsUser()
|
|
{
|
|
var connectionString = HfSqlOleDbConnectionStringBuilder.Build(CreateOptions());
|
|
|
|
Assert.Contains("tech", connectionString);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_ContainsCredential()
|
|
{
|
|
var connectionString = HfSqlOleDbConnectionStringBuilder.Build(CreateOptions());
|
|
|
|
Assert.Contains("secret", connectionString);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_OmitsExtendedPropertiesWhenNull()
|
|
{
|
|
var connectionString = HfSqlOleDbConnectionStringBuilder.Build(CreateOptions());
|
|
|
|
Assert.DoesNotContain("Extended Properties", connectionString);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_IncludesExtendedPropertiesWhenProvided()
|
|
{
|
|
var connectionString = HfSqlOleDbConnectionStringBuilder.Build(
|
|
CreateOptions(),
|
|
"Password=Client:abc123");
|
|
|
|
Assert.Contains("Extended Properties", connectionString);
|
|
Assert.Contains("Password=Client:abc123", connectionString);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_NullOptions_Throws()
|
|
{
|
|
Assert.Throws<ArgumentNullException>(() => HfSqlOleDbConnectionStringBuilder.Build(null!));
|
|
}
|
|
|
|
[Fact]
|
|
public void EscapeExtendedPropertyValue_EscapesSpecialCharacters()
|
|
{
|
|
var escaped = HfSqlOleDbConnectionStringBuilder.EscapeExtendedPropertyValue("a=b;c:d\\e");
|
|
|
|
Assert.Equal("a\\=b\\;c\\:d\\\\e", escaped);
|
|
}
|
|
|
|
[Fact]
|
|
public void BuildFilePasswordEntry_DoesNotEscapeStructuralColon()
|
|
{
|
|
var entry = HfSqlOleDbConnectionStringBuilder.BuildFilePasswordEntry("Client", "abc123");
|
|
|
|
Assert.Equal("Password=Client:abc123", entry);
|
|
}
|
|
|
|
[Fact]
|
|
public void BuildFilePasswordEntry_EscapesFilenameAndPasswordIndividually()
|
|
{
|
|
var entry = HfSqlOleDbConnectionStringBuilder.BuildFilePasswordEntry("a=b", "c;d");
|
|
|
|
Assert.Equal("Password=a\\=b:c\\;d", entry);
|
|
}
|
|
}
|