From ba0f090e60dc7efd985f1cb97bc29eb35265386c Mon Sep 17 00:00:00 2001 From: Alireza Baloochi Date: Fri, 9 Aug 2024 17:01:49 +0330 Subject: [PATCH 1/2] Adding public API test coverage for Aspire.NATS.Net --- .../AspireNatsClientExtensions.cs | 7 +- .../NatsClientPublicApiTests.cs | 99 +++++++++++++++++++ 2 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 tests/Aspire.NATS.Net.Tests/NatsClientPublicApiTests.cs diff --git a/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs b/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs index f23822920e1..b2e3f193fe1 100644 --- a/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs +++ b/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs @@ -32,7 +32,11 @@ 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 +51,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 00000000000..49fe2ac7bf0 --- /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); + } +} From d4b3514d2e60eccb233a8e222a17f400618b116f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Ros?= Date: Fri, 9 Aug 2024 10:35:47 -0700 Subject: [PATCH 2/2] Update AspireNatsClientExtensions.cs --- src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs b/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs index b2e3f193fe1..e890f044cfd 100644 --- a/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs +++ b/src/Components/Aspire.NATS.Net/AspireNatsClientExtensions.cs @@ -35,6 +35,7 @@ public static void AddNatsClient(this IHostApplicationBuilder builder, string co { ArgumentNullException.ThrowIfNull(builder); ArgumentException.ThrowIfNullOrEmpty(connectionName); + AddNatsClient(builder, configurationSectionName: DefaultConfigSectionName, connectionName: connectionName, serviceKey: null, configureSettings: configureSettings, configureOptions: configureOptions); }