Skip to content

Commit 23f288f

Browse files
committed
Migrate HealthChecks.ArangoDb tests to Testcontainers
1 parent 846fbc9 commit 23f288f

File tree

4 files changed

+64
-30
lines changed

4 files changed

+64
-30
lines changed

Directory.Packages.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" />
104104
<PackageVersion Include="System.Threading.Channels" Version="8.0.0" />
105105
<PackageVersion Include="Testcontainers" Version="$(TestcontainersVersion)" />
106+
<PackageVersion Include="Testcontainers.ArangoDb" Version="$(TestcontainersVersion)" />
106107
<PackageVersion Include="Testcontainers.ClickHouse" Version="$(TestcontainersVersion)" />
107108
<PackageVersion Include="Testcontainers.Kafka" Version="$(TestcontainersVersion)" />
108109
<PackageVersion Include="Testcontainers.Milvus" Version="$(TestcontainersVersion)" />
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using Testcontainers.ArangoDb;
2+
3+
namespace HealthChecks.ArangoDb.Tests;
4+
5+
public class ArangoDbContainerFixture : IAsyncLifetime
6+
{
7+
private const string Registry = "docker.io";
8+
9+
private const string Image = "library/arangodb";
10+
11+
private const string Tag = "3.12.5.2";
12+
13+
public ArangoDbContainer? Container { get; private set; }
14+
15+
public ArangoDbOptions GetConnectionOptions()
16+
{
17+
if (Container is null)
18+
{
19+
throw new InvalidOperationException("The test container was not initialized.");
20+
}
21+
22+
var options = new ArangoDbOptions
23+
{
24+
HostUri = Container.GetTransportAddress(),
25+
UserName = ArangoDbBuilder.DefaultUsername,
26+
Password = ArangoDbBuilder.DefaultPassword,
27+
};
28+
29+
return options;
30+
}
31+
32+
public async Task InitializeAsync() => Container = await CreateContainerAsync();
33+
34+
public Task DisposeAsync() => Container?.DisposeAsync().AsTask() ?? Task.CompletedTask;
35+
36+
private async Task<ArangoDbContainer?> CreateContainerAsync()
37+
{
38+
var container = new ArangoDbBuilder()
39+
.WithImage($"{Registry}/{Image}:{Tag}")
40+
.Build();
41+
42+
await container.StartAsync();
43+
44+
return container;
45+
}
46+
}

test/HealthChecks.ArangoDb.Tests/Functional/ArangoDbHealthCheckTests.cs

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,18 @@
22

33
namespace HealthChecks.ArangoDb.Tests.Functional;
44

5-
public class arangodb_healthcheck_should
5+
public class arangodb_healthcheck_should(ArangoDbContainerFixture arangoDbFixture) : IClassFixture<ArangoDbContainerFixture>
66
{
77
[Fact]
88
public async Task be_healthy_if_arangodb_is_available()
99
{
10+
var options = arangoDbFixture.GetConnectionOptions();
11+
1012
var webHostBuilder = new WebHostBuilder()
1113
.ConfigureServices(services =>
1214
{
1315
services.AddHealthChecks()
14-
.AddArangoDb(_ => new ArangoDbOptions
15-
{
16-
HostUri = "http://localhost:8529/",
17-
Database = "_system",
18-
UserName = "root",
19-
Password = "strongArangoDbPassword"
20-
}, tags: ["arangodb"]);
16+
.AddArangoDb(_ => options, tags: ["arangodb"]);
2117
})
2218
.Configure(app =>
2319
{
@@ -37,25 +33,14 @@ public async Task be_healthy_if_arangodb_is_available()
3733
[Fact]
3834
public async Task be_healthy_if_multiple_arango_are_available()
3935
{
36+
var options = arangoDbFixture.GetConnectionOptions();
37+
4038
var webHostBuilder = new WebHostBuilder()
4139
.ConfigureServices(services =>
4240
{
4341
services.AddHealthChecks()
44-
.AddArangoDb(_ => new ArangoDbOptions
45-
{
46-
HostUri = "http://localhost:8529/",
47-
Database = "_system",
48-
UserName = "root",
49-
Password = "strongArangoDbPassword"
50-
}, tags: ["arango"], name: "1")
51-
.AddArangoDb(_ => new ArangoDbOptions
52-
{
53-
HostUri = "http://localhost:8529/",
54-
Database = "_system",
55-
UserName = "root",
56-
Password = "strongArangoDbPassword",
57-
IsGenerateJwtTokenBasedOnUserNameAndPassword = true
58-
}, tags: ["arango"], name: "2");
42+
.AddArangoDb(_ => options, tags: ["arango"], name: "1")
43+
.AddArangoDb(_ => options, tags: ["arango"], name: "2");
5944
})
6045
.Configure(app =>
6146
{
@@ -75,17 +60,15 @@ public async Task be_healthy_if_multiple_arango_are_available()
7560
[Fact]
7661
public async Task be_unhealthy_if_arango_is_not_available()
7762
{
63+
var options = arangoDbFixture.GetConnectionOptions();
64+
65+
options.Password = "invalid password";
66+
7867
var webHostBuilder = new WebHostBuilder()
7968
.ConfigureServices(services =>
8069
{
8170
services.AddHealthChecks()
82-
.AddArangoDb(_ => new ArangoDbOptions
83-
{
84-
HostUri = "http://localhost:8529/",
85-
Database = "_system",
86-
UserName = "root",
87-
Password = "invalid password"
88-
}, tags: ["arango"]);
71+
.AddArangoDb(_ => options, tags: ["arango"]);
8972
})
9073
.Configure(app =>
9174
{

test/HealthChecks.ArangoDb.Tests/HealthChecks.ArangoDb.Tests.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,8 @@
44
<ProjectReference Include="..\..\src\HealthChecks.ArangoDb\HealthChecks.ArangoDb.csproj" />
55
</ItemGroup>
66

7+
<ItemGroup>
8+
<PackageReference Include="Testcontainers.ArangoDb" />
9+
</ItemGroup>
10+
711
</Project>

0 commit comments

Comments
 (0)