Skip to content

Commit

Permalink
Merge pull request #1 from mhirasawa-sansan/feature/enable-delimiter
Browse files Browse the repository at this point in the history
enabling to use double underscore delimiters
  • Loading branch information
Cultti committed Apr 19, 2021
2 parents 6789ba8 + 7e56a1e commit 9e72c97
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -99,5 +99,41 @@ public void Should_FetchSecrets_When_LoadIsCalled_And_ExceptionIsThrown()
Assert.Equal($"{secret.SecretName.SecretId}-Value", value);
}
}

[Fact]
public void Should_FetcHierarchicalSecrets_When_LoadIsCalled()
{
var googleName = "Multi__Level__Secret";
var dotNetName = "Multi:Level:Secret";
var value = "SecretValue";

var response = new AccessSecretVersionResponse
{
Payload = new SecretPayload
{
Data = Google.Protobuf.ByteString.CopyFromUtf8(value)
}
};
_mockClient.Setup(
x => x.AccessSecretVersionAsync(
It.Is<SecretVersionName>(svn => svn.ProjectId == _secretProjectName &&
svn.SecretId == googleName &&
svn.SecretVersionId == "latest"), null))
.ReturnsAsync(response);

_testSecrets.Add(new Secret
{
SecretName = new SecretName(_secretProjectName, googleName),
});
var pagedResponse = new PagedEnumerableHelper<ListSecretsResponse, Secret>(_testSecrets);
_mockClient.Setup(x => x.ListSecrets(It.Is<ProjectName>(pn => pn.ProjectId == _projectName), null, null, null))
.Returns(pagedResponse);

var configurationProvider = new SecretManagerConfigurationProvider(_mockClient.Object, new ProjectName(_projectName));
configurationProvider.Load();

Assert.True(configurationProvider.TryGet(dotNetName, out var configValue));
Assert.Equal(value, configValue);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public async Task LoadAsync()
{
var secretVersionName = new SecretVersionName(secret.SecretName.ProjectId, secret.SecretName.SecretId, "latest");
var secretVersion = await _client.AccessSecretVersionAsync(secretVersionName);
Set(secret.SecretName.SecretId, secretVersion.Payload.Data.ToStringUtf8());
Set(ConvertDelimiter(secret.SecretName.SecretId), secretVersion.Payload.Data.ToStringUtf8());
} catch (Grpc.Core.RpcException)
{
// This might happen if secret is created but it has no versions available
Expand All @@ -40,5 +40,10 @@ public async Task LoadAsync()
}

}

private static string ConvertDelimiter(string key)
{
return key.Replace("__", ConfigurationPath.KeyDelimiter);
}
}
}

0 comments on commit 9e72c97

Please sign in to comment.