Skip to content

Commit 6d93e1b

Browse files
authored
Ensure all YARP env vars are strings (#10434)
There are expectations in other integrations that primitive environment variables are serialized to strings and not random objects like enums and bools. Fix #10432
1 parent 835f4e8 commit 6d93e1b

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/Aspire.Hosting.Yarp/YarpEnvConfigGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ private static void FlattenToEnvVars(Dictionary<string, object> environmentVaria
3636
{
3737
if (IsSimple(obj))
3838
{
39-
environmentVariables.Add(prefix, obj);
39+
environmentVariables.Add(prefix, obj.ToString() ?? "");
4040
}
4141
else if (obj is IReadOnlyDictionary<string, string> dict)
4242
{
@@ -74,7 +74,7 @@ private static void FlattenToEnvVars(Dictionary<string, object> environmentVaria
7474
{
7575
if ((sslProtocols & protocol) == protocol)
7676
{
77-
environmentVariables.Add($"{prefix}__{counter}", protocol);
77+
environmentVariables.Add($"{prefix}__{counter}", protocol.ToString());
7878
counter++;
7979
}
8080
}

tests/Aspire.Hosting.Yarp.Tests/YarpConfigGeneratorTests.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,23 @@ public async Task GenerateEnvVariablesConfiguration()
242242
await Verify(content, "env");
243243
}
244244

245+
[Fact]
246+
public void EnsureAllEnvVarsAreStrings()
247+
{
248+
var variables = new Dictionary<string, object>();
249+
var builder = TestDistributedApplicationBuilder.Create();
250+
251+
YarpEnvConfigGenerator.PopulateEnvVariables(
252+
variables,
253+
_validRoutes.Select(r => new YarpRoute(r)).ToList(),
254+
_validClusters.Select(c => new YarpCluster(c, c.Destinations!.First().Value.Address)).ToList());
255+
256+
foreach (var variable in variables)
257+
{
258+
Assert.IsType<string>(variable.Value);
259+
}
260+
}
261+
245262
[Fact]
246263
[RequiresDocker]
247264
public async Task GenerateEnvVariablesConfigurationDockerCompose()

0 commit comments

Comments
 (0)