Skip to content

Commit f82e612

Browse files
committed
support key vault reference with specific version
1 parent aa9a464 commit f82e612

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

src/AzureAppConfigurationImpl.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,14 @@ export class AzureAppConfigurationImpl extends Map<string, unknown> implements A
6767
}
6868

6969
// precedence: secret clients > credential > secret resolver
70-
const { name: secretName, vaultUrl, sourceId } = parseKeyVaultSecretIdentifier(
70+
const { name: secretName, vaultUrl, sourceId, version } = parseKeyVaultSecretIdentifier(
7171
parseSecretReference(setting).value.secretId
7272
);
7373

7474
const client = this.getSecretClient(new URL(vaultUrl));
7575
if (client) {
7676
// TODO: what if error occurs when reading a key vault value? Now it breaks the whole load.
77-
const secret = await client.getSecret(secretName);
77+
const secret = await client.getSecret(secretName, { version });
7878
return secret.value;
7979
}
8080

test/keyvault.test.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const { SecretClient } = require("@azure/keyvault-secrets");
1515
const mockedData = [
1616
// key, secretUri, value
1717
["TestKey", "https://fake-vault-name.vault.azure.net/secrets/fakeSecretName", "SecretValue"],
18+
["TestKeyFixedVersion", "https://fake-vault-name.vault.azure.net/secrets/fakeSecretName/741a0fc52610449baffd6e1c55b9d459", "OldSecretValue"],
1819
["TestKey2", "https://fake-vault-name2.vault.azure.net/secrets/fakeSecretName2", "SecretValue2"]
1920
];
2021

@@ -48,6 +49,7 @@ describe("key vault reference", function () {
4849
});
4950
expect(settings).not.undefined;
5051
expect(settings.get("TestKey")).eq("SecretValue");
52+
expect(settings.get("TestKeyFixedVersion")).eq("OldSecretValue");
5153
});
5254

5355
it("should resolve key vault reference with secret resolver", async () => {

test/utils/testHelper.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,12 @@ function mockSecretClientGetSecret(uriValueList) {
2424
dict.set(uri, value);
2525
}
2626

27-
sinon.stub(SecretClient.prototype, "getSecret").callsFake(function (secretName) {
27+
sinon.stub(SecretClient.prototype, "getSecret").callsFake(function (secretName, options) {
2828
const url = new URL(this.vaultUrl);
2929
url.pathname = `/secrets/${secretName}`;
30+
if (options?.version) {
31+
url.pathname += `/${options.version}`;
32+
}
3033
return { value: dict.get(url.toString()) };
3134
})
3235
}

0 commit comments

Comments
 (0)