public void test_that_we_can_parse_key_vault_references() { var refString = "@AzureKeyVault(secretName, vaultUrl)"; var keyVaultRef = AzureKeyVaultReference.CreateFromString(refString); Assert.Equal("secretName", keyVaultRef.KeyVaultSecretName); Assert.Equal("vaultUrl", keyVaultRef.KeyVaultUrl); Assert.Equal(refString, keyVaultRef.ToString()); // assert trimming of value and url refString = "@AzureKeyVault( secretName , vaultUrl )"; keyVaultRef = AzureKeyVaultReference.CreateFromString(refString); Assert.Equal("secretName", keyVaultRef.KeyVaultSecretName); Assert.Equal("vaultUrl", keyVaultRef.KeyVaultUrl); Assert.Equal("@AzureKeyVault(secretName, vaultUrl)", keyVaultRef.ToString()); // assert that we can ommitt url refString = "@AzureKeyVault(secretName)"; keyVaultRef = AzureKeyVaultReference.CreateFromString(refString); Assert.Equal("secretName", keyVaultRef.KeyVaultSecretName); Assert.Null(keyVaultRef.KeyVaultUrl); Assert.Equal(refString, keyVaultRef.ToString()); // assert that we can handle sloppy config managers refString = "@AzureKeyVault(secretName, )"; keyVaultRef = AzureKeyVaultReference.CreateFromString(refString); Assert.Equal("secretName", keyVaultRef.KeyVaultSecretName); Assert.Null(keyVaultRef.KeyVaultUrl); Assert.Equal("@AzureKeyVault(secretName)", keyVaultRef.ToString()); }
public void test_that_we_get_expected_exception_when_having_invalid_format() { Assert.Throws <ParsKeyVaultReferenceException>(() => { AzureKeyVaultReference.CreateFromString("@AzureKeyVault()"); }); Assert.Throws <ParsKeyVaultReferenceException>(() => { AzureKeyVaultReference.CreateFromString("@AzureKeyVault(a,b,c)"); }); }
private IDictionary <string, AzureKeyVaultReference> FilterOutSettingsWithKeyVaultRefRecursive(IConfiguration configSection, IDictionary <string, AzureKeyVaultReference> refs) { foreach (var childSection in configSection.GetChildren()) { FilterOutSettingsWithKeyVaultRefRecursive(childSection, refs); var value = childSection.Value; if (value != null && value.StartsWith(AzureKeyVaultReference.CONFIG_VALUE_PREFIX)) { try { refs.Add(childSection.Path, AzureKeyVaultReference.CreateFromString(value)); } catch (ParsKeyVaultReferenceException parseException) { throw new InvalidConfigException( "Unable to parse key vault reference in setting " + childSection.Path + " got error: " + parseException.Message ); } } } return(refs); }