From 0c421fed6658894c14e0fe042f07b6977e2e3e5f Mon Sep 17 00:00:00 2001 From: Blind-Striker Date: Fri, 23 Oct 2026 13:44:03 +0300 Subject: [PATCH] fix: forward useServiceUrl in the shorter TryAddAwsService overload TryAddAwsService(lifetime, useServiceUrl) called the AWSOptions overload without useServiceUrl, so the flag was always false. Forward it like every other registration overload does. Fixes #63 --- .../ServiceCollectionExtensions.cs | 2 +- .../ServiceCollectionExtensionsTests.cs | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/LocalStack.Client.Extensions/ServiceCollectionExtensions.cs b/src/LocalStack.Client.Extensions/ServiceCollectionExtensions.cs index fbe4ec3..1b75804 100644 --- a/src/LocalStack.Client.Extensions/ServiceCollectionExtensions.cs +++ b/src/LocalStack.Client.Extensions/ServiceCollectionExtensions.cs @@ -121,7 +121,7 @@ public static IServiceCollection AddAWSServiceLocalStack(this IService public static IServiceCollection TryAddAwsService(this IServiceCollection collection, ServiceLifetime lifetime = ServiceLifetime.Singleton, bool useServiceUrl = false) where TService : IAmazonService { - return TryAddAwsService(collection, null, lifetime); + return TryAddAwsService(collection, null, lifetime, useServiceUrl); } /// diff --git a/tests/LocalStack.Client.Extensions.Tests/ServiceCollectionExtensionsTests.cs b/tests/LocalStack.Client.Extensions.Tests/ServiceCollectionExtensionsTests.cs index 49049c7..9548de3 100644 --- a/tests/LocalStack.Client.Extensions.Tests/ServiceCollectionExtensionsTests.cs +++ b/tests/LocalStack.Client.Extensions.Tests/ServiceCollectionExtensionsTests.cs @@ -290,6 +290,30 @@ public void } } + [Theory, InlineData(true), InlineData(false)] + public void TryAddAwsService_Should_Forward_UseServiceUrl_To_Session(bool useServiceUrl) + { + var configurationValue = new Dictionary(StringComparer.Ordinal) { { "LocalStack:UseLocalStack", "true" } }; + IConfiguration configuration = new ConfigurationBuilder().AddInMemoryCollection(configurationValue).Build(); + + var mockSession = new Mock(MockBehavior.Strict); + ISession mockSessionObject = mockSession.Object; + mockSession.Setup(session => session.CreateClientByInterface(It.IsAny())) + .Returns(() => new MockAmazonServiceClient("tsada", "sadasdas", "sadasda", MockClientConfig.CreateDefaultMockClientConfig())); + + IServiceCollection serviceCollection = new ServiceCollection(); + serviceCollection.AddLocalStack(configuration) + .Replace(ServiceDescriptor.Singleton(_ => mockSessionObject)); + serviceCollection.TryAddAwsService(useServiceUrl: useServiceUrl); + + using ServiceProvider provider = serviceCollection.BuildServiceProvider(); + + var mockAmazonService = provider.GetRequiredService(); + + Assert.NotNull(mockAmazonService); + mockSession.Verify(session => session.CreateClientByInterface(It.Is(b => b == useServiceUrl)), Times.Once); + } + [Theory, InlineData(false, false, false), InlineData(false, false, true), InlineData(true, false, false), InlineData(true, false, true), InlineData(false, true, false), InlineData(false, true, true), InlineData(true, true, false), InlineData(true, true, true)] public void GetRequiredService_Should_Use_Suitable_ClientFactory_To_Create_AwsService_By_UseLocalStack_Value(