public void GetRequiredService_Should_Use_Suitable_ClientFactory_To_Create_AwsService_By_UseLocalStack_Value( bool useLocalStack, int awsClientFactoryInvolved, int sessionInvolved, bool useAlternateNameAddServiceMethod) { var configurationValue = new Dictionary <string, string> { { "LocalStack:UseLocalStack", useLocalStack.ToString() } }; IConfiguration configuration = new ConfigurationBuilder().AddInMemoryCollection(configurationValue).Build(); var mockSession = new Mock <ISession>(MockBehavior.Strict); var mockClientFactory = new Mock <IAwsClientFactoryWrapper>(MockBehavior.Strict); ISession mockSessionObject = mockSession.Object; IAwsClientFactoryWrapper mockAwsClientFactoryWrapper = mockClientFactory.Object; IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddLocalStack(configuration) .Replace(ServiceDescriptor.Singleton(_ => mockSessionObject)) .Replace(ServiceDescriptor.Singleton(_ => mockAwsClientFactoryWrapper)); if (!useAlternateNameAddServiceMethod) { serviceCollection.AddAwsService <IMockAmazonService>(); } else { serviceCollection.AddAWSServiceLocalStack <IMockAmazonService>(); } ServiceProvider provider = serviceCollection.BuildServiceProvider(); mockSession.Setup(session => session.CreateClientByInterface <IMockAmazonService>()).Returns(() => new MockAmazonServiceClient("tsada", "sadasdas", "sadasda", new MockClientConfig())); mockClientFactory.Setup(wrapper => wrapper.CreateServiceClient <IMockAmazonService>(It.IsAny <IServiceProvider>(), It.IsAny <AWSOptions>())).Returns(() => new MockAmazonServiceClient("tsada", "sadasdas", "sadasda", new MockClientConfig())); var mockAmazonService = provider.GetRequiredService <IMockAmazonService>(); Assert.NotNull(mockAmazonService); mockClientFactory.Verify(wrapper => wrapper.CreateServiceClient <IMockAmazonService>(It.IsAny <IServiceProvider>(), It.IsAny <AWSOptions>()), Times.Exactly(awsClientFactoryInvolved)); mockSession.Verify(session => session.CreateClientByInterface <IMockAmazonService>(), Times.Exactly(sessionInvolved)); }
public void GetRequiredService_Should_Return_AmazonService_That_Configured_For_LocalStack_If_UseLocalStack_Is_True(bool useAlternateNameAddServiceMethod) { var configurationValue = new Dictionary <string, string> { { "LocalStack:UseLocalStack", "true" } }; IConfiguration configuration = new ConfigurationBuilder().AddInMemoryCollection(configurationValue).Build(); var mockServiceMetadata = new MockServiceMetadata(); var mockAwsServiceEndpoint = new MockAwsServiceEndpoint(); var mockConfig = new Mock <IConfig>(MockBehavior.Strict); IConfig mockConfigObject = mockConfig.Object; mockConfig.Setup(config => config.GetAwsServiceEndpoint(It.Is <string>(s => s == mockServiceMetadata.ServiceId))).Returns(() => mockAwsServiceEndpoint); IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection = serviceCollection .AddLocalStack(configuration) .Replace(ServiceDescriptor.Singleton(_ => mockConfigObject)); if (!useAlternateNameAddServiceMethod) { serviceCollection.AddAwsService <IMockAmazonServiceWithServiceMetadata>(); } else { serviceCollection.AddAWSServiceLocalStack <IMockAmazonServiceWithServiceMetadata>(); } ServiceProvider provider = serviceCollection.BuildServiceProvider(); var mockAmazonService = provider.GetRequiredService <IMockAmazonServiceWithServiceMetadata>(); IClientConfig clientConfig = mockAmazonService.Config; Assert.Equal(mockAwsServiceEndpoint.ServiceUrl, clientConfig.ServiceURL); Assert.True(clientConfig.UseHttp); Assert.Equal(mockAwsServiceEndpoint.Host, clientConfig.ProxyHost); Assert.Equal(mockAwsServiceEndpoint.Port, clientConfig.ProxyPort); }