示例#1
0
        public void ShouldInstantiateConfigurationProvider()
        {
            var mockGrpcClient = new Mock <SecretManagerServiceClient>();

            mockGrpcClient
            .Setup(e => e.ListSecretsAsync(new ProjectName(PROJECT_NAME), null, null, null))
            .Returns(new MockPagedEnumerable());


            var secretResponse = new AccessSecretVersionResponse()
            {
                Payload = new SecretPayload {
                    Data = ByteString.FromBase64(System.Convert.ToBase64String(Encoding.UTF8.GetBytes("value")))
                }
            };

            mockGrpcClient
            .Setup(e => e.AccessSecretVersionAsync(new SecretVersionName(PROJECT_NAME, "param1", "latest"), null))
            .Returns(Task.FromResult(secretResponse));

            var configurationOptions = new SecretManagerConfigurationOptions {
                ProjectName = PROJECT_NAME
            };
            var configurationSource = new SecretManagerConfigurationSource(configurationOptions);

            var provider = new SecretManagerConfigurationProvider(mockGrpcClient.Object, configurationSource);

            provider.Load();

            Assert.True(provider.TryGet("param1", out var value));
            Assert.Equal("value", value);
        }
示例#2
0
        public void Should_CallLoaderGetKey()
        {
            var mockLoader = new Mock <ISecretManagerConfigurationLoader>();

            mockLoader.Setup(m => m.GetKey(It.IsAny <Secret>()))
            .Returns((Secret secret) => secret.SecretName.SecretId);
            mockLoader.Setup(m => m.Load(It.IsAny <Secret>())).Returns(true);

            var target = new SecretManagerConfigurationProvider(_mockClient.Object, new ProjectName(_projectName), mockLoader.Object);

            target.Load();

            mockLoader.Verify(m => m.GetKey(It.IsAny <Secret>()), Times.Exactly(_testSecrets.Count()));
        }
示例#3
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());
        }
示例#4
0
        public void Should_NotLoadAllSecrets()
        {
            var mockLoader = new Mock <ISecretManagerConfigurationLoader>();

            mockLoader.Setup(m => m.GetKey(It.IsAny <Secret>()))
            .Returns((Secret secret) => secret.SecretName.SecretId);
            mockLoader.Setup(m => m.Load(It.IsAny <Secret>())).Returns((Secret secret) =>
                                                                       secret.SecretName.SecretId != _testSecrets.First().SecretName.SecretId);

            var target = new SecretManagerConfigurationProvider(_mockClient.Object, new ProjectName(_projectName), mockLoader.Object);

            target.Load();

            Assert.False(target.TryGet("SecretId1", out var configValue1));
            Assert.True(target.TryGet("SecretId2", out var configValue2));
            Assert.True(target.TryGet("SecretId3", out var configValue3));
            Assert.True(target.TryGet("SecretId4", out var configValue4));
        }