diff --git a/.github/workflows/healthchecks_arangodb_ci.yml b/.github/workflows/healthchecks_arangodb_ci.yml
index 0c1a1fdb90..2f9dcc2d2c 100644
--- a/.github/workflows/healthchecks_arangodb_ci.yml
+++ b/.github/workflows/healthchecks_arangodb_ci.yml
@@ -28,46 +28,8 @@ on:
jobs:
build:
- runs-on: ubuntu-latest
- services:
- arangodb:
- image: arangodb/arangodb:latest
- ports:
- - 8529:8529
- env:
- ARANGO_ROOT_PASSWORD: strongArangoDbPassword
- steps:
- - uses: actions/checkout@v3
- - name: Setup .NET
- uses: actions/setup-dotnet@v4
- with:
- dotnet-version: |
- 8.0.x
- 9.0.x
- - name: Restore
- run: |
- dotnet restore ./src/HealthChecks.ArangoDb/HealthChecks.ArangoDb.csproj &&
- dotnet restore ./test/HealthChecks.ArangoDb.Tests/HealthChecks.ArangoDb.Tests.csproj
- - name: Check formatting
- run: |
- dotnet format --no-restore --verify-no-changes --severity warn ./src/HealthChecks.ArangoDb/HealthChecks.ArangoDb.csproj || (echo "Run 'dotnet format' to fix issues" && exit 1) &&
- dotnet format --no-restore --verify-no-changes --severity warn ./test/HealthChecks.ArangoDb.Tests/HealthChecks.ArangoDb.Tests.csproj || (echo "Run 'dotnet format' to fix issues" && exit 1)
- - name: Build
- run: |
- dotnet build --no-restore ./src/HealthChecks.ArangoDb/HealthChecks.ArangoDb.csproj &&
- dotnet build --no-restore ./test/HealthChecks.ArangoDb.Tests/HealthChecks.ArangoDb.Tests.csproj
- - name: Test
- run: >
- dotnet test
- ./test/HealthChecks.ArangoDb.Tests/HealthChecks.ArangoDb.Tests.csproj
- --no-restore
- --no-build
- --collect "XPlat Code Coverage"
- --results-directory .coverage
- --
- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
- - name: Upload Coverage
- uses: codecov/codecov-action@v5
- with:
- flags: ArangoDb
- directory: .coverage
+ uses: ./.github/workflows/reusable_ci_workflow.yml
+ with:
+ PROJECT_PATH: ./src/HealthChecks.ArangoDb/HealthChecks.ArangoDb.csproj
+ TEST_PROJECT_PATH: ./test/HealthChecks.ArangoDb.Tests/HealthChecks.ArangoDb.Tests.csproj
+ CODECOV_FLAGS: ArangoDb
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 2c2207765a..554fc0c0dc 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -103,6 +103,7 @@
+
diff --git a/test/HealthChecks.ArangoDb.Tests/ArangoDbContainerFixture.cs b/test/HealthChecks.ArangoDb.Tests/ArangoDbContainerFixture.cs
new file mode 100644
index 0000000000..7b0f6a43d8
--- /dev/null
+++ b/test/HealthChecks.ArangoDb.Tests/ArangoDbContainerFixture.cs
@@ -0,0 +1,46 @@
+using Testcontainers.ArangoDb;
+
+namespace HealthChecks.ArangoDb.Tests;
+
+public class ArangoDbContainerFixture : IAsyncLifetime
+{
+ private const string Registry = "docker.io";
+
+ private const string Image = "library/arangodb";
+
+ private const string Tag = "3.12.5.2";
+
+ public ArangoDbContainer? Container { get; private set; }
+
+ public ArangoDbOptions GetConnectionOptions()
+ {
+ if (Container is null)
+ {
+ throw new InvalidOperationException("The test container was not initialized.");
+ }
+
+ var options = new ArangoDbOptions
+ {
+ HostUri = Container.GetTransportAddress(),
+ UserName = ArangoDbBuilder.DefaultUsername,
+ Password = ArangoDbBuilder.DefaultPassword,
+ };
+
+ return options;
+ }
+
+ public async Task InitializeAsync() => Container = await CreateContainerAsync();
+
+ public Task DisposeAsync() => Container?.DisposeAsync().AsTask() ?? Task.CompletedTask;
+
+ private async Task CreateContainerAsync()
+ {
+ var container = new ArangoDbBuilder()
+ .WithImage($"{Registry}/{Image}:{Tag}")
+ .Build();
+
+ await container.StartAsync();
+
+ return container;
+ }
+}
diff --git a/test/HealthChecks.ArangoDb.Tests/Functional/ArangoDbHealthCheckTests.cs b/test/HealthChecks.ArangoDb.Tests/Functional/ArangoDbHealthCheckTests.cs
index b7c178428a..db1b488f9a 100644
--- a/test/HealthChecks.ArangoDb.Tests/Functional/ArangoDbHealthCheckTests.cs
+++ b/test/HealthChecks.ArangoDb.Tests/Functional/ArangoDbHealthCheckTests.cs
@@ -2,22 +2,18 @@
namespace HealthChecks.ArangoDb.Tests.Functional;
-public class arangodb_healthcheck_should
+public class arangodb_healthcheck_should(ArangoDbContainerFixture arangoDbFixture) : IClassFixture
{
[Fact]
public async Task be_healthy_if_arangodb_is_available()
{
+ var options = arangoDbFixture.GetConnectionOptions();
+
var webHostBuilder = new WebHostBuilder()
.ConfigureServices(services =>
{
services.AddHealthChecks()
- .AddArangoDb(_ => new ArangoDbOptions
- {
- HostUri = "http://localhost:8529/",
- Database = "_system",
- UserName = "root",
- Password = "strongArangoDbPassword"
- }, tags: ["arangodb"]);
+ .AddArangoDb(_ => options, tags: ["arangodb"]);
})
.Configure(app =>
{
@@ -37,25 +33,14 @@ public async Task be_healthy_if_arangodb_is_available()
[Fact]
public async Task be_healthy_if_multiple_arango_are_available()
{
+ var options = arangoDbFixture.GetConnectionOptions();
+
var webHostBuilder = new WebHostBuilder()
.ConfigureServices(services =>
{
services.AddHealthChecks()
- .AddArangoDb(_ => new ArangoDbOptions
- {
- HostUri = "http://localhost:8529/",
- Database = "_system",
- UserName = "root",
- Password = "strongArangoDbPassword"
- }, tags: ["arango"], name: "1")
- .AddArangoDb(_ => new ArangoDbOptions
- {
- HostUri = "http://localhost:8529/",
- Database = "_system",
- UserName = "root",
- Password = "strongArangoDbPassword",
- IsGenerateJwtTokenBasedOnUserNameAndPassword = true
- }, tags: ["arango"], name: "2");
+ .AddArangoDb(_ => options, tags: ["arango"], name: "1")
+ .AddArangoDb(_ => options, tags: ["arango"], name: "2");
})
.Configure(app =>
{
@@ -75,17 +60,15 @@ public async Task be_healthy_if_multiple_arango_are_available()
[Fact]
public async Task be_unhealthy_if_arango_is_not_available()
{
+ var options = arangoDbFixture.GetConnectionOptions();
+
+ options.Password = "invalid password";
+
var webHostBuilder = new WebHostBuilder()
.ConfigureServices(services =>
{
services.AddHealthChecks()
- .AddArangoDb(_ => new ArangoDbOptions
- {
- HostUri = "http://localhost:8529/",
- Database = "_system",
- UserName = "root",
- Password = "invalid password"
- }, tags: ["arango"]);
+ .AddArangoDb(_ => options, tags: ["arango"]);
})
.Configure(app =>
{
diff --git a/test/HealthChecks.ArangoDb.Tests/HealthChecks.ArangoDb.Tests.csproj b/test/HealthChecks.ArangoDb.Tests/HealthChecks.ArangoDb.Tests.csproj
index 4364febf29..7cdf948080 100644
--- a/test/HealthChecks.ArangoDb.Tests/HealthChecks.ArangoDb.Tests.csproj
+++ b/test/HealthChecks.ArangoDb.Tests/HealthChecks.ArangoDb.Tests.csproj
@@ -4,4 +4,8 @@
+
+
+
+