56 lines
2 KiB
C#
56 lines
2 KiB
C#
|
|
using pgLabII.PgUtils.ConnectionStrings;
|
|||
|
|
|
|||
|
|
namespace pgLabII.PgUtils.Tests.ConnectionStrings;
|
|||
|
|
|
|||
|
|
public class JdbcCodecTests
|
|||
|
|
{
|
|||
|
|
[Fact]
|
|||
|
|
public void Parse_Basic()
|
|||
|
|
{
|
|||
|
|
var codec = new JdbcCodec();
|
|||
|
|
var r = codec.TryParse("jdbc:postgresql://localhost:5433/mydb?sslmode=require&applicationName=app&connectTimeout=12");
|
|||
|
|
Assert.True(r.IsSuccess);
|
|||
|
|
var d = r.Value;
|
|||
|
|
Assert.Single(d.Hosts);
|
|||
|
|
Assert.Equal("localhost", d.Hosts[0].Host);
|
|||
|
|
Assert.Equal((ushort)5433, d.Hosts[0].Port);
|
|||
|
|
Assert.Equal("mydb", d.Database);
|
|||
|
|
Assert.Equal(Npgsql.SslMode.Require, d.SslMode);
|
|||
|
|
Assert.Equal("app", d.ApplicationName);
|
|||
|
|
Assert.Equal(12, d.TimeoutSeconds);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[Fact]
|
|||
|
|
public void Parse_MultiHost_MixedPorts()
|
|||
|
|
{
|
|||
|
|
var codec = new JdbcCodec();
|
|||
|
|
var r = codec.TryParse("jdbc:postgresql://host1:5432,[::1]:5544,host3/db");
|
|||
|
|
Assert.True(r.IsSuccess);
|
|||
|
|
var d = r.Value;
|
|||
|
|
Assert.Equal(3, d.Hosts.Count);
|
|||
|
|
Assert.Equal("host1", d.Hosts[0].Host);
|
|||
|
|
Assert.Equal((ushort)5432, d.Hosts[0].Port);
|
|||
|
|
Assert.Equal("::1", d.Hosts[1].Host);
|
|||
|
|
Assert.Equal((ushort)5544, d.Hosts[1].Port);
|
|||
|
|
Assert.Equal("host3", d.Hosts[2].Host);
|
|||
|
|
Assert.Null(d.Hosts[2].Port);
|
|||
|
|
Assert.Equal("db", d.Database);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[Fact]
|
|||
|
|
public void Format_RoundTrip()
|
|||
|
|
{
|
|||
|
|
var codec = new JdbcCodec();
|
|||
|
|
var parsed = codec.TryParse("jdbc:postgresql://hostA,hostB:5555/test_db?applicationName=cli¶m=x%20y");
|
|||
|
|
Assert.True(parsed.IsSuccess);
|
|||
|
|
var formatted = codec.TryFormat(parsed.Value);
|
|||
|
|
Assert.True(formatted.IsSuccess);
|
|||
|
|
var parsed2 = codec.TryParse(formatted.Value);
|
|||
|
|
Assert.True(parsed2.IsSuccess);
|
|||
|
|
Assert.Equal(parsed.Value.Hosts.Count, parsed2.Value.Hosts.Count);
|
|||
|
|
Assert.Equal(parsed.Value.Database, parsed2.Value.Database);
|
|||
|
|
Assert.Equal("cli", parsed2.Value.ApplicationName);
|
|||
|
|
Assert.Equal("x y", parsed2.Value.Properties["param"]);
|
|||
|
|
}
|
|||
|
|
}
|