diff --git a/sdk/keyvault/keyvault-certificates/package.json b/sdk/keyvault/keyvault-certificates/package.json index 826ddd16ff7f..735f59159e3a 100644 --- a/sdk/keyvault/keyvault-certificates/package.json +++ b/sdk/keyvault/keyvault-certificates/package.json @@ -50,7 +50,7 @@ "clean": "rimraf dist-esm dist-test types *.tgz *.log samples/typescript/dist", "execute:samples": "dev-tool samples run samples-dev", "extract-api": "tsc -p . && api-extractor run --local", - "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"samples/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"samples-dev/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", "generate:client": "autorest --typescript swagger/README.md", "integration-test:browser": "karma start --single-run", "integration-test:node": "nyc mocha -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 350000 --full-trace \"dist-esm/**/*.spec.js\"", diff --git a/sdk/keyvault/keyvault-certificates/platform-matrix.json b/sdk/keyvault/keyvault-certificates/platform-matrix.json new file mode 100644 index 000000000000..0c58bbf97de1 --- /dev/null +++ b/sdk/keyvault/keyvault-certificates/platform-matrix.json @@ -0,0 +1,20 @@ +{ + "include": [ + { + "Agent": { + "ubuntu-20.04": { + "OSVmImage": "MMSUbuntu20.04", + "Pool": "azsdk-pool-mms-ubuntu-2004-general" + } + }, + "TestType": "node", + "NodeTestVersion": "16.x", + "ServiceVersion": ["7.0", "7.1", "7.2"] + } + ], + "displayNames": { + "7.0": "service_version_7_0", + "7.1": "service_version_7_1", + "7.2": "service_version_7_2" + } +} diff --git a/sdk/keyvault/keyvault-certificates/test/internal/challengeBasedAuthenticationPolicy.spec.ts b/sdk/keyvault/keyvault-certificates/test/internal/challengeBasedAuthenticationPolicy.spec.ts index 864a4cffde1c..b0ac27d1d7f9 100644 --- a/sdk/keyvault/keyvault-certificates/test/internal/challengeBasedAuthenticationPolicy.spec.ts +++ b/sdk/keyvault/keyvault-certificates/test/internal/challengeBasedAuthenticationPolicy.spec.ts @@ -5,6 +5,7 @@ import { assert } from "chai"; import { Context } from "mocha"; import { createSandbox } from "sinon"; import { env, Recorder } from "@azure-tools/test-recorder"; +import { getServiceVersion } from "../utils/utils.common"; import { AuthenticationChallengeCache, @@ -37,7 +38,7 @@ describe("Challenge based authentication tests", () => { }; beforeEach(async function (this: Context) { - const authentication = await authenticate(this); + const authentication = await authenticate(this, getServiceVersion()); certificateSuffix = authentication.suffix; client = authentication.client; testClient = authentication.testClient; diff --git a/sdk/keyvault/keyvault-certificates/test/public/CRUD.spec.ts b/sdk/keyvault/keyvault-certificates/test/public/CRUD.spec.ts index 13e2dad774ab..956cd173a7ae 100644 --- a/sdk/keyvault/keyvault-certificates/test/public/CRUD.spec.ts +++ b/sdk/keyvault/keyvault-certificates/test/public/CRUD.spec.ts @@ -18,6 +18,7 @@ import { CertificateClient } from "../../src"; import { assertThrowsAbortError } from "../utils/utils.common"; import { testPollerProperties } from "../utils/recorderUtils"; import { authenticate } from "../utils/testAuthentication"; +import { getServiceVersion } from "../utils/utils.common"; import TestClient from "../utils/testClient"; describe("Certificates client - create, read, update and delete", () => { @@ -36,7 +37,7 @@ describe("Certificates client - create, read, update and delete", () => { }; beforeEach(async function (this: Context) { - const authentication = await authenticate(this); + const authentication = await authenticate(this, getServiceVersion()); suffix = authentication.suffix; client = authentication.client; testClient = authentication.testClient; diff --git a/sdk/keyvault/keyvault-certificates/test/public/list.spec.ts b/sdk/keyvault/keyvault-certificates/test/public/list.spec.ts index 35c2dcdda21c..596715e3bd7c 100644 --- a/sdk/keyvault/keyvault-certificates/test/public/list.spec.ts +++ b/sdk/keyvault/keyvault-certificates/test/public/list.spec.ts @@ -11,6 +11,7 @@ import { CertificateClient } from "../../src"; import { assertThrowsAbortError } from "../utils/utils.common"; import { testPollerProperties } from "../utils/recorderUtils"; import { authenticate } from "../utils/testAuthentication"; +import { getServiceVersion } from "../utils/utils.common"; import TestClient from "../utils/testClient"; const { expect } = chai; @@ -28,7 +29,7 @@ describe("Certificates client - list certificates in various ways", () => { }; beforeEach(async function (this: Context) { - const authentication = await authenticate(this); + const authentication = await authenticate(this, getServiceVersion()); suffix = authentication.suffix; client = authentication.client; testClient = authentication.testClient; diff --git a/sdk/keyvault/keyvault-certificates/test/public/lro.create.spec.ts b/sdk/keyvault/keyvault-certificates/test/public/lro.create.spec.ts index 6a8d4d32bbae..126516651735 100644 --- a/sdk/keyvault/keyvault-certificates/test/public/lro.create.spec.ts +++ b/sdk/keyvault/keyvault-certificates/test/public/lro.create.spec.ts @@ -9,6 +9,7 @@ import { env, Recorder } from "@azure-tools/test-recorder"; import { CertificateClient, KeyVaultCertificate, DefaultCertificatePolicy } from "../../src"; import { testPollerProperties } from "../utils/recorderUtils"; import { authenticate } from "../utils/testAuthentication"; +import { getServiceVersion } from "../utils/utils.common"; import TestClient from "../utils/testClient"; describe("Certificates client - LRO - create", () => { @@ -19,7 +20,7 @@ describe("Certificates client - LRO - create", () => { let recorder: Recorder; beforeEach(async function (this: Context) { - const authentication = await authenticate(this); + const authentication = await authenticate(this, getServiceVersion()); certificateSuffix = authentication.suffix; client = authentication.client; testClient = authentication.testClient; diff --git a/sdk/keyvault/keyvault-certificates/test/public/lro.delete.spec.ts b/sdk/keyvault/keyvault-certificates/test/public/lro.delete.spec.ts index ef404da2c3ba..f35d6eea84e7 100644 --- a/sdk/keyvault/keyvault-certificates/test/public/lro.delete.spec.ts +++ b/sdk/keyvault/keyvault-certificates/test/public/lro.delete.spec.ts @@ -9,6 +9,7 @@ import { env, Recorder } from "@azure-tools/test-recorder"; import { CertificateClient, DeletedCertificate, DefaultCertificatePolicy } from "../../src"; import { testPollerProperties } from "../utils/recorderUtils"; import { authenticate } from "../utils/testAuthentication"; +import { getServiceVersion } from "../utils/utils.common"; import TestClient from "../utils/testClient"; describe("Certificates client - lro - delete", () => { @@ -19,7 +20,7 @@ describe("Certificates client - lro - delete", () => { let recorder: Recorder; beforeEach(async function (this: Context) { - const authentication = await authenticate(this); + const authentication = await authenticate(this, getServiceVersion()); certificateSuffix = authentication.suffix; client = authentication.client; testClient = authentication.testClient; diff --git a/sdk/keyvault/keyvault-certificates/test/public/lro.operation.spec.ts b/sdk/keyvault/keyvault-certificates/test/public/lro.operation.spec.ts index cc6fa13155ea..c3c2b5500562 100644 --- a/sdk/keyvault/keyvault-certificates/test/public/lro.operation.spec.ts +++ b/sdk/keyvault/keyvault-certificates/test/public/lro.operation.spec.ts @@ -13,6 +13,7 @@ import { } from "../../src"; import { testPollerProperties } from "../utils/recorderUtils"; import { authenticate } from "../utils/testAuthentication"; +import { getServiceVersion } from "../utils/utils.common"; import TestClient from "../utils/testClient"; describe("Certificates client - LRO - certificate operation", () => { @@ -23,7 +24,7 @@ describe("Certificates client - LRO - certificate operation", () => { let recorder: Recorder; beforeEach(async function (this: Context) { - const authentication = await authenticate(this); + const authentication = await authenticate(this, getServiceVersion()); certificateSuffix = authentication.suffix; client = authentication.client; testClient = authentication.testClient; diff --git a/sdk/keyvault/keyvault-certificates/test/public/lro.recover.spec.ts b/sdk/keyvault/keyvault-certificates/test/public/lro.recover.spec.ts index 75d045bc74fa..d27b7ea1a363 100644 --- a/sdk/keyvault/keyvault-certificates/test/public/lro.recover.spec.ts +++ b/sdk/keyvault/keyvault-certificates/test/public/lro.recover.spec.ts @@ -10,6 +10,7 @@ import { CertificateClient, DeletedCertificate, DefaultCertificatePolicy } from import { assertThrowsAbortError } from "../utils/utils.common"; import { testPollerProperties } from "../utils/recorderUtils"; import { authenticate } from "../utils/testAuthentication"; +import { getServiceVersion } from "../utils/utils.common"; import TestClient from "../utils/testClient"; describe("Certificates client - LRO - recoverDelete", () => { @@ -20,7 +21,7 @@ describe("Certificates client - LRO - recoverDelete", () => { let recorder: Recorder; beforeEach(async function (this: Context) { - const authentication = await authenticate(this); + const authentication = await authenticate(this, getServiceVersion()); certificateSuffix = authentication.suffix; client = authentication.client; testClient = authentication.testClient; diff --git a/sdk/keyvault/keyvault-certificates/test/public/mergeAndImport.spec.ts b/sdk/keyvault/keyvault-certificates/test/public/mergeAndImport.spec.ts index 064de91beaad..560e2a01dd47 100644 --- a/sdk/keyvault/keyvault-certificates/test/public/mergeAndImport.spec.ts +++ b/sdk/keyvault/keyvault-certificates/test/public/mergeAndImport.spec.ts @@ -13,6 +13,7 @@ import { CertificateClient } from "../../src"; import { base64ToUint8Array, stringToUint8Array } from "../../src/utils"; import { testPollerProperties } from "../utils/recorderUtils"; import { authenticate } from "../utils/testAuthentication"; +import { getServiceVersion } from "../utils/utils.common"; import TestClient from "../utils/testClient"; describe("Certificates client - merge and import certificates", () => { @@ -26,7 +27,7 @@ describe("Certificates client - merge and import certificates", () => { let secretClient: SecretClient; beforeEach(async function (this: Context) { - const authentication = await authenticate(this); + const authentication = await authenticate(this, getServiceVersion()); suffix = authentication.suffix; client = authentication.client; testClient = authentication.testClient; diff --git a/sdk/keyvault/keyvault-certificates/test/public/recoverBackupRestore.spec.ts b/sdk/keyvault/keyvault-certificates/test/public/recoverBackupRestore.spec.ts index c7e385413ae0..2525afb82049 100644 --- a/sdk/keyvault/keyvault-certificates/test/public/recoverBackupRestore.spec.ts +++ b/sdk/keyvault/keyvault-certificates/test/public/recoverBackupRestore.spec.ts @@ -10,6 +10,7 @@ import { CertificateClient } from "../../src"; import { testPollerProperties } from "../utils/recorderUtils"; import { assertThrowsAbortError } from "../utils/utils.common"; import { authenticate } from "../utils/testAuthentication"; +import { getServiceVersion } from "../utils/utils.common"; import TestClient from "../utils/testClient"; describe("Certificates client - restore certificates and recover backups", () => { @@ -25,7 +26,7 @@ describe("Certificates client - restore certificates and recover backups", () => }; beforeEach(async function (this: Context) { - const authentication = await authenticate(this); + const authentication = await authenticate(this, getServiceVersion()); suffix = authentication.suffix; client = authentication.client; testClient = authentication.testClient; diff --git a/sdk/keyvault/keyvault-certificates/test/utils/testAuthentication.ts b/sdk/keyvault/keyvault-certificates/test/utils/testAuthentication.ts index eebb5149d1ac..100630c5b468 100644 --- a/sdk/keyvault/keyvault-certificates/test/utils/testAuthentication.ts +++ b/sdk/keyvault/keyvault-certificates/test/utils/testAuthentication.ts @@ -5,10 +5,14 @@ import { ClientSecretCredential } from "@azure/identity"; import { CertificateClient } from "../../src"; import { uniqueString } from "./recorderUtils"; import { env, record, RecorderEnvironmentSetup } from "@azure-tools/test-recorder"; +import { getServiceVersion } from "./utils.common"; import TestClient from "./testClient"; import { Context } from "mocha"; -export async function authenticate(that: Context): Promise { +export async function authenticate( + that: Context, + serviceVersion: ReturnType +): Promise { const suffix = uniqueString(); const recorderEnvSetup: RecorderEnvironmentSetup = { replaceableVariables: { @@ -45,7 +49,7 @@ export async function authenticate(that: Context): Promise { throw new Error("Missing KEYVAULT_URI environment variable."); } - const client = new CertificateClient(keyVaultUrl, credential); + const client = new CertificateClient(keyVaultUrl, credential, { serviceVersion }); const testClient = new TestClient(client); return { recorder, client, credential, testClient, suffix, keyVaultUrl }; diff --git a/sdk/keyvault/keyvault-certificates/test/utils/utils.common.ts b/sdk/keyvault/keyvault-certificates/test/utils/utils.common.ts index 3288595137da..75fcb5e7c317 100644 --- a/sdk/keyvault/keyvault-certificates/test/utils/utils.common.ts +++ b/sdk/keyvault/keyvault-certificates/test/utils/utils.common.ts @@ -3,6 +3,8 @@ import { env } from "@azure-tools/test-recorder"; import { assert } from "chai"; +import { SupportedVersions, supports, TestFunctionWrapper } from "@azure/test-utils"; +import { LATEST_API_VERSION, CertificateClientOptions } from "../../src/certificatesModels"; export function getKeyvaultName(): string { const keyVaultEnvVarName = "KEYVAULT_NAME"; @@ -29,3 +31,31 @@ export async function assertThrowsAbortError(cb: () => Promise): Promise { + return env.SERVICE_VERSION || LATEST_API_VERSION; +} + +/** + * A convenience wrapper allowing us to limit service versions without using the `versionsToTest` wrapper. + * + * @param supportedVersions - The {@link SupportedVersions} to limit this test against. + * @param serviceVersion - The service version we want to test support for. If omitted we will default to the version returned from {@link getServiceVersion}. + * @returns A Mocha Wrapper which will skip or execute the chained tests depending the currently tested service version and the supported versions. + */ +export function onVersions( + supportedVersions: SupportedVersions, + serviceVersion?: CertificateClientOptions["serviceVersion"] +): TestFunctionWrapper { + return supports(serviceVersion || getServiceVersion(), supportedVersions, serviceVersions); +} diff --git a/sdk/keyvault/keyvault-certificates/tests.yml b/sdk/keyvault/keyvault-certificates/tests.yml index d6caa450f9b2..dbf51c394805 100644 --- a/sdk/keyvault/keyvault-certificates/tests.yml +++ b/sdk/keyvault/keyvault-certificates/tests.yml @@ -6,6 +6,11 @@ stages: PackageName: "@azure/keyvault-certificates" ServiceDirectory: keyvault TimeoutInMinutes: 90 + AdditionalMatrixConfigs: + - Name: Keyvault_live_test_base + Path: sdk/keyvault/keyvault-certificates/platform-matrix.json + Selection: sparse + GenerateVMJobs: true EnvVars: AZURE_CLIENT_ID: $(aad-azure-sdk-test-client-id) AZURE_TENANT_ID: $(aad-azure-sdk-test-tenant-id)