diff --git a/build/dependencies.props b/build/dependencies.props
index 34111dd..f0c605e 100644
--- a/build/dependencies.props
+++ b/build/dependencies.props
@@ -50,7 +50,7 @@
3.0.0
3.0.0
3.0.0
- 3.0.0
+ 3.0.1
3.0.0
3.0.0
3.0.1
diff --git a/src/BeatPulse.MongoDb/MongoDbLiveness.cs b/src/BeatPulse.MongoDb/MongoDbLiveness.cs
index df50aa9..75a52b3 100644
--- a/src/BeatPulse.MongoDb/MongoDbLiveness.cs
+++ b/src/BeatPulse.MongoDb/MongoDbLiveness.cs
@@ -25,8 +25,17 @@ public async Task IsHealthy(LivenessExecutionContext context, Ca
{
_logger?.LogInformation($"{nameof(MongoDbLiveness)} is checking the MongoDb database.");
- await new MongoClient(_connectionString)
- .ListDatabasesAsync(cancellationToken);
+ var client = new MongoClient(_connectionString);
+
+ var url = new MongoUrl(_connectionString);
+ if (string.IsNullOrWhiteSpace(url.DatabaseName))
+ {
+ await client.ListDatabasesAsync(cancellationToken);
+ }
+ else
+ {
+ await client.GetDatabase(url.DatabaseName).ListCollectionsAsync(cancellationToken: cancellationToken);
+ }
_logger?.LogInformation($"The {nameof(MongoDbLiveness)} check success.");
diff --git a/tests/FunctionalTests/BeatPulse.MongoDb/BeatPulseLivenessTests.cs b/tests/FunctionalTests/BeatPulse.MongoDb/BeatPulseLivenessTests.cs
index 40cfb12..2ab67ad 100644
--- a/tests/FunctionalTests/BeatPulse.MongoDb/BeatPulseLivenessTests.cs
+++ b/tests/FunctionalTests/BeatPulse.MongoDb/BeatPulseLivenessTests.cs
@@ -66,5 +66,52 @@ public async Task return_false_if_mongodb_is_not_available()
response.StatusCode
.Should().Be(HttpStatusCode.ServiceUnavailable);
}
+
+ [Fact]
+ public async Task return_true_if_mongodb_is_available_and_database_is_defined()
+ {
+ var connectionString = @"mongodb://localhost:27017/database";
+
+ var webHostBuilder = new WebHostBuilder()
+ .UseStartup()
+ .UseBeatPulse()
+ .ConfigureServices(services =>
+ {
+ services.AddBeatPulse(context =>
+ {
+ context.AddMongoDb(connectionString);
+ });
+ });
+
+ var server = new TestServer(webHostBuilder);
+
+ var response = await server.CreateRequest($"{BeatPulseKeys.BEATPULSE_DEFAULT_PATH}")
+ .GetAsync();
+
+ response.EnsureSuccessStatusCode();
+ }
+
+ [Fact]
+ public async Task return_false_if_mongodb_is_not_available_and_database_is_defined()
+ {
+ var webHostBuilder = new WebHostBuilder()
+ .UseStartup()
+ .UseBeatPulse()
+ .ConfigureServices(services =>
+ {
+ services.AddBeatPulse(context =>
+ {
+ context.AddMongoDb("mongodb://nonexistingdomain:27017/database");
+ });
+ });
+
+ var server = new TestServer(webHostBuilder);
+
+ var response = await server.CreateRequest($"{BeatPulseKeys.BEATPULSE_DEFAULT_PATH}")
+ .GetAsync();
+
+ response.StatusCode
+ .Should().Be(HttpStatusCode.ServiceUnavailable);
+ }
}
}