public SecretManagerConfigurationProviderTests() { _testSecrets = new List <Secret> { new Secret { SecretName = new SecretName(_secretProjectName, "SecretId1") }, new Secret { SecretName = new SecretName(_secretProjectName, "SecretId2") }, new Secret { SecretName = new SecretName(_secretProjectName, "SecretId3") }, new Secret { SecretName = new SecretName(_secretProjectName, "SecretId4") } }; _pagedResponse = new PagedEnumerableHelper <ListSecretsResponse, Secret>(_testSecrets); _mockClient = new Mock <SecretManagerServiceClient>(MockBehavior.Strict); _mockClient.Setup(x => x.ListSecrets(It.Is <ProjectName>(pn => pn.ProjectId == _projectName), null, null, null)) .Returns(_pagedResponse); foreach (var secret in _testSecrets) { var response = new AccessSecretVersionResponse { Payload = new SecretPayload { Data = Google.Protobuf.ByteString.CopyFromUtf8($"{secret.SecretName.SecretId}-Value") } }; _mockClient.Setup( x => x.AccessSecretVersionAsync( It.Is <SecretVersionName>(svn => svn.ProjectId == secret.SecretName.ProjectId && svn.SecretId == secret.SecretName.SecretId && svn.SecretVersionId == "latest"), null)) .ReturnsAsync(response); } _target = new SecretManagerConfigurationProvider(_mockClient.Object, new ProjectName(_projectName), new DefaultSecretManagerConfigurationLoader()); }
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); _target.Load(); Assert.True(_target.TryGet(dotNetName, out var configValue)); Assert.Equal(value, configValue); }