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")); } }
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 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")); } }
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")); } }
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")); } }
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); } }
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); } }
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")); } }