Skip to content

Commit 9d0c7ec

Browse files
committed
add api version validation
1 parent a3d712e commit 9d0c7ec

3 files changed

Lines changed: 22 additions & 2 deletions

File tree

src/appConfigurationClient.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,15 @@ import {
1010
FeatureFlagClientOptions,
1111
GetConfigurationSettingOptions,
1212
GetSnapshotOptions,
13+
KnownAppConfigurationApiVersion,
1314
ListConfigurationSettingsForSnapshotOptions,
1415
ListConfigurationSettingsOptions,
1516
ListFeatureFlagsOptions
1617
} from "@azure/app-configuration";
1718
import { TokenCredential } from "@azure/identity";
1819
import { instanceOfTokenCredential } from "./common/utils.js";
20+
import { ArgumentError } from "./common/errors.js";
21+
import { ErrorMessages } from "./common/errorMessages.js";
1922
import { RequestTracingOptions, applyRequestTracing } from "./requestTracing/utils.js";
2023

2124
/**
@@ -78,6 +81,10 @@ export function getFeatureFlagClientOptions(options?: ConfigurationClientOptions
7881
if (options === undefined) {
7982
return undefined;
8083
}
84+
if (options.apiVersion !== undefined &&
85+
options.apiVersion !== KnownAppConfigurationApiVersion.V20260501Preview) {
86+
throw new ArgumentError(ErrorMessages.API_VERSION_NOT_SUPPORTED);
87+
}
8188

8289
return {
8390
...options,

src/common/errorMessages.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export const enum ErrorMessages {
2020
INVALID_KEY_FILTER = "Key filter cannot be null or empty.",
2121
INVALID_LABEL_FILTER = "The characters '*' and ',' are not supported in label filters.",
2222
INVALID_TAG_FILTER = "Tag filter must follow the format 'tagName=tagValue'",
23+
API_VERSION_NOT_SUPPORTED = "The App Configuration provider requires API version '2026-05-01-preview'.",
2324
CONNECTION_STRING_OR_ENDPOINT_MISSED = "A connection string or an endpoint with credential must be specified to create a client.",
2425
REPLICA_DISCOVERY_NOT_SUPPORTED = "Replica discovery is not supported when loading from Azure Front Door. For guidance on how to take advantage of geo-replication when Azure Front Door is used, visit https://aka.ms/appconfig/geo-replication-with-afd",
2526
LOAD_BALANCING_NOT_SUPPORTED = "Load balancing is not supported when loading from Azure Front Door. For guidance on how to take advantage of geo-replication when Azure Front Door is used, visit https://aka.ms/appconfig/geo-replication-with-afd",

test/clientOptions.test.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import chaiAsPromised from "chai-as-promised";
77
chai.use(chaiAsPromised);
88
const expect = chai.expect;
99
import { load } from "../src/index.js";
10-
import { createMockedConnectionString } from "./utils/testHelper.js";
11-
import { getClientOptions } from "../src/appConfigurationClientManager.js";
10+
import { createMockedConnectionString, createMockedTokenCredential } from "./utils/testHelper.js";
11+
import { AppConfigurationClientManager, getClientOptions } from "../src/appConfigurationClientManager.js";
1212
import { getFeatureFlagClientOptions } from "../src/appConfigurationClient.js";
13+
import { KnownAppConfigurationApiVersion } from "@azure/app-configuration";
14+
import { ErrorMessages } from "../src/common/errorMessages.js";
1315
import nock from "nock";
1416

1517
class HttpRequestCountPolicy {
@@ -41,6 +43,16 @@ describe("custom client options", function () {
4143
nock.restore();
4244
});
4345

46+
it("should reject an unsupported API version", () => {
47+
const createClientManager = () => new AppConfigurationClientManager(createMockedConnectionString(fakeEndpoint), {
48+
clientOptions: {
49+
apiVersion: KnownAppConfigurationApiVersion.V20260401
50+
}
51+
});
52+
53+
expect(createClientManager).throws(ErrorMessages.API_VERSION_NOT_SUPPORTED);
54+
});
55+
4456
it("should use equivalent options for configuration and feature flag clients", () => {
4557
const countPolicy = new HttpRequestCountPolicy();
4658
const configurationClientOptions = getClientOptions({

0 commit comments

Comments
 (0)