Exemplo n.º 1
0
        public void DoesNotLoadFilteredItems()
        {
            var client = new MockKeyVaultClient();

            client.SetPages(
                new []
            {
                CreateSecret("Secret1", "Value1")
            },
                new []
            {
                CreateSecret("Secret2", "Value2")
            }
                );

            // Act
            using (var provider = new AzureKeyVaultConfigurationProvider(client, VaultUri, new EndsWithOneKeyVaultSecretManager()))
            {
                provider.Load();

                // Assert
                var childKeys = provider.GetChildKeys(Enumerable.Empty <string>(), null).ToArray();
                Assert.Equal(new[] { "Secret1" }, childKeys);
                Assert.Equal("Value1", provider.Get("Secret1"));
            }
        }
Exemplo n.º 2
0
        public void LoadsAllSecretsFromVault()
        {
            var client = new MockKeyVaultClient();

            client.SetPages(
                new []
            {
                CreateSecret("Secret1", "Value1")
            },
                new []
            {
                CreateSecret("Secret2", "Value2")
            }
                );

            // Act
            using (var provider = new AzureKeyVaultConfigurationProvider(client, VaultUri, new DefaultKeyVaultSecretManager()))
            {
                provider.Load();

                var childKeys = provider.GetChildKeys(Enumerable.Empty <string>(), null).ToArray();
                Assert.Equal(new[] { "Secret1", "Secret2" }, childKeys);
                Assert.Equal("Value1", provider.Get("Secret1"));
                Assert.Equal("Value2", provider.Get("Secret2"));
            }
        }
Exemplo n.º 3
0
        public void SupportsReload()
        {
            var updated = DateTime.Now;

            var client = new MockKeyVaultClient();

            client.SetPages(
                new []
            {
                CreateSecret("Secret1", "Value1", () => new SecretAttributes(enabled: true, updated: updated))
            }
                );

            // Act & Assert
            using (var provider = new AzureKeyVaultConfigurationProvider(client, VaultUri, new DefaultKeyVaultSecretManager()))
            {
                provider.Load();

                Assert.Equal("Value1", provider.Get("Secret1"));

                client.SetPages(
                    new []
                {
                    CreateSecret("Secret1", "Value2", () => new SecretAttributes(enabled: true, updated: updated.AddSeconds(1)))
                }
                    );

                provider.Load();
                Assert.Equal("Value2", provider.Get("Secret1"));
            }
        }
Exemplo n.º 4
0
        public void DoesNotLoadDisabledItems()
        {
            var client = new MockKeyVaultClient();

            client.SetPages(
                new []
            {
                CreateSecret("Secret1", "Value1")
            },
                new []
            {
                CreateSecret("Secret2", "Value2", () => new SecretAttributes(enabled: false)),
                CreateSecret("Secret3", "Value3", () => new SecretAttributes(enabled: null)),
            }
                );

            // Act
            using (var provider = new AzureKeyVaultConfigurationProvider(client, VaultUri, new DefaultKeyVaultSecretManager()))
            {
                provider.Load();

                // Assert
                var childKeys = provider.GetChildKeys(Enumerable.Empty <string>(), null).ToArray();
                Assert.Equal(new[] { "Secret1" }, childKeys);
                Assert.Equal("Value1", provider.Get("Secret1"));
                Assert.Throws <InvalidOperationException>(() => provider.Get("Secret2"));
                Assert.Throws <InvalidOperationException>(() => provider.Get("Secret3"));
            }
        }
Exemplo n.º 5
0
        public async Task SupportsReloadOnAdd()
        {
            int numOfTokensFired = 0;

            var client = new MockKeyVaultClient();

            client.SetPages(
                new []
            {
                CreateSecret("Secret1", "Value1")
            }
                );

            // Act & Assert
            using (var provider = new ReloadControlKeyVaultProvider(client, VaultUri, new DefaultKeyVaultSecretManager(), reloadPollDelay: NoReloadDelay))
            {
                ChangeToken.OnChange(
                    () => provider.GetReloadToken(),
                    () => {
                    numOfTokensFired++;
                });

                provider.Load();

                Assert.Equal("Value1", provider.Get("Secret1"));

                await provider.Wait();

                client.SetPages(
                    new []
                {
                    CreateSecret("Secret1", "Value1"),
                },
                    new []
                {
                    CreateSecret("Secret2", "Value2")
                }
                    );

                provider.Release();

                await provider.Wait();

                Assert.Equal("Value1", provider.Get("Secret1"));
                Assert.Equal("Value2", provider.Get("Secret2"));
                Assert.Equal(1, numOfTokensFired);
            }
        }
        public async Task SupportsReloadOnEnabledChange()
        {
            int numOfTokensFired = 0;

            var client = new MockKeyVaultClient();

            client.SetPages(
                new []
            {
                CreateSecret("Secret1", "Value1"),
                CreateSecret("Secret2", "Value2")
            }
                );

            // Act & Assert
            using (var provider = new ReloadControlKeyVaultProvider(client, VaultUri, new DefaultKeyVaultSecretManager(), reloadPollDelay: TimeSpan.Zero))
            {
                ChangeToken.OnChange(
                    () => provider.GetReloadToken(),
                    () => {
                    numOfTokensFired++;
                });

                provider.Load();

                Assert.Equal("Value1", provider.Get("Secret1"));

                await provider.Wait();

                client.SetPages(
                    new []
                {
                    CreateSecret("Secret1", "Value2"),
                    CreateSecret("Secret2", "Value2", () => new SecretAttributes(enabled: false))
                }
                    );

                provider.Release();

                await provider.Wait();

                Assert.Throws <InvalidOperationException>(() => provider.Get("Secret2"));
                Assert.Equal(1, numOfTokensFired);
            }
        }
Exemplo n.º 7
0
        public async Task SupportsAutoReload()
        {
            var updated          = DateTime.Now;
            int numOfTokensFired = 0;

            var client = new MockKeyVaultClient();

            client.SetPages(
                new []
            {
                CreateSecret("Secret1", "Value1", () => new SecretAttributes(enabled: true, updated: updated))
            }
                );

            // Act & Assert
            using (var provider = new ReloadControlKeyVaultProvider(client, VaultUri, new DefaultKeyVaultSecretManager(), reloadPollDelay: NoReloadDelay))
            {
                ChangeToken.OnChange(
                    () => provider.GetReloadToken(),
                    () => {
                    numOfTokensFired++;
                });

                provider.Load();

                Assert.Equal("Value1", provider.Get("Secret1"));

                await provider.Wait();

                client.SetPages(
                    new []
                {
                    CreateSecret("Secret1", "Value2", () => new SecretAttributes(enabled: true, updated: updated.AddSeconds(1)))
                }
                    );

                provider.Release();

                await provider.Wait();

                Assert.Equal("Value2", provider.Get("Secret1"));
                Assert.Equal(1, numOfTokensFired);
            }
        }
Exemplo n.º 8
0
        public void ReplaceDoubleMinusInKeyName()
        {
            var client = new MockKeyVaultClient();

            client.SetPages(
                new []
            {
                CreateSecret("Section--Secret1", "Value1")
            }
                );

            // Act
            using (var provider = new AzureKeyVaultConfigurationProvider(client, VaultUri, new DefaultKeyVaultSecretManager()))
            {
                provider.Load();

                // Assert
                Assert.Equal("Value1", provider.Get("Section:Secret1"));
            }
        }