Some checks are pending
CI / Build og unit tests (push) Waiting to run
CI / Integration (mcr.microsoft.com/mssql/server:2017-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2019-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2022-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2025-latest) (push) Blocked by required conditions
- .NET 10 solution with Core, Connectivity, Rules, Contracts, Agent, Web and Hub - Capability model gating collectors and rules by SQL Server version (2000 and later); rules that cannot run are reported as not measurable, never as passed - Connectivity via Microsoft.Data.SqlClient with ODBC fallback for legacy instances, hardened monitoring session settings valid back to SQL Server 2000 - Support lifecycle rule (SQLI-VER-001) with lifecycle data shipped as a rule pack - Version-aware least-privilege permissions script, verified by integration tests against SQL Server in Docker (reads monitoring sources, cannot read customer data) - Forgejo Actions CI, contributing guide, code of conduct, issue templates, legacy version notes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E3EExwndy8Z22EK2Qpt6BK
42 lines
1.7 KiB
C#
42 lines
1.7 KiB
C#
namespace SQLInsight.Connectivity.Tests;
|
|
|
|
public class ConnectionStringsTests
|
|
{
|
|
[Fact]
|
|
public void SqlClient_defaults_to_mandatory_encryption_with_certificate_validation()
|
|
{
|
|
var cs = ConnectionStrings.ForSqlClient(new ConnectionTarget { Server = "sql01" });
|
|
|
|
Assert.Contains("Encrypt=True", cs, StringComparison.OrdinalIgnoreCase);
|
|
Assert.DoesNotContain("Trust Server Certificate=True", cs, StringComparison.OrdinalIgnoreCase);
|
|
Assert.Contains("Integrated Security=True", cs, StringComparison.OrdinalIgnoreCase);
|
|
Assert.Contains("Application Name=\"SQLInsight Pro\"", cs, StringComparison.OrdinalIgnoreCase);
|
|
}
|
|
|
|
[Fact]
|
|
public void Odbc_uses_configured_driver_and_sql_login()
|
|
{
|
|
var cs = ConnectionStrings.ForOdbc(new ConnectionTarget
|
|
{
|
|
Server = "legacy01",
|
|
Authentication = AuthenticationMode.SqlLogin,
|
|
UserName = "sqlinsight",
|
|
Password = "secret",
|
|
Encryption = EncryptionMode.Optional,
|
|
OdbcDriver = "SQL Server",
|
|
});
|
|
|
|
Assert.Contains("Driver={SQL Server}", cs, StringComparison.OrdinalIgnoreCase);
|
|
Assert.Contains("UID=sqlinsight", cs, StringComparison.OrdinalIgnoreCase);
|
|
Assert.Contains("Encrypt=no", cs, StringComparison.OrdinalIgnoreCase);
|
|
Assert.DoesNotContain("Trusted_Connection", cs, StringComparison.OrdinalIgnoreCase);
|
|
}
|
|
|
|
[Fact]
|
|
public void Sql_login_without_user_name_is_rejected()
|
|
{
|
|
var target = new ConnectionTarget { Server = "sql01", Authentication = AuthenticationMode.SqlLogin };
|
|
|
|
Assert.Throws<ArgumentException>(() => ConnectionStrings.ForSqlClient(target));
|
|
}
|
|
}
|