示例#1
0
        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());
        }
示例#2
0
        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);
        }