示例#1
0
        public void CreateClient_Should_Create_ClientConfig_With_ServiceURL_UseHttp_ProxyHost_ProxyPort()
        {
            MockSession      mockSession         = MockSession.Create();
            IServiceMetadata mockServiceMetadata = new MockServiceMetadata();
            var mockAwsServiceEndpoint           = new MockAwsServiceEndpoint();
            var mockClientConfig = new MockClientConfig();

            mockSession.SessionOptionsMock.SetupGet(options => options.AwsAccessKeyId).Returns("AwsAccessKeyId");
            mockSession.SessionOptionsMock.SetupGet(options => options.AwsAccessKey).Returns("AwsAccessKey");
            mockSession.SessionOptionsMock.SetupGet(options => options.AwsSessionToken).Returns("AwsSessionToken");
            mockSession.SessionReflectionMock.Setup(reflection => reflection.ExtractServiceMetadata <MockAmazonServiceClient>()).Returns(() => mockServiceMetadata);
            mockSession.SessionReflectionMock.Setup(reflection => reflection.CreateClientConfig <MockAmazonServiceClient>()).Returns(() => mockClientConfig);
            mockSession.SessionReflectionMock.Setup(reflection => reflection.SetForcePathStyle(mockClientConfig, true)).Returns(() => true);
            mockSession.ConfigMock.Setup(config => config.GetAwsServiceEndpoint(It.IsAny <string>())).Returns(() => mockAwsServiceEndpoint);

            var mockAmazonServiceClient = mockSession.CreateClient <MockAmazonServiceClient>();

            Assert.NotNull(mockAmazonServiceClient);

            IClientConfig clientConfig = mockAmazonServiceClient.Config;

            Assert.Equal(mockAwsServiceEndpoint.ServiceUrl, clientConfig.ServiceURL);
            Assert.True(clientConfig.UseHttp);
            Assert.Equal(mockAwsServiceEndpoint.Host, clientConfig.ProxyHost);
            Assert.Equal(mockAwsServiceEndpoint.Port, clientConfig.ProxyPort);
        }
示例#2
0
        public void CreateClient_Should_Create_SessionAWSCredentials_With_AwsAccessKeyId_And_AwsAccessKey_And_AwsSessionToken()
        {
            MockSession      mockSession         = MockSession.Create();
            IServiceMetadata mockServiceMetadata = new MockServiceMetadata();
            var          mockAwsServiceEndpoint  = new MockAwsServiceEndpoint();
            var          mockClientConfig        = new MockClientConfig();
            const string awsAccessKeyId          = "AwsAccessKeyId";
            const string awsAccessKey            = "AwsAccessKey";
            const string awsSessionToken         = "AwsSessionToken";

            mockSession.SessionOptionsMock.SetupGet(options => options.AwsAccessKeyId).Returns(awsAccessKeyId);
            mockSession.SessionOptionsMock.SetupGet(options => options.AwsAccessKey).Returns(awsAccessKey);
            mockSession.SessionOptionsMock.SetupGet(options => options.AwsSessionToken).Returns(awsSessionToken);
            mockSession.SessionReflectionMock.Setup(reflection => reflection.ExtractServiceMetadata <MockAmazonServiceClient>()).Returns(() => mockServiceMetadata);
            mockSession.SessionReflectionMock.Setup(reflection => reflection.CreateClientConfig <MockAmazonServiceClient>()).Returns(() => mockClientConfig);
            mockSession.SessionReflectionMock.Setup(reflection => reflection.SetForcePathStyle(mockClientConfig, true)).Returns(() => true);
            mockSession.ConfigMock.Setup(config => config.GetAwsServiceEndpoint(It.IsAny <string>())).Returns(() => mockAwsServiceEndpoint);

            var mockAmazonServiceClient = mockSession.CreateClient <MockAmazonServiceClient>();

            Assert.NotNull(mockAmazonServiceClient);

            AWSCredentials awsCredentials = mockAmazonServiceClient.AwsCredentials;

            Assert.NotNull(awsCredentials);
            Assert.IsType <SessionAWSCredentials>(awsCredentials);

            var sessionAwsCredentials = (SessionAWSCredentials)awsCredentials;
            ImmutableCredentials immutableCredentials = sessionAwsCredentials.GetCredentials();

            Assert.Equal(awsAccessKeyId, immutableCredentials.AccessKey);
            Assert.Equal(awsAccessKey, immutableCredentials.SecretKey);
            Assert.Equal(awsSessionToken, immutableCredentials.Token);
        }
示例#3
0
        public void CreateClient_Should_Create_AmazonServiceClient_By_Given_Generic_Type()
        {
            MockSession      mockSession         = MockSession.Create();
            IServiceMetadata mockServiceMetadata = new MockServiceMetadata();
            var mockAwsServiceEndpoint           = new MockAwsServiceEndpoint();
            var mockClientConfig = new MockClientConfig();

            mockSession.SessionOptionsMock.SetupGet(options => options.AwsAccessKeyId).Returns("AwsAccessKeyId");
            mockSession.SessionOptionsMock.SetupGet(options => options.AwsAccessKey).Returns("AwsAccessKey");
            mockSession.SessionOptionsMock.SetupGet(options => options.AwsSessionToken).Returns("AwsSessionToken");

            mockSession.SessionOptionsMock.SetupGet(options => options.AwsAccessKeyId).Returns("AwsAccessKeyId");
            mockSession.SessionOptionsMock.SetupGet(options => options.AwsAccessKey).Returns("AwsAccessKey");
            mockSession.SessionOptionsMock.SetupGet(options => options.AwsSessionToken).Returns("AwsSessionToken");
            mockSession.SessionReflectionMock.Setup(reflection => reflection.ExtractServiceMetadata <MockAmazonServiceClient>()).Returns(() => mockServiceMetadata);
            mockSession.SessionReflectionMock.Setup(reflection => reflection.CreateClientConfig <MockAmazonServiceClient>()).Returns(() => mockClientConfig);
            mockSession.SessionReflectionMock.Setup(reflection => reflection.SetForcePathStyle(mockClientConfig, true)).Returns(() => true);
            mockSession.ConfigMock.Setup(config => config.GetAwsServiceEndpoint(It.IsAny <string>())).Returns(() => mockAwsServiceEndpoint);

            var mockAmazonServiceClient = mockSession.CreateClient <MockAmazonServiceClient>();

            Assert.NotNull(mockAmazonServiceClient);

            mockSession.ConfigMock.Verify(config => config.GetAwsServiceEndpoint(It.Is <string>(serviceId => serviceId == mockServiceMetadata.ServiceId)), Times.Once);
            mockSession.SessionReflectionMock.Verify(reflection => reflection.ExtractServiceMetadata <MockAmazonServiceClient>(), Times.Once);
            mockSession.SessionReflectionMock.Verify(reflection => reflection.CreateClientConfig <MockAmazonServiceClient>(), Times.Once);
            mockSession.SessionReflectionMock.Verify(reflection => reflection.SetForcePathStyle(It.Is <ClientConfig>(config => config == mockClientConfig), true),
                                                     Times.Once);
        }
示例#4
0
        public void CreateClient_Should_Throw_InvalidOperationException_If_Given_ServiceId_Is_Not_Supported()
        {
            MockSession      mockSession         = MockSession.Create();
            IServiceMetadata mockServiceMetadata = new MockServiceMetadata();

            mockSession.SessionReflectionMock.Setup(reflection => reflection.ExtractServiceMetadata <MockAmazonServiceClient>()).Returns(() => mockServiceMetadata);
            mockSession.ConfigMock.Setup(config => config.GetAwsServiceEndpoint(It.IsAny <string>())).Returns(() => null);

            Assert.Throws <InvalidOperationException>(() => mockSession.CreateClient <MockAmazonServiceClient>());

            mockSession.ConfigMock.Verify(config => config.GetAwsServiceEndpoint(It.Is <string>(serviceId => serviceId == mockServiceMetadata.ServiceId)), Times.Once);
        }
        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);
        }