diff --git a/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs b/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs
index f23822920e..e890f044cf 100644
--- a/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs
+++ b/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs
@@ -32,7 +32,12 @@ public static class AspireNatsClientExtensions
/// Thrown if mandatory is null.
/// Thrown when mandatory is not provided.
public static void AddNatsClient(this IHostApplicationBuilder builder, string connectionName, Action? configureSettings = null, Func? configureOptions = null)
- => AddNatsClient(builder, configurationSectionName: DefaultConfigSectionName, connectionName: connectionName, serviceKey: null, configureSettings: configureSettings, configureOptions: configureOptions);
+ {
+ ArgumentNullException.ThrowIfNull(builder);
+ ArgumentException.ThrowIfNullOrEmpty(connectionName);
+
+ AddNatsClient(builder, configurationSectionName: DefaultConfigSectionName, connectionName: connectionName, serviceKey: null, configureSettings: configureSettings, configureOptions: configureOptions);
+ }
///
/// Registers as a keyed service for given for connecting NATS server with NATS client.
@@ -47,6 +52,7 @@ public static void AddNatsClient(this IHostApplicationBuilder builder, string co
/// Thrown when mandatory is not provided.
public static void AddKeyedNatsClient(this IHostApplicationBuilder builder, string name, Action? configureSettings = null, Func? configureOptions = null)
{
+ ArgumentNullException.ThrowIfNull(builder);
ArgumentException.ThrowIfNullOrEmpty(name);
AddNatsClient(builder, configurationSectionName: $"{DefaultConfigSectionName}:{name}", connectionName: name, serviceKey: name, configureSettings: configureSettings, configureOptions: configureOptions);
diff --git a/tests/Aspire.NATS.Net.Tests/NatsClientPublicApiTests.cs b/tests/Aspire.NATS.Net.Tests/NatsClientPublicApiTests.cs
new file mode 100644
index 0000000000..49fe2ac7bf
--- /dev/null
+++ b/tests/Aspire.NATS.Net.Tests/NatsClientPublicApiTests.cs
@@ -0,0 +1,99 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using Microsoft.Extensions.Hosting;
+using Xunit;
+
+namespace Aspire.NATS.Net.Tests;
+
+public class NatsClientPublicApiTests
+{
+ [Fact]
+ public void AddNatsClientShouldThrowWhenBuilderIsNull()
+ {
+ IHostApplicationBuilder builder = null!;
+
+ var connectionName = "Nats";
+
+ var action = () => builder.AddNatsClient(connectionName);
+
+ var exception = Assert.Throws(action);
+ Assert.Equal(nameof(builder), exception.ParamName);
+ }
+
+ [Fact]
+ public void AddNatsClientShouldThrowWhenConnectionNameIsNull()
+ {
+ var builder = Host.CreateEmptyApplicationBuilder(null);
+
+ string connectionName = null!;
+
+ var action = () => builder.AddNatsClient(connectionName);
+
+ var exception = Assert.Throws(action);
+ Assert.Equal(nameof(connectionName), exception.ParamName);
+ }
+
+ [Fact]
+ public void AddNatsClientShouldThrowWhenConnectionNameIsEmpty()
+ {
+ var builder = Host.CreateEmptyApplicationBuilder(null);
+
+ var connectionName = "";
+
+ var action = () => builder.AddNatsClient(connectionName);
+
+ var exception = Assert.Throws(action);
+ Assert.Equal(nameof(connectionName), exception.ParamName);
+ }
+
+ [Fact]
+ public void AddKeyedNatsClientShouldThrowWhenBuilderIsNull()
+ {
+ IHostApplicationBuilder builder = null!;
+
+ var connectionName = "Nats";
+
+ var action = () => builder.AddKeyedNatsClient(connectionName);
+
+ var exception = Assert.Throws(action);
+ Assert.Equal(nameof(builder), exception.ParamName);
+ }
+
+ [Fact]
+ public void AddKeyedNatsClientShouldThrowWhenNameIsNull()
+ {
+ var builder = Host.CreateEmptyApplicationBuilder(null);
+
+ string name = null!;
+
+ var action = () => builder.AddKeyedNatsClient(name);
+
+ var exception = Assert.Throws(action);
+ Assert.Equal(nameof(name), exception.ParamName);
+ }
+
+ [Fact]
+ public void AddKeyedNatsClientShouldThrowWhenNameIsEmpty()
+ {
+ var builder = Host.CreateEmptyApplicationBuilder(null);
+
+ var name = "";
+
+ var action = () => builder.AddKeyedNatsClient(name);
+
+ var exception = Assert.Throws(action);
+ Assert.Equal(nameof(name), exception.ParamName);
+ }
+
+ [Fact]
+ public void AddNatsJetStreamShouldThrowWhenBuilderIsNull()
+ {
+ IHostApplicationBuilder builder = null!;
+
+ var action = builder.AddNatsJetStream;
+
+ var exception = Assert.Throws(action);
+ Assert.Equal(nameof(builder), exception.ParamName);
+ }
+}