Skip to content

Commit f2eca30

Browse files
authored
Fix - check raw secret result before passing allong in environment variable secret provider (#252)
1 parent fa26413 commit f2eca30

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/Arcus.Security.Core/Providers/EnvironmentVariableSecretProvider.cs

+5
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ public async Task<Secret> GetSecretAsync(string secretName)
4242
Guard.NotNullOrWhitespace(secretName, nameof(secretName), "Requires a non-blank secret name to look up the environment secret");
4343

4444
string secretValue = await GetRawSecretAsync(secretName);
45+
if (secretValue is null)
46+
{
47+
return null;
48+
}
49+
4550
return new Secret(secretValue);
4651
}
4752

src/Arcus.Security.Tests.Unit/Core/EnvironmentVariableSecretProviderTests.cs

+13
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,19 @@ public void ConfigureSecretStore_WithOptionsWithOutOfBoundsTarget_Throws()
281281
Assert.ThrowsAny<ArgumentException>(() => builder.Build());
282282
}
283283

284+
[Fact]
285+
public async Task GetSecret_WithoutSecretResult_ReturnsNull()
286+
{
287+
// Arrange
288+
var provider = new EnvironmentVariableSecretProvider();
289+
290+
// Act
291+
Secret result = await provider.GetSecretAsync($"random-not-found-secret-{Guid.NewGuid()}");
292+
293+
// Assert
294+
Assert.Null(result);
295+
}
296+
284297
[Theory]
285298
[InlineData(null)]
286299
[InlineData("")]

0 commit comments

Comments
 (0)