public void DefaultConstructor_InitializedWithDefaultSettings() { // Arrange ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(); // Act and Assert ConfigServerTestHelpers.VerifyDefaults(provider.Settings); }
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 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 GetLabels_MultiStringHoles() { ConfigServerClientSettings settings = new ConfigServerClientSettings(); settings.Label = "1,,2,3,"; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings); string[] result = provider.GetLabels(); Assert.NotNull(result); Assert.Equal(3, result.Length); Assert.Equal("1", result[0]); Assert.Equal("2", result[1]); Assert.Equal("3", result[2]); }
public void GetConfigServerUri_WithEndingSlash() { // Arrange ConfigServerClientSettings settings = new ConfigServerClientSettings() { Uri = "http://localhost:9999/", Name = "myName", Environment = "Production" }; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings); // Act and Assert string path = provider.GetConfigServerUri(settings.RawUris[0], null); Assert.Equal("http://localhost:9999/" + settings.Name + "/" + settings.Environment, path); }
public void AddConfigServer_AddsConfigServerProviderToProvidersList() { // Arrange var configurationBuilder = new ConfigurationBuilder(); var environment = HostingHelpers.GetHostingEnvironment(); // Act and Assert configurationBuilder.AddConfigServer(environment); var config = configurationBuilder.Build(); ConfigServerConfigurationProvider configServerProvider = config.Providers.OfType <ConfigServerConfigurationProvider>().SingleOrDefault(); Assert.NotNull(configServerProvider); }
public void GetLabels_SingleString() { var settings = new ConfigServerClientSettings { Label = "foobar" }; var provider = new ConfigServerConfigurationProvider(settings); var result = provider.GetLabels(); Assert.NotNull(result); Assert.Single(result); Assert.Equal("foobar", result[0]); }
public void GetLabels_Empty() { var settings = new ConfigServerClientSettings { Label = string.Empty }; var provider = new ConfigServerConfigurationProvider(settings); var result = provider.GetLabels(); Assert.NotNull(result); Assert.Single(result); Assert.Equal(string.Empty, result[0]); }
public void GetConfigServerUri_WithExtraPathInfo() { // Arrange var settings = new ConfigServerClientSettings() { Uri = "http://localhost:9999/myPath/path/", Name = "myName", Environment = "Production" }; var provider = new ConfigServerConfigurationProvider(settings); // Act and Assert var path = provider.GetConfigServerUri(settings.RawUris[0], null); Assert.Equal("http://localhost:9999/myPath/path/" + settings.Name + "/" + settings.Environment, path); }
public void GetConfigServerUri_WithLabel() { // Arrange var settings = new ConfigServerClientSettings() { Name = "myName", Environment = "Production", Label = "myLabel" }; var provider = new ConfigServerConfigurationProvider(settings); // Act and Assert var path = provider.GetConfigServerUri(settings.RawUris[0], settings.Label); Assert.Equal(settings.RawUris[0] + settings.Name + "/" + settings.Environment + "/" + settings.Label, path); }
public void GetConfigServerUri_WithLabelContainingSlash() { // Arrange ConfigServerClientSettings settings = new ConfigServerClientSettings() { Name = "myName", Environment = "Production", Label = "myLabel/version" }; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings); // Act and Assert string path = provider.GetConfigServerUri(settings.RawUris[0], settings.Label); Assert.Equal(settings.RawUris[0] + settings.Name + "/" + settings.Environment + "/" + "myLabel(_)version", path); }
public void AddConfigServer_XmlAppSettingsConfiguresClient() { // Arrange var appsettings = @" <settings> <spring> <cloud> <config> <uri>https://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 environment = HostingHelpers.GetHostingEnvironment("Production"); configurationBuilder.AddXmlFile(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("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 GetConfigServerUri_NoLabel() { // Arrange ConfigServerClientSettings settings = new ConfigServerClientSettings() { Name = "myName", Environment = "Production" }; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings); // Act and Assert string path = provider.GetConfigServerUri(settings.RawUris[0], null); Assert.Equal(settings.RawUris[0] + settings.Name + "/" + settings.Environment, path); }
public void AddConfigServer_CommandLineAppSettingsConfiguresClient() { // Arrange var appsettings = new string[] { "spring:cloud:config:enabled=false", "--spring:cloud:config:failFast=false", "/spring:cloud:config:uri=http://foo.com:9999", "--spring:cloud:config:name", "myName", "/spring:cloud:config:label", "myLabel", "--spring:cloud:config:username", "myUsername", "--spring:cloud:config:password", "myPassword" }; var configurationBuilder = new ConfigurationBuilder(); var environment = new HostingEnvironment(); configurationBuilder.AddCommandLine(appsettings); // 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; 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 GetConfigServerUri_NoEndingSlash() { // Arrange IHostingEnvironment env = new HostingEnvironment(); ConfigServerClientSettings settings = new ConfigServerClientSettings() { Uri = "http://localhost:9999", Name = "myName", Environment = "Production" }; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings, env); // Act and Assert string path = provider.GetConfigServerUri(null); Assert.Equal("http://localhost:9999/" + settings.Name + "/" + settings.Environment, path); }
public void GetConfigServerUri_WithLabel() { // Arrange IHostingEnvironment env = new HostingEnvironment(); ConfigServerClientSettings settings = new ConfigServerClientSettings() { Name = "myName", Environment = "Production", Label = "myLabel" }; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings, env); // Act and Assert string path = provider.GetConfigServerUri(settings.Label); Assert.Equal(settings.RawUri + settings.Name + "/" + settings.Environment + "/" + settings.Label, path); }
public void AddConfigServer_WithLoggerFactorySucceeds() { // Arrange var configurationBuilder = new ConfigurationBuilder(); var loggerFactory = new LoggerFactory(); var environment = new HostingEnvironment(); // Act and Assert configurationBuilder.AddConfigServer(environment, loggerFactory); var config = configurationBuilder.Build(); ConfigServerConfigurationProvider configServerProvider = config.Providers.OfType <ConfigServerConfigurationProvider>().SingleOrDefault(); Assert.NotNull(configServerProvider); Assert.NotNull(configServerProvider.Logger); }
public void UpdateSettingsFromDiscovery_UpdatesSettingsCorrectly() { var values = new Dictionary <string, string>() { { "spring:cloud:config:discovery:enabled", "True" } }; IConfiguration configuration = new ConfigurationBuilder() .AddInMemoryCollection(values) .Build(); var settings = new ConfigServerClientSettings { Uri = "http://localhost:8888/", Name = "foo", Environment = "development" }; ConfigServerConfigurationSource source = new ConfigServerConfigurationSource(settings, configuration); var provider = new ConfigServerConfigurationProvider(source); provider.UpdateSettingsFromDiscovery(new List <IServiceInstance>(), settings); Assert.Null(settings.Username); Assert.Null(settings.Password); Assert.Equal("http://localhost:8888/", settings.Uri); var metadata1 = new Dictionary <string, string>() { { "password", "firstPassword" } }; var metadata2 = new Dictionary <string, string>() { { "password", "secondPassword" }, { "user", "secondUser" }, { "configPath", "configPath" } }; var instances = new List <IServiceInstance>() { new TestServiceInfo(new Uri("http://foo.bar:8888/"), metadata1), new TestServiceInfo(new Uri("http://foo.bar.baz:9999/"), metadata2) }; provider.UpdateSettingsFromDiscovery(instances, settings); Assert.Equal("secondUser", settings.Username); Assert.Equal("secondPassword", settings.Password); Assert.Equal("http://foo.bar:8888/,http://foo.bar.baz:9999/configPath", settings.Uri); }
public void AddConfigServerClientSettings_ChangesDataDictionary() { // Arrange ConfigServerClientSettings settings = new ConfigServerClientSettings(); IHostingEnvironment envir = new HostingEnvironment(); 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; settings.Token = "vaulttoken"; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings, envir); // Act and Assert provider.AddConfigServerClientSettings(); string 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); Assert.True(provider.TryGet("spring:cloud:config:token", out value)); Assert.Equal("vaulttoken", value); Assert.True(provider.TryGet("spring:cloud:config:timeout", out value)); Assert.Equal("3000", value); }
public void AddConfigServer_WithLoggerFactorySucceeds() { // Arrange var configurationBuilder = new ConfigurationBuilder(); var loggerFactory = new LoggerFactory(); var settings = new ConfigServerClientSettings(); // Act and Assert configurationBuilder.AddConfigServer(settings, loggerFactory); IConfigurationRoot config = configurationBuilder.Build(); ConfigServerConfigurationProvider configServerProvider = config.Providers.OfType <ConfigServerConfigurationProvider>().SingleOrDefault(); Assert.NotNull(configServerProvider); Assert.NotNull(configServerProvider.Logger); }
public void GetLabels_MultiString() { var settings = new ConfigServerClientSettings { Label = "1,2,3," }; var provider = new ConfigServerConfigurationProvider(settings); var result = provider.GetLabels(); Assert.NotNull(result); Assert.Equal(3, result.Length); Assert.Equal("1", result[0]); Assert.Equal("2", result[1]); Assert.Equal("3", result[2]); }
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 config = configurationBuilder.Build(); ConfigServerConfigurationProvider configServerProvider = config.Providers.OfType <ConfigServerConfigurationProvider>().SingleOrDefault(); 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 async Task Deserialize_GoodJsonAsync() { // Arrange var environment = new ConfigEnvironment { Name = "testname", Label = "testlabel", Profiles = new List <string> { "Production" }, Version = "testversion", State = "teststate", PropertySources = new List <PropertySource> { new PropertySource { Name = "source", Source = new Dictionary <string, object> { { "key1", "value1" }, { "key2", 10 } } } } }; var provider = new ConfigServerConfigurationProvider(); var content = JsonContent.Create(environment); // Act and Assert var env = await content.ReadFromJsonAsync <ConfigEnvironment>(provider.SerializerOptions); 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.Equal("teststate", env.State); 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 Load_ChangesDataDictionary() { // 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 provider.Load(); Assert.NotNull(TestConfigServerStartup.LastRequest); Assert.Equal("/" + settings.Name + "/" + settings.Environment, TestConfigServerStartup.LastRequest.Path.Value); Assert.True(provider.TryGet("key1", out string value)); Assert.Equal("value1", value); Assert.True(provider.TryGet("key2", out value)); Assert.Equal("10", value); }
public void AddConfigServer_Validate_Certificates_DisablesCertValidation() { // Arrange var appsettings = @" { 'spring': { 'cloud': { 'config': { 'validate_certificates': false } } } }"; 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); ConfigServerConfigurationProvider configServerProvider = null; foreach (IConfigurationSource source in configurationBuilder.Sources) { configServerProvider = source as ConfigServerConfigurationProvider; if (configServerProvider != null) { break; } } Assert.NotNull(configServerProvider); configurationBuilder.Build(); ConfigServerClientSettings settings = configServerProvider.Settings; Assert.False(settings.ValidateCertificates); }
public void Load_ChangesDataDictionary() { // 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); 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 provider.LoadInternal(); Assert.NotNull(TestConfigServerStartup.LastRequest); Assert.Equal("/" + settings.Name + "/" + settings.Environment, TestConfigServerStartup.LastRequest.Path.Value); Assert.True(provider.TryGet("key1", out string value)); Assert.Equal("value1", value); Assert.True(provider.TryGet("key2", out value)); Assert.Equal("10", value); }
public void DoLoad_MultipleLabels_ChecksAllLabels() { // 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; TestConfigServerStartup.ReturnStatus = new int[] { 404, 200 }; TestConfigServerStartup.Label = "testlabel"; var builder = new WebHostBuilder().UseStartup <TestConfigServerStartup>().UseEnvironment(envir.EnvironmentName); var server = new TestServer(builder); ConfigServerClientSettings settings = new ConfigServerClientSettings { Uri = "http://localhost:8888", Name = "myName", Label = "label,testlabel" }; server.BaseAddress = new Uri(settings.Uri); ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings, server.CreateClient()); // Act and Assert provider.DoLoad(); Assert.NotNull(TestConfigServerStartup.LastRequest); Assert.Equal(2, TestConfigServerStartup.RequestCount); Assert.Equal("/" + settings.Name + "/" + settings.Environment + "/testlabel", TestConfigServerStartup.LastRequest.Path.Value); }
public void DoLoad_MultipleLabels_ChecksAllLabels() { // 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; TestConfigServerStartup.ReturnStatus = new int[] { 404, 200 }; TestConfigServerStartup.Label = "testlabel"; var builder = new WebHostBuilder().UseStartup <TestConfigServerStartup>().UseEnvironment(envir.EnvironmentName); var server = new TestServer(builder); var settings = new ConfigServerClientSettings { Uri = "http://localhost:8888", Name = "myName", Label = "label,testlabel" }; server.BaseAddress = new Uri(settings.Uri); var provider = new ConfigServerConfigurationProvider(settings, server.CreateClient()); // Act and Assert provider.DoLoad(); Assert.NotNull(TestConfigServerStartup.LastRequest); Assert.Equal(2, TestConfigServerStartup.RequestCount); Assert.Equal("/" + settings.Name + "/" + settings.Environment + "/testlabel", TestConfigServerStartup.LastRequest.Path.Value); }
public void GetRequestMessage_AddsBasicAuthIfPassword() { ConfigServerClientSettings settings = new ConfigServerClientSettings(); settings.Uri = "http://*****:*****@localhost:8888/"; settings.Name = "foo"; settings.Environment = "development"; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings); string requestURI = provider.GetConfigServerUri(null); var request = provider.GetRequestMessage(requestURI); Assert.Equal(HttpMethod.Get, request.Method); Assert.Equal(requestURI, request.RequestUri.ToString()); Assert.NotNull(request.Headers.Authorization); Assert.Equal("Basic", request.Headers.Authorization.Scheme); Assert.Equal(provider.GetEncoded("user", "password"), request.Headers.Authorization.Parameter); }
public void AddConfigServer_WithSettings_SettingsAreUsed() { // Arrange var configurationBuilder = new ConfigurationBuilder(); var settings = new ConfigServerClientSettings() { Uri = "https://someUriSring" }; // Act and Assert configurationBuilder.AddConfigServer(settings); IConfigurationRoot config = configurationBuilder.Build(); ConfigServerConfigurationProvider configServerProvider = config.Providers.OfType <ConfigServerConfigurationProvider>().SingleOrDefault(); Assert.NotNull(configServerProvider); Assert.Equal(settings.Uri, configServerProvider.Settings.Uri); }
public void GetRequestMessage_AddsVaultToken_IfNeeded() { ConfigServerClientSettings settings = new ConfigServerClientSettings(); settings.Uri = "http://localhost:8888/"; settings.Name = "foo"; settings.Environment = "development"; settings.Token = "MyVaultToken"; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings); string requestURI = provider.GetConfigServerUri(null); var request = provider.GetRequestMessage(requestURI); Assert.Equal(HttpMethod.Get, request.Method); Assert.Equal(requestURI, request.RequestUri.ToString()); Assert.True(request.Headers.Contains(ConfigServerConfigurationProvider.TOKEN_HEADER)); var headerValues = request.Headers.GetValues(ConfigServerConfigurationProvider.TOKEN_HEADER); Assert.Contains("MyVaultToken", headerValues); }
public async void RemoteLoadAsync_HostTimesOut() { // Arrange ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(new ConfigServerClientSettings()); // Act and Assert try { HttpRequestException ex = await Assert.ThrowsAsync <HttpRequestException>(() => provider.RemoteLoadAsync(new string[] { "http://localhost:9999/app/profile" }, null)); } catch (ThrowsException e) { if (e.InnerException is TaskCanceledException) { return; } Assert.True(false, "Request didn't timeout or throw TaskCanceledException"); } }
public void Load_ConfigServerReturnsBadStatus_FailFastEnabled() { // Arrange IHostingEnvironment envir = new HostingEnvironment(); TestConfigServerStartup.Response = ""; TestConfigServerStartup.ReturnStatus = 500; var builder = new WebHostBuilder().UseStartup <TestConfigServerStartup>().UseEnvironment(envir.EnvironmentName); var server = new TestServer(builder); ConfigServerClientSettings settings = new ConfigServerClientSettings(); settings.Uri = "http://localhost:8888"; settings.Name = "myName"; settings.FailFast = true; server.BaseAddress = new Uri(settings.Uri); ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(settings, server.CreateClient(), envir); // Act and Assert var ex = Assert.Throws <ConfigServerException>(() => provider.Load()); }
public void AddPropertySource_ChangesDataDictionary() { // Arrange IDictionary<string,object> properties = new Dictionary<string, object>(); properties["a.b.c.d"] = "value1"; properties["a"] = "value2"; properties["b"] = 10; PropertySource source = new PropertySource("test", properties ); source.Name = "test"; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(); // Act and Assert provider.AddPropertySource(source); string value; Assert.True(provider.TryGet("a:b:c:d", out value)); Assert.Equal("value1", value); Assert.True(provider.TryGet("a", out value)); Assert.Equal("value2", value); Assert.True(provider.TryGet("b", out value)); Assert.Equal("10", value); }
public void Deserialize_EmptyStream() { // Arrange ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(); MemoryStream stream = new MemoryStream(); // Act and Assert Assert.Null(provider.Deserialize(stream)); }
public void Deserialize_BadJson() { // Arrange (propertySources array bad!) var environment = @" { 'name': 'testname', 'profiles': ['Production'], 'label': 'testlabel', 'version': 'testversion', 'propertySources': [ { 'name': 'source', 'source': { 'key1': 'value1', 'key2': 10 } } }"; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(); Stream stream = ConfigServerTestHelpers.StringToStream(environment); // Act and Assert Environment env = provider.Deserialize(stream); Assert.Null(env); }
public void Deserialize_GoodJson() { // Arrange var environment = @" { 'name': 'testname', 'profiles': ['Production'], 'label': 'testlabel', 'version': 'testversion', 'propertySources': [ { 'name': 'source', 'source': { 'key1': 'value1', 'key2': 10 } } ] }"; ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(); Stream stream = ConfigServerTestHelpers.StringToStream(environment); // Act and Assert Environment env = provider.Deserialize(stream); 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 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 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_HostTimesout() { // Arrange ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(); // Act and Assert Environment env = await provider.RemoteLoadAsync("http://foo.bar:9999/app/profile"); Assert.Null(env); }
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); }
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 async void RemoteLoadAsync_InvalidPath() { // Arrange ConfigServerConfigurationProvider provider = new ConfigServerConfigurationProvider(); // Act and Assert Environment env = await provider.RemoteLoadAsync("foobar\\foobar\\"); Assert.Null(env); }
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); }