private Mock <IEnvironmentVariableRetriever> BuildEnvironmentVariableMock( DefaultConfigurationMode?awsDefaultModeValue = null) { var mockEnvironmentVariableProvider = new Mock <IEnvironmentVariableRetriever>(); mockEnvironmentVariableProvider .Setup(x => x.GetEnvironmentVariable(It.Is <string>(e => e == "AWS_DEFAULTS_MODE"))) .Returns(awsDefaultModeValue?.ToString()); return(mockEnvironmentVariableProvider); }
/// <inheritdoc cref="IDefaultConfigurationProvider"/> public IDefaultConfiguration GetDefaultConfiguration( RegionEndpoint clientRegion, DefaultConfigurationMode?requestedConfigurationMode = null) { var defaultConfigurationModeName = // 1) requested mode requestedConfigurationMode?.ToString() ?? // 2) try to get from environment variable _environmentVariableRetriever.GetEnvironmentVariable(AWS_DEFAULTS_MODE_ENVIRONMENT_VARIABLE) ?? // 3) try to get from shared config/credential file FallbackInternalConfigurationFactory.DefaultConfigurationModeName ?? // 4) fallback to 'Legacy' DefaultConfigurationMode.Legacy.ToString(); Logger .GetLogger(GetType()) .InfoFormat( $"Resolved {nameof(DefaultConfigurationMode)} for {nameof(RegionEndpoint)} [{clientRegion?.SystemName}] to [{defaultConfigurationModeName}]."); try { var mode = (DefaultConfigurationMode) Enum.Parse(typeof(DefaultConfigurationMode), defaultConfigurationModeName, ignoreCase: true); if (mode == DefaultConfigurationMode.Auto) { mode = _defaultConfigurationAutoModeResolver.Resolve(clientRegion, () => EC2InstanceMetadata.Region); } // save resolved values to cache return(_availableConfigurations.First(x => x.Name == mode)); } catch (Exception) { throw new AmazonClientException( $"Failed to find requested Default Configuration Mode '{defaultConfigurationModeName}'. " + $"Valid values are {string.Join(",", Enum.GetNames(typeof(DefaultConfigurationMode)))}"); } }
public void OrderOfOperationsTest( DefaultConfigurationMode?clientConfigDefaultMode, DefaultConfigurationMode?environmentVariableDefaultMode, DefaultConfigurationMode?sharedConfigDefaultMode, DefaultConfigurationMode expectedDefaultMode) { // ARRANGE var mockEnvironmentVariableProvider = BuildEnvironmentVariableMock(environmentVariableDefaultMode); var mockAutoModeResolver = new Mock <IDefaultConfigurationAutoModeResolver>(); var clientConfig = new TestClientConfig( new DefaultConfigurationProvider( mockEnvironmentVariableProvider.Object, mockAutoModeResolver.Object, _fakeDefaultConfigurations)); if (clientConfigDefaultMode.HasValue) { clientConfig.DefaultConfigurationMode = clientConfigDefaultMode.Value; } var sharedConfigFile = "[default]\r\n" + $"defaults_mode={sharedConfigDefaultMode?.ToString()}"; TimeSpan?actualTimeout; using (new FallbackFactoryTest.FallbackFactoryTestFixture(sharedConfigFile, "default")) { // ACT actualTimeout = clientConfig.Timeout; } // ASSERT var expectedMode = _fakeDefaultConfigurations.First(x => x.Name == expectedDefaultMode); Assert.AreEqual(expectedMode.TimeToFirstByteTimeout, actualTimeout); }