public void Resolve(
            bool isMobile,
            string exeEnvVar,
            string regionEnvVar,
            string defaultRegionEnvVar,
            string awsEc2MetadataDisabled,
            string imdsRegion,
            string clientRegion,
            DefaultConfigurationMode expectedMode)
        {
            _runtimeInformationProvider.Setup(p => p.IsMobile()).Returns(isMobile);

            _environmentVariableRetriever.Setup(r => r.GetEnvironmentVariable(ExecutionEnvironmentEnvVar))
            .Returns(exeEnvVar);
            _environmentVariableRetriever.Setup(r => r.GetEnvironmentVariable(EnvironmentVariableAWSRegion.ENVIRONMENT_VARIABLE_REGION))
            .Returns(regionEnvVar);
            _environmentVariableRetriever.Setup(r => r.GetEnvironmentVariable(EnvironmentVariableAWSRegion.ENVIRONMENT_VARIABLE_DEFAULT_REGION))
            .Returns(defaultRegionEnvVar);
            _environmentVariableRetriever.Setup(r => r.GetEnvironmentVariable(EC2InstanceMetadata.AWS_EC2_METADATA_DISABLED))
            .Returns(awsEc2MetadataDisabled);

            var clientRegionEndpoint = clientRegion != null?RegionEndpoint.GetBySystemName(clientRegion) : null;

            var imdsRegionEndpoint = imdsRegion != null?RegionEndpoint.GetBySystemName(imdsRegion) : null;

            var mode = _resolver.Resolve(clientRegionEndpoint, () => imdsRegionEndpoint);

            Assert.Equal(expectedMode, mode);
        }
        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);
        }