Skip to content

Commit 5aab342

Browse files
authored
Remove JsonStreamConfigurationProvider/Source, which behave the same as the types provided by the .NET runtime (SteeltoeOSS#1576)
1 parent 716ad7c commit 5aab342

9 files changed

+166
-259
lines changed

src/Configuration/src/CloudFoundry/CloudFoundryConfigurationProvider.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// See the LICENSE file in the project root for more information.
44

55
using Microsoft.Extensions.Configuration;
6+
using Microsoft.Extensions.Configuration.Json;
67

78
namespace Steeltoe.Configuration.CloudFoundry;
89

@@ -68,7 +69,12 @@ private void Process()
6869
{
6970
using Stream stream = GetStream(applicationJson);
7071
var builder = new ConfigurationBuilder();
71-
builder.Add(new JsonStreamConfigurationSource(stream));
72+
73+
builder.Add(new JsonStreamConfigurationSource
74+
{
75+
Stream = stream
76+
});
77+
7278
IConfigurationRoot applicationData = builder.Build();
7379

7480
LoadData("vcap:application", applicationData.GetChildren(), data);
@@ -85,7 +91,12 @@ private void Process()
8591
{
8692
using Stream stream = GetStream(servicesJson);
8793
var builder = new ConfigurationBuilder();
88-
builder.Add(new JsonStreamConfigurationSource(stream));
94+
95+
builder.Add(new JsonStreamConfigurationSource
96+
{
97+
Stream = stream
98+
});
99+
89100
IConfigurationRoot servicesData = builder.Build();
90101

91102
LoadData("vcap:services", servicesData.GetChildren(), data);

src/Configuration/src/CloudFoundry/JsonStreamConfigurationProvider.cs

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/Configuration/src/CloudFoundry/JsonStreamConfigurationSource.cs

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/Configuration/src/CloudFoundry/ServiceBindings/CloudFoundryServiceBindingConfigurationProvider.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// See the LICENSE file in the project root for more information.
44

55
using Microsoft.Extensions.Configuration;
6+
using Microsoft.Extensions.Configuration.Json;
67

78
namespace Steeltoe.Configuration.CloudFoundry.ServiceBindings;
89

@@ -41,7 +42,12 @@ private static IConfigurationRoot BuildConfiguration(string json)
4142
{
4243
using MemoryStream stream = GetStream(json);
4344
var builder = new ConfigurationBuilder();
44-
builder.Add(new JsonStreamConfigurationSource(stream));
45+
46+
builder.Add(new JsonStreamConfigurationSource
47+
{
48+
Stream = stream
49+
});
50+
4551
return builder.Build();
4652
}
4753

src/Configuration/src/CloudFoundry/ServiceBindings/JsonStreamConfigurationProvider.cs

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/Configuration/src/CloudFoundry/ServiceBindings/JsonStreamConfigurationSource.cs

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/Configuration/test/CloudFoundry.Test/CloudfoundryConfigurationProviderTest.cs

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Microsoft.AspNetCore.Hosting;
99
using Microsoft.AspNetCore.HttpOverrides;
1010
using Microsoft.Extensions.Configuration;
11+
using Microsoft.Extensions.Configuration.Json;
1112
using Microsoft.Extensions.DependencyInjection;
1213
using Microsoft.Extensions.Options;
1314
using Steeltoe.Common.TestResources;
@@ -322,6 +323,151 @@ public async Task ForwardedHeadersMiddleware_uses_customized_options_when_runnin
322323
await host.StopAsync(TestContext.Current.CancellationToken);
323324
}
324325

326+
[Fact]
327+
public void Loads_VCAP_APPLICATION_from_stream()
328+
{
329+
const string environment = """
330+
{
331+
"application_id": "fa05c1a9-0fc1-4fbd-bae1-139850dec7a3",
332+
"application_name": "my-app",
333+
"application_uris": ["my-app.10.244.0.34.xip.io"],
334+
"application_version": "fb8fbcc6-8d58-479e-bcc7-3b4ce5a7f0ca",
335+
"limits": {
336+
"disk": 1024,
337+
"fds": 16384,
338+
"mem": 256
339+
},
340+
"name": "my-app",
341+
"space_id": "06450c72-4669-4dc6-8096-45f9777db68a",
342+
"space_name": "my-space",
343+
"uris": [
344+
"my-app.10.244.0.34.xip.io",
345+
"my-app2.10.244.0.34.xip.io"
346+
],
347+
"users": null,
348+
"version": "fb8fbcc6-8d58-479e-bcc7-3b4ce5a7f0ca"
349+
}
350+
""";
351+
352+
using Stream stream = CloudFoundryConfigurationProvider.GetStream(environment);
353+
354+
var source = new JsonStreamConfigurationSource
355+
{
356+
Stream = stream
357+
};
358+
359+
var builder = new ConfigurationBuilder();
360+
builder.Add(source);
361+
IConfigurationRoot root = builder.Build();
362+
363+
root["application_id"].Should().Be("fa05c1a9-0fc1-4fbd-bae1-139850dec7a3");
364+
root["limits:disk"].Should().Be("1024");
365+
root["uris:0"].Should().Be("my-app.10.244.0.34.xip.io");
366+
root["uris:1"].Should().Be("my-app2.10.244.0.34.xip.io");
367+
}
368+
369+
[Fact]
370+
public void Loads_VCAP_SERVICES_from_stream()
371+
{
372+
const string environment = """
373+
{
374+
"p-config-server": [{
375+
"name": "myConfigServer",
376+
"label": "p-config-server",
377+
"tags": [
378+
"configuration",
379+
"spring-cloud"
380+
],
381+
"plan": "standard",
382+
"credentials": {
383+
"uri": "https://config-eafc353b-77e2-4dcc-b52a-25777e996ed9.apps.test-cloud.com",
384+
"client_id": "p-config-server-9bff4c87-7ffd-4536-9e76-e67ea3ec81d0",
385+
"client_secret": "AJUAjyxP3nO9",
386+
"access_token_uri": "https://p-spring-cloud-services.uaa.system.test-cloud.com/oauth/token"
387+
}
388+
}],
389+
"p-service-registry": [{
390+
"name": "myServiceRegistry",
391+
"label": "p-service-registry",
392+
"tags": [
393+
"eureka",
394+
"discovery",
395+
"registry",
396+
"spring-cloud"
397+
],
398+
"plan": "standard",
399+
"credentials": {
400+
"uri": "https://eureka-f4b98d1c-3166-4741-b691-79abba5b2d51.apps.test-cloud.com",
401+
"client_id": "p-service-registry-9121b185-cd3b-497c-99f7-8e8064d4a6f0",
402+
"client_secret": "3Rv1U79siLDa",
403+
"access_token_uri": "https://p-spring-cloud-services.uaa.system.test-cloud.com/oauth/token"
404+
}
405+
}],
406+
"p-mysql": [{
407+
"name": "mySql1",
408+
"label": "p-mysql",
409+
"tags": [
410+
"mysql",
411+
"relational"
412+
],
413+
"plan": "100mb-dev",
414+
"credentials": {
415+
"hostname": "192.168.0.97",
416+
"port": 3306,
417+
"name": "cf_0f5dda44_e678_4727_993f_30e6d455cc31",
418+
"username": "9vD0Mtk3wFFuaaaY",
419+
"password": "Cjn4HsAiKV8sImst",
420+
"uri": "mysql://9vD0Mtk3wFFuaaaY:[email protected]:3306/cf_0f5dda44_e678_4727_993f_30e6d455cc31?reconnect=true",
421+
"jdbcUrl": "jdbc:mysql://192.168.0.97:3306/cf_0f5dda44_e678_4727_993f_30e6d455cc31?user=9vD0Mtk3wFFuaaaY&password=Cjn4HsAiKV8sImst"
422+
}
423+
},
424+
{
425+
"name": "mySql2",
426+
"label": "p-mysql",
427+
"tags": ["mysql","relational"],
428+
"plan": "100mb-dev",
429+
"credentials": {
430+
"hostname": "192.168.0.97",
431+
"port": 3306,
432+
"name": "cf_b2d83697_5fa1_4a51_991b_975c9d7e5515",
433+
"username": "gxXQb2pMbzFsZQW8",
434+
"password": "lvMkGf6oJQvKSOwn",
435+
"uri": "mysql://gxXQb2pMbzFsZQW8:[email protected]:3306/cf_b2d83697_5fa1_4a51_991b_975c9d7e5515?reconnect=true",
436+
"jdbcUrl": "jdbc:mysql://192.168.0.97:3306/cf_b2d83697_5fa1_4a51_991b_975c9d7e5515?user=gxXQb2pMbzFsZQW8&password=lvMkGf6oJQvKSOwn"
437+
}
438+
}]
439+
}
440+
""";
441+
442+
using Stream stream = CloudFoundryConfigurationProvider.GetStream(environment);
443+
444+
var source = new JsonStreamConfigurationSource
445+
{
446+
Stream = stream
447+
};
448+
449+
var provider = new JsonStreamConfigurationProvider(source);
450+
provider.Load();
451+
452+
provider.TryGet("p-config-server:0:name", out string? value).Should().BeTrue();
453+
value.Should().Be("myConfigServer");
454+
455+
provider.TryGet("p-config-server:0:credentials:uri", out value).Should().BeTrue();
456+
value.Should().Be("https://config-eafc353b-77e2-4dcc-b52a-25777e996ed9.apps.test-cloud.com");
457+
458+
provider.TryGet("p-service-registry:0:name", out value).Should().BeTrue();
459+
value.Should().Be("myServiceRegistry");
460+
461+
provider.TryGet("p-service-registry:0:credentials:uri", out value).Should().BeTrue();
462+
value.Should().Be("https://eureka-f4b98d1c-3166-4741-b691-79abba5b2d51.apps.test-cloud.com");
463+
464+
provider.TryGet("p-mysql:1:name", out value).Should().BeTrue();
465+
value.Should().Be("mySql2");
466+
467+
provider.TryGet("p-mysql:1:credentials:uri", out value).Should().BeTrue();
468+
value.Should().Be("mysql://gxXQb2pMbzFsZQW8:[email protected]:3306/cf_b2d83697_5fa1_4a51_991b_975c9d7e5515?reconnect=true");
469+
}
470+
325471
private sealed class VcapApp
326472
{
327473
#pragma warning disable S3459 // Unassigned members should be removed

0 commit comments

Comments
 (0)