public void DefaultConstructor_InitializedWithDefaults()
        {
            // Arrange
            ConfigServerClientSettings settings = new ConfigServerClientSettings();

            // Act and Assert
            ConfigServerTestHelpers.VerifyDefaults(settings);
        }
        public void AddConfigServer_ThrowsIfSettingsNull()
        {
            IConfigurationBuilder      configurationBuilder = new ConfigurationBuilder();
            ConfigServerClientSettings defaultSettings      = null;

            var ex = Assert.Throws <ArgumentNullException>(() => ConfigServerConfigurationBuilderExtensions.AddConfigServer(configurationBuilder, defaultSettings));

            Assert.Contains(nameof(defaultSettings), ex.Message);
        }
        public void AddConfigServer_HandlesPlaceHolders()
        {
            // Arrange
            var appsettings = @"
                {
                    ""foo"": {
                        ""bar"": {
                            ""name"": ""testName""
                        },
                    },
                    ""spring"": {
                        ""application"": {
                            ""name"": ""myName""
                        },
                      ""cloud"": {
                        ""config"": {
                            ""uri"": ""https://*****:*****@foo.com:9999"",
                            ""enabled"": false,
                            ""failFast"": false,
                            ""name"": ""${foo:bar:name?foobar}"",
                            ""label"": ""myLabel"",
                            ""username"": ""myUsername"",
                            ""password"": ""myPassword""
                        }
                      }
                    }
                }";

            var path = TestHelpers.CreateTempFile(appsettings);

            string directory = Path.GetDirectoryName(path);
            string fileName  = Path.GetFileName(path);
            ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.SetBasePath(directory);

            var environment = HostingHelpers.GetHostingEnvironment("Production");

            configurationBuilder.AddJsonFile(fileName);

            // Act and Assert
            configurationBuilder.AddConfigServer(environment);
            IConfigurationRoot config = configurationBuilder.Build();
            ConfigServerConfigurationProvider configServerProvider = config.Providers.OfType <ConfigServerConfigurationProvider>().SingleOrDefault();

            Assert.NotNull(configServerProvider);
            ConfigServerClientSettings settings = configServerProvider.Settings;

            Assert.False(settings.Enabled);
            Assert.False(settings.FailFast);
            Assert.Equal("https://*****:*****@foo.com:9999", settings.Uri);
            Assert.Equal(ConfigServerClientSettings.DEFAULT_ENVIRONMENT, settings.Environment);
            Assert.Equal("testName", settings.Name);
            Assert.Equal("myLabel", settings.Label);
            Assert.Equal("myUsername", settings.Username);
            Assert.Equal("myPassword", settings.Password);
        }
        public void GetPassword_MultipleUrisWithUserPass_ReturnsNull()
        {
            var settings = new ConfigServerClientSettings()
            {
                Uri = "https://*****:*****@localhost:8888/, https://user1:pass1@localhost:9999/"
            };

            Assert.Null(settings.Password);
        }
Exemple #5
0
        public void AddConfigServer_HandlesPlaceHolders()
        {
            // Arrange
            var appsettings = @"
{
    'foo': {
        'bar': {
            'name': 'testName'
        },
    },
    'spring': {
        'application': {
            'name': 'myName'
        },
      'cloud': {
        'config': {
            'uri': 'https://*****:*****@foo.com:9999',
            'enabled': false,
            'failFast': false,
            'name': '${foo:bar:name?foobar}',
            'label': 'myLabel',
            'username': '******',
            'password': '******'
        }
      }
    }
}";

            var path = TestHelpers.CreateTempFile(appsettings);

            string directory = Path.GetDirectoryName(path);
            string fileName  = Path.GetFileName(path);
            ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.SetBasePath(directory);

            var environment = new HostingEnvironment();

            configurationBuilder.AddJsonFile(fileName);

            // Act and Assert
            configurationBuilder.AddConfigServer(environment);
            IConfigurationRoot config = configurationBuilder.Build();
            ConfigServerConfigurationProvider configServerProvider = config.Providers.OfType <ConfigServerConfigurationProvider>().SingleOrDefault();

            Assert.NotNull(configServerProvider);
            ConfigServerClientSettings settings = configServerProvider.Settings;

            Assert.False(settings.Enabled);
            Assert.False(settings.FailFast);
            Assert.Equal("https://*****:*****@foo.com:9999", settings.Uri);
            Assert.Equal(ConfigServerClientSettings.DEFAULT_ENVIRONMENT, settings.Environment);
            Assert.Equal("testName", settings.Name);
            Assert.Equal("myLabel", settings.Label);
            Assert.Equal("myUsername", settings.Username);
            Assert.Equal("myPassword", settings.Password);
        }
        public void GetUserName_GoodWithUserPassOnUri()
        {
            var settings = new ConfigServerClientSettings()
            {
                Uri = "https://*****:*****@localhost:8888/"
            };

            Assert.Equal("user", settings.Username);
        }
        public void GetPassword_GoodWithUserPassOnUri()
        {
            var settings = new ConfigServerClientSettings()
            {
                Uri = "https://*****:*****@localhost:8888/"
            };

            Assert.Equal("pass", settings.Password);
        }
        public void GetRawUris_Bad()
        {
            var settings = new ConfigServerClientSettings()
            {
                Uri = "blahblah"
            };

            Assert.Empty(settings.RawUris);
        }
        public void GetRawUris_GoodWithUserPass()
        {
            var settings = new ConfigServerClientSettings()
            {
                Uri = "https://*****:*****@localhost:8888/"
            };

            Assert.Equal("https://localhost:8888/", settings.RawUris[0]);
        }
        public void Initialize_WithDefaultSettings()
        {
            var            prefix   = "spring:cloud:config";
            var            settings = new ConfigServerClientSettings();
            IConfiguration config   = new ConfigurationRoot(new List <IConfigurationProvider>());

            ConfigurationSettingsHelper.Initialize(prefix, settings, config);
            TestHelper.VerifyDefaults(settings);
        }
        public void AddConfigServer_XmlAppSettingsConfiguresClient()
        {
            // Arrange
            var    appsettings = @"
<settings>
    <spring>
      <cloud>
        <config>
            <uri>http://foo.com:9999</uri>
            <enabled>false</enabled>
            <failFast>false</failFast>
            <label>myLabel</label>
            <name>myName</name>
            <username>myUsername</username>
            <password>myPassword</password>
        </config>
      </cloud>
    </spring>
</settings>";
            var    path        = TestHelpers.CreateTempFile(appsettings);
            string directory   = Path.GetDirectoryName(path);
            string fileName    = Path.GetFileName(path);
            ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.SetBasePath(directory);

            var csettings = new ConfigServerClientSettings();

            configurationBuilder.AddXmlFile(fileName);

            // Act and Assert
            configurationBuilder.AddConfigServer(csettings);
            IConfigurationRoot root = configurationBuilder.Build();

            ConfigServerConfigurationProvider configServerProvider = null;

            foreach (IConfigurationSource source in configurationBuilder.Sources)
            {
                configServerProvider = source as ConfigServerConfigurationProvider;
                if (configServerProvider != null)
                {
                    break;
                }
            }

            Assert.NotNull(configServerProvider);
            ConfigServerClientSettings settings = configServerProvider.Settings;

            Assert.False(settings.Enabled);
            Assert.False(settings.FailFast);
            Assert.Equal("http://foo.com:9999", settings.Uri);
            Assert.Equal(ConfigServerClientSettings.DEFAULT_ENVIRONMENT, settings.Environment);
            Assert.Equal("myName", settings.Name);
            Assert.Equal("myLabel", settings.Label);
            Assert.Equal("myUsername", settings.Username);
            Assert.Equal("myPassword", settings.Password);
        }
        public void GetUserName_MultipleUrisWithUserPass_ReturnsUserNameSetting()
        {
            var settings = new ConfigServerClientSettings()
            {
                Uri      = "https://*****:*****@localhost:8888/, https://user1:pass1@localhost:9999/",
                Username = "******"
            };

            Assert.Equal("user", settings.Username);
        }
        public void GetPassword_GoodWithUserPassOnUri_SettingsOverrides()
        {
            var settings = new ConfigServerClientSettings()
            {
                Uri = "https://*****:*****@localhost:8888/", Password = "******"
            };

            Assert.Equal("explicitOverrides", settings.Password);
            Assert.Equal("user", settings.Username);
        }
Exemple #14
0
        public void ThrowsOnNulls()
        {
            var config   = new ConfigurationBuilder().Build();
            var settings = new ConfigServerClientSettings();
            var ex       = Assert.Throws <ArgumentNullException>(() => new ConfigServerDiscoveryService(null, settings));
            var ex2      = Assert.Throws <ArgumentNullException>(() => new ConfigServerDiscoveryService(config, null));

            Assert.Equal("configuration", ex.ParamName);
            Assert.Equal("settings", ex2.ParamName);
        }
Exemple #15
0
        public void GetLabels_Null()
        {
            ConfigServerClientSettings        settings = new ConfigServerClientSettings();
            ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings);

            string[] result = provider.GetLabels();
            Assert.NotNull(result);
            Assert.Single(result);
            Assert.Equal(string.Empty, result[0]);
        }
Exemple #16
0
        public void SettingsConstructor__ThrowsIfSettingsNull()
        {
            // Arrange
            ConfigServerClientSettings settings = null;

            // Act and Assert
            var ex = Assert.Throws <ArgumentNullException>(() => new ConfigServerConfigurationProvider(settings));

            Assert.Contains(nameof(settings), ex.Message);
        }
        public void Constructors__ThrowsIfNulls()
        {
            ConfigServerClientSettings settings = null;

            var ex = Assert.Throws <ArgumentNullException>(() => new ConfigServerConfigurationSource((IConfiguration)null));

            ex = Assert.Throws <ArgumentNullException>(() => new ConfigServerConfigurationSource(settings, (IConfiguration)null, null));
            ex = Assert.Throws <ArgumentNullException>(() => new ConfigServerConfigurationSource((IList <IConfigurationSource>)null, null));
            ex = Assert.Throws <ArgumentNullException>(() => new ConfigServerConfigurationSource(settings, new List <IConfigurationSource>(), null));
        }
        public void GetConfigServerUri_NoLabel()
        {
            // Arrange
            ConfigServerClientSettings settings = new ConfigServerClientSettings() { Name = "myName", Environment = "Production" };
            ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings);

            // Act and Assert
            string path = provider.GetConfigServerUri();
            Assert.Equal(settings.Uri + "/" + settings.Name + "/" + settings.Environment, path);
        }
        public void SettingsConstructor__WithLoggerFactorySucceeds()
        {
            // Arrange
            LoggerFactory logFactory = new LoggerFactory();
            ConfigServerClientSettings settings = new ConfigServerClientSettings();

            // Act and Assert
            var provider = new ConfigServerConfigurationProvider(settings, logFactory);
            Assert.NotNull(provider.Logger);
        }
        public void SettingsConstructor__ThrowsIfHttpClientNull()
        {
            // Arrange
            ConfigServerClientSettings settings = new ConfigServerClientSettings();
            HttpClient httpClient = null;

            // Act and Assert
            var ex = Assert.Throws<ArgumentNullException>(() => new ConfigServerConfigurationProvider(settings, httpClient));
            Assert.Contains(nameof(httpClient), ex.Message);
        }
Exemple #21
0
        public void AddConfigServer_IniAppSettingsConfiguresClient()
        {
            // Arrange
            var    appsettings = @"
[spring:cloud:config]
    uri=http://foo.com:9999
    enabled=false
    failFast=false
    label=myLabel
    name=myName
    username=myUsername
    password=myPassword
";
            var    path        = TestHelpers.CreateTempFile(appsettings);
            string directory   = Path.GetDirectoryName(path);
            string fileName    = Path.GetFileName(path);
            ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.SetBasePath(directory);

            var environment = new HostingEnvironment();

            configurationBuilder.AddIniFile(fileName);

            // Act and Assert
            configurationBuilder.AddConfigServer(environment);
            IConfigurationRoot root = configurationBuilder.Build();

            ConfigServerConfigurationProvider configServerProvider = null;

            foreach (IConfigurationSource source in configurationBuilder.Sources)
            {
                configServerProvider = source as ConfigServerConfigurationProvider;
                if (configServerProvider != null)
                {
                    break;
                }
            }

            Assert.NotNull(configServerProvider);
            ConfigServerClientSettings settings = configServerProvider.Settings;

            // Act and Assert
            Assert.False(settings.Enabled);
            Assert.False(settings.FailFast);
            Assert.Equal("http://foo.com:9999", settings.Uri);
            Assert.Equal(ConfigServerClientSettings.DEFAULT_ENVIRONMENT, settings.Environment);
            Assert.Equal("myName", settings.Name);
            Assert.Equal("myLabel", settings.Label);
            Assert.Equal("myUsername", settings.Username);
            Assert.Equal("myPassword", settings.Password);
            Assert.Null(settings.AccessTokenUri);
            Assert.Null(settings.ClientId);
            Assert.Null(settings.ClientSecret);
        }
        public void AddConfigServer_AddsConfigServerSourceToList()
        {
            var configurationBuilder = new ConfigurationBuilder();
            var settings             = new ConfigServerClientSettings();

            configurationBuilder.AddConfigServer(settings);

            var configServerSource = configurationBuilder.Sources.OfType <ConfigServerConfigurationSource>().SingleOrDefault();

            Assert.NotNull(configServerSource);
        }
        public async Task RemoteLoadAsync_ConfigServerReturnsGood()
        {
            // Arrange
            var environment = @"
                {
                    ""name"": ""testname"",
                    ""profiles"": [""Production""],
                    ""label"": ""testlabel"",
                    ""version"": ""testversion"",
                    ""propertySources"": [ 
                        { 
                            ""name"": ""source"",
                            ""source"": {
                                ""key1"": ""value1"",
                                ""key2"": 10
                            }
                        }
                    ]
                }";
            var envir       = HostingHelpers.GetHostingEnvironment();

            TestConfigServerStartup.Reset();
            TestConfigServerStartup.Response = environment;
            var builder = new WebHostBuilder().UseStartup <TestConfigServerStartup>().UseEnvironment(envir.EnvironmentName);
            var server  = new TestServer(builder);

            var settings = new ConfigServerClientSettings
            {
                Uri  = "http://localhost:8888",
                Name = "myName"
            };

            server.BaseAddress = new Uri(settings.Uri);
            var provider = new ConfigServerConfigurationProvider(settings, server.CreateClient());

            // Act and Assert
            var env = await provider.RemoteLoadAsync(settings.GetUris(), null);

            Assert.NotNull(TestConfigServerStartup.LastRequest);
            Assert.Equal("/" + settings.Name + "/" + settings.Environment, TestConfigServerStartup.LastRequest.Path.Value);
            Assert.NotNull(env);
            Assert.Equal("testname", env.Name);
            Assert.NotNull(env.Profiles);
            Assert.Single(env.Profiles);
            Assert.Equal("testlabel", env.Label);
            Assert.Equal("testversion", env.Version);
            Assert.NotNull(env.PropertySources);
            Assert.Single(env.PropertySources);
            Assert.Equal("source", env.PropertySources[0].Name);
            Assert.NotNull(env.PropertySources[0].Source);
            Assert.Equal(2, env.PropertySources[0].Source.Count);
            Assert.Equal("value1", env.PropertySources[0].Source["key1"].ToString());
            Assert.Equal(10L, long.Parse(env.PropertySources[0].Source["key2"].ToString()));
        }
        public void SettingsConstructor__ThrowsIfEnvironmentNull()
        {
            // Arrange
            var        settings   = new ConfigServerClientSettings();
            HttpClient httpClient = null;

            // Act and Assert
            var ex = Assert.Throws <ArgumentNullException>(() => new ConfigServerConfigurationProvider(settings, httpClient, null));

            Assert.Contains(nameof(httpClient), ex.Message);
        }
        public void GetPassword_MultipleUrisWithUserPass_SettingsOverrides()
        {
            var settings = new ConfigServerClientSettings()
            {
                Uri      = "https://*****:*****@localhost:8888/, https://user1:pass1@localhost:9999/",
                Password = "******"
            };

            Assert.Equal("explicitOverrides", settings.Password);
            Assert.Null(settings.Username);
        }
        public void GetLabels_Null()
        {
            IHostingEnvironment               envir    = new HostingEnvironment();
            ConfigServerClientSettings        settings = new ConfigServerClientSettings();
            ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings, envir);

            string[] result = provider.GetLabels();
            Assert.NotNull(result);
            Assert.Equal(1, result.Length);
            Assert.Equal("", result[0]);
        }
#pragma warning disable SA1202 // Elements should be ordered by access
        public void GetLabels_Null()
#pragma warning restore SA1202 // Elements should be ordered by access
        {
            ConfigServerClientSettings        settings = new ConfigServerClientSettings();
            ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings);

            string[] result = provider.GetLabels();
            Assert.NotNull(result);
            Assert.Single(result);
            Assert.Equal(string.Empty, result[0]);
        }
Exemple #28
0
        public void GetUserName_MultipleUrisWithUserPass_ReturnsNull()
        {
            // Arrange
            ConfigServerClientSettings settings = new ConfigServerClientSettings()
            {
                Uri = "https://*****:*****@localhost:8888/, https://user1:pass1@localhost:9999/"
            };

            // Act and Assert
            Assert.Null(settings.Username);
        }
Exemple #29
0
        public void SettingsConstructor__WithLoggerFactorySucceeds()
        {
            // Arrange
            LoggerFactory logFactory            = new LoggerFactory();
            ConfigServerClientSettings settings = new ConfigServerClientSettings();

            // Act and Assert
            var provider = new ConfigServerConfigurationProvider(settings, logFactory);

            Assert.NotNull(provider.Logger);
        }
Exemple #30
0
        public void GetRawUris_Bad()
        {
            // Arrange
            ConfigServerClientSettings settings = new ConfigServerClientSettings()
            {
                Uri = "blahblah"
            };

            // Act and Assert
            Assert.Empty(settings.RawUris);
        }
        public void GetRawUri_Bad()
        {
            // Arrange
            ConfigServerClientSettings settings = new ConfigServerClientSettings()
            {
                Uri = "blahblah"
            };

            // Act and Assert
            Assert.Equal("blahblah", settings.RawUri);
        }
Exemple #32
0
        public async void RemoteLoadAsync_ConfigServerReturnsGood()
        {
            // Arrange
            var environment           = @"
{
    'name': 'testname',
    'profiles': ['Production'],
    'label': 'testlabel',
    'version': 'testversion',
    'propertySources': [ 
        { 
            'name': 'source',
            'source': {
                'key1': 'value1',
                'key2': 10
            }
        }
    ]
}";
            IHostingEnvironment envir = new HostingEnvironment();

            TestConfigServerStartup.Reset();
            TestConfigServerStartup.Response = environment;
            var builder = new WebHostBuilder().UseStartup <TestConfigServerStartup>().UseEnvironment(envir.EnvironmentName);
            var server  = new TestServer(builder);

            ConfigServerClientSettings settings = new ConfigServerClientSettings
            {
                Uri  = "http://localhost:8888",
                Name = "myName"
            };

            server.BaseAddress = new Uri(settings.Uri);
            ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings, server.CreateClient());

            // Act and Assert
            ConfigEnvironment env = await provider.RemoteLoadAsync(settings.GetUris(), null);

            Assert.NotNull(TestConfigServerStartup.LastRequest);
            Assert.Equal("/" + settings.Name + "/" + settings.Environment, TestConfigServerStartup.LastRequest.Path.Value);
            Assert.NotNull(env);
            Assert.Equal("testname", env.Name);
            Assert.NotNull(env.Profiles);
            Assert.Single(env.Profiles);
            Assert.Equal("testlabel", env.Label);
            Assert.Equal("testversion", env.Version);
            Assert.NotNull(env.PropertySources);
            Assert.Single(env.PropertySources);
            Assert.Equal("source", env.PropertySources[0].Name);
            Assert.NotNull(env.PropertySources[0].Source);
            Assert.Equal(2, env.PropertySources[0].Source.Count);
            Assert.Equal("value1", env.PropertySources[0].Source["key1"]);
            Assert.Equal((long)10, env.PropertySources[0].Source["key2"]);
        }
        public void GetRawUri_GoodWithUserPass()
        {
            // Arrange
            ConfigServerClientSettings settings = new ConfigServerClientSettings()
            {
                Uri = "https://*****:*****@localhost:8888/"
            };

            // Act and Assert
            Assert.Equal("https://localhost:8888/", settings.RawUri);
        }
Exemple #34
0
        public void GetUserName_GoodWithUserPassOnUri_SettingsOverrides()
        {
            // Arrange
            ConfigServerClientSettings settings = new ConfigServerClientSettings()
            {
                Uri = "https://*****:*****@localhost:8888/", Username = "******"
            };

            // Act and Assert
            Assert.Equal("explicitOverrides", settings.Username);
            Assert.Equal("pass", settings.Password);
        }
 public static void VerifyDefaults(ConfigServerClientSettings settings)
 {
     Assert.Equal(ConfigServerClientSettings.DEFAULT_PROVIDER_ENABLED, settings.Enabled);
     Assert.Equal(ConfigServerClientSettings.DEFAULT_FAILFAST, settings.FailFast);
     Assert.Equal(ConfigServerClientSettings.DEFAULT_URI, settings.Uri);
     Assert.Equal(ConfigServerClientSettings.DEFAULT_ENVIRONMENT, settings.Environment);
     Assert.Equal(ConfigServerClientSettings.DEFAULT_CERTIFICATE_VALIDATION, settings.ValidateCertificates);
     Assert.Null(settings.Name);
     Assert.Null(settings.Label);
     Assert.Null(settings.Username);
     Assert.Null(settings.Password);
 }
        public void Load_ChangesDataDictionary()
        {
            // Arrange
            var environment = @"
{
    'name': 'testname',
    'profiles': ['Production'],
    'label': 'testlabel',
    'version': 'testversion',
    'propertySources': [ 
        { 
            'name': 'source',
            'source': {
                'key1': 'value1',
                'key2': 10
            }
        }
    ]
}";
            var startup = new TestConfigServerStartup(environment, 200);
            var server = TestServer.Create(startup.Configure);
            ConfigServerClientSettings settings = new ConfigServerClientSettings();
            settings.Name = "myName";
            server.BaseAddress = new Uri(settings.Uri);
            ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings, server.CreateClient());

            // Act and Assert
            provider.Load();
            Assert.NotNull(startup.LastRequest);
            Assert.Equal("/" + settings.Name + "/" + settings.Environment, startup.LastRequest.Path.Value);

            string value;
            Assert.True(provider.TryGet("key1", out value));
            Assert.Equal("value1", value);
            Assert.True(provider.TryGet("key2", out value));
            Assert.Equal("10", value);
        }
        public void Load_ConfigServerReturnsNotFoundStatus()
        {
            // Arrange
            var startup = new TestConfigServerStartup("", 404);
            var server = TestServer.Create(startup.Configure);
            ConfigServerClientSettings settings = new ConfigServerClientSettings();
            settings.Name = "myName";
            server.BaseAddress = new Uri(settings.Uri);
            ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings, server.CreateClient());

            // Act and Assert
            provider.Load();
            Assert.NotNull(startup.LastRequest);
            Assert.Equal("/" + settings.Name + "/" + settings.Environment, startup.LastRequest.Path.Value);
            Assert.Equal(12, provider.Properties.Count);
        }
        public async void RemoteLoadAsync_ConfigServerReturnsGood()
        {
            // Arrange
            var environment = @"
{
    'name': 'testname',
    'profiles': ['Production'],
    'label': 'testlabel',
    'version': 'testversion',
    'propertySources': [ 
        { 
            'name': 'source',
            'source': {
                'key1': 'value1',
                'key2': 10
            }
        }
    ]
}";
            var startup = new TestConfigServerStartup(environment, 200);
            var server = TestServer.Create(startup.Configure);
            ConfigServerClientSettings settings = new ConfigServerClientSettings();
            settings.Name = "myName";
            server.BaseAddress = new Uri(settings.Uri);
            ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings, server.CreateClient());
            string path = provider.GetConfigServerUri();

            // Act and Assert
            Environment env = await provider.RemoteLoadAsync(path);
            Assert.NotNull(startup.LastRequest);
            Assert.Equal("/" + settings.Name + "/" + settings.Environment, startup.LastRequest.Path.Value);
            Assert.NotNull(env);
            Assert.Equal("testname", env.Name);
            Assert.NotNull(env.Profiles);
            Assert.Equal(1, env.Profiles.Count);
            Assert.Equal("testlabel", env.Label);
            Assert.Equal("testversion", env.Version);
            Assert.NotNull(env.PropertySources);
            Assert.Equal(1, env.PropertySources.Count);
            Assert.Equal("source", env.PropertySources[0].Name);
            Assert.NotNull(env.PropertySources[0].Source);
            Assert.Equal(2, env.PropertySources[0].Source.Count);
            Assert.Equal("value1", env.PropertySources[0].Source["key1"]);
            Assert.Equal((long)10, env.PropertySources[0].Source["key2"]);
        }
        public void AddConfigServerClientSettings_ChangesDataDictionary()
        {
            // Arrange
            ConfigServerClientSettings settings = new ConfigServerClientSettings();
            settings.AccessTokenUri = "http://foo.bar/";
            settings.ClientId = "client_id";
            settings.ClientSecret = "client_secret";
            settings.Enabled = true;
            settings.Environment = "environment";
            settings.FailFast = false;
            settings.Label = "label";
            settings.Name = "name";
            settings.Password = "******";
            settings.Uri = "http://foo.bar/";
            settings.Username = "******";
            settings.ValidateCertificates = false;
            ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider();


            // Act and Assert
            provider.AddConfigServerClientSettings(settings);

            string value;
            Assert.True(provider.TryGet("spring:cloud:config:access_token_uri", out value));
            Assert.Equal("http://foo.bar/", value);
            Assert.True(provider.TryGet("spring:cloud:config:client_id", out value));
            Assert.Equal("client_id", value);
            Assert.True(provider.TryGet("spring:cloud:config:client_secret", out value));
            Assert.Equal("client_secret", value);
            Assert.True(provider.TryGet("spring:cloud:config:env", out value));
            Assert.Equal("environment", value);
            Assert.True(provider.TryGet("spring:cloud:config:label", out value));
            Assert.Equal("label", value);
            Assert.True(provider.TryGet("spring:cloud:config:name", out value));
            Assert.Equal("name", value);
            Assert.True(provider.TryGet("spring:cloud:config:password", out value));
            Assert.Equal("password", value);
            Assert.True(provider.TryGet("spring:cloud:config:uri", out value));
            Assert.Equal("http://foo.bar/", value);
            Assert.True(provider.TryGet("spring:cloud:config:username", out value));
            Assert.Equal("username", value);

            Assert.True(provider.TryGet("spring:cloud:config:enabled", out value));
            Assert.Equal("True", value);
            Assert.True(provider.TryGet("spring:cloud:config:failFast", out value));
            Assert.Equal("False", value);
            Assert.True(provider.TryGet("spring:cloud:config:validate_certificates", out value));
            Assert.Equal("False", value);

        }
        public async void RemoteLoadAsync_ConfigServerReturnsNotOkStatus()
        {
            // Arrange
            var startup = new TestConfigServerStartup("",500);
            var server = TestServer.Create(startup.Configure);
            ConfigServerClientSettings settings = new ConfigServerClientSettings();
            settings.Name = "myName";
            server.BaseAddress = new Uri(settings.Uri);
            ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings, server.CreateClient());
            string path = provider.GetConfigServerUri();

            // Act and Assert
            Environment result = await provider.RemoteLoadAsync(path);
            Assert.NotNull(startup.LastRequest);
            Assert.Equal("/" + settings.Name + "/" + settings.Environment, startup.LastRequest.Path.Value);
            Assert.Null(result);
        }