diff --git a/Directory.Packages.props b/Directory.Packages.props index 7653922744..ce5cab912e 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -102,6 +102,7 @@ + diff --git a/test/HealthChecks.SqlServer.Tests/Functional/SqlServerHealthCheckTests.cs b/test/HealthChecks.SqlServer.Tests/Functional/SqlServerHealthCheckTests.cs index bc04019e8c..0d4fcbcc73 100644 --- a/test/HealthChecks.SqlServer.Tests/Functional/SqlServerHealthCheckTests.cs +++ b/test/HealthChecks.SqlServer.Tests/Functional/SqlServerHealthCheckTests.cs @@ -2,12 +2,12 @@ namespace HealthChecks.SqlServer.Tests.Functional; -public class sqlserver_healthcheck_should +public class sqlserver_healthcheck_should(SqlServerContainerFixture sqlServerContainerFixture) : IClassFixture { [Fact] public async Task be_healthy_if_sqlServer_is_available() { - var connectionString = "Server=tcp:localhost,5433;Initial Catalog=master;User Id=sa;Password=Password12!;Encrypt=false"; + var connectionString = sqlServerContainerFixture.GetConnectionString(); var webHostBuilder = new WebHostBuilder() .ConfigureServices(services => @@ -57,7 +57,7 @@ public async Task be_unhealthy_if_sqlServer_is_not_available() [Fact] public async Task be_unhealthy_if_sqlquery_spec_is_not_valid() { - var connectionString = "Server=tcp:localhost,5433;Initial Catalog=master;User Id=sa;Password=Password12!;Encrypt=false"; + var connectionString = sqlServerContainerFixture.GetConnectionString(); var webHostBuilder = new WebHostBuilder() .ConfigureServices(services => diff --git a/test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj b/test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj index 34af181f2b..d481f6a29e 100644 --- a/test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj +++ b/test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj @@ -1,5 +1,9 @@ + + + + diff --git a/test/HealthChecks.SqlServer.Tests/RedisContainerFixture.cs b/test/HealthChecks.SqlServer.Tests/RedisContainerFixture.cs new file mode 100644 index 0000000000..69d034e03b --- /dev/null +++ b/test/HealthChecks.SqlServer.Tests/RedisContainerFixture.cs @@ -0,0 +1,35 @@ +using Testcontainers.MsSql; + +namespace HealthChecks.SqlServer.Tests; + +public sealed class SqlServerContainerFixture : IAsyncLifetime +{ + public const string Registry = "mcr.microsoft.com"; + + public const string Image = "mssql/server"; + + public const string Tag = "2022-latest"; + + public MsSqlContainer? Container { get; private set; } + + public string GetConnectionString() => Container?.GetConnectionString() ?? + throw new InvalidOperationException("The test container was not initialized."); + + public async Task InitializeAsync() => Container = await CreateContainerAsync(); + + public async Task DisposeAsync() + { + if (Container is not null) + await Container.DisposeAsync(); + } + + public static async Task CreateContainerAsync() + { + var container = new MsSqlBuilder() + .WithImage($"{Registry}/{Image}:{Tag}") + .Build(); + await container.StartAsync(); + + return container; + } +}