@azure/app-configuration 1.3.2-alpha.20220401.1 → 1.4.0-alpha.20220412.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +15 -7
  2. package/dist/index.js +175 -423
  3. package/dist/index.js.map +1 -1
  4. package/dist-esm/src/appConfigCredential.js +24 -30
  5. package/dist-esm/src/appConfigCredential.js.map +1 -1
  6. package/dist-esm/src/appConfigurationClient.js +63 -81
  7. package/dist-esm/src/appConfigurationClient.js.map +1 -1
  8. package/dist-esm/src/generated/src/appConfiguration.js +47 -89
  9. package/dist-esm/src/generated/src/appConfiguration.js.map +1 -1
  10. package/dist-esm/src/generated/src/index.js +0 -1
  11. package/dist-esm/src/generated/src/index.js.map +1 -1
  12. package/dist-esm/src/generated/src/models/index.js +78 -1
  13. package/dist-esm/src/generated/src/models/index.js.map +1 -1
  14. package/dist-esm/src/generated/src/models/mappers.js.map +1 -1
  15. package/dist-esm/src/generated/src/models/parameters.js +7 -8
  16. package/dist-esm/src/generated/src/models/parameters.js.map +1 -1
  17. package/dist-esm/src/internal/helpers.js +35 -18
  18. package/dist-esm/src/internal/helpers.js.map +1 -1
  19. package/dist-esm/src/internal/synctokenpolicy.js +9 -18
  20. package/dist-esm/src/internal/synctokenpolicy.js.map +1 -1
  21. package/dist-esm/src/internal/tracing.js +11 -0
  22. package/dist-esm/src/internal/tracing.js.map +1 -0
  23. package/dist-esm/src/models.js.map +1 -1
  24. package/dist-esm/test/internal/helpers.spec.js +3 -12
  25. package/dist-esm/test/internal/helpers.spec.js.map +1 -1
  26. package/dist-esm/test/internal/http.spec.js +2 -14
  27. package/dist-esm/test/internal/http.spec.js.map +1 -1
  28. package/dist-esm/test/internal/node/throttlingRetryPolicy.spec.js +6 -5
  29. package/dist-esm/test/internal/node/throttlingRetryPolicy.spec.js.map +1 -1
  30. package/dist-esm/test/public/auth.spec.js +1 -1
  31. package/dist-esm/test/public/auth.spec.js.map +1 -1
  32. package/dist-esm/test/public/etags.spec.js +1 -2
  33. package/dist-esm/test/public/etags.spec.js.map +1 -1
  34. package/dist-esm/test/public/index.readonlytests.spec.js +6 -1
  35. package/dist-esm/test/public/index.readonlytests.spec.js.map +1 -1
  36. package/dist-esm/test/public/index.spec.js +23 -8
  37. package/dist-esm/test/public/index.spec.js.map +1 -1
  38. package/dist-esm/test/public/secretReference.spec.js.map +1 -1
  39. package/dist-esm/test/public/throwOrNotThrow.spec.js +1 -1
  40. package/dist-esm/test/public/throwOrNotThrow.spec.js.map +1 -1
  41. package/dist-esm/test/public/tracing.spec.js +34 -0
  42. package/dist-esm/test/public/tracing.spec.js.map +1 -0
  43. package/dist-esm/test/public/utils/testHelpers.js.map +1 -1
  44. package/package.json +12 -4
  45. package/types/app-configuration.d.ts +5 -14
  46. package/dist-esm/src/generated/src/appConfigurationContext.js +0 -46
  47. package/dist-esm/src/generated/src/appConfigurationContext.js.map +0 -1
  48. package/dist-esm/src/internal/tracingHelpers.js +0 -46
  49. package/dist-esm/src/internal/tracingHelpers.js.map +0 -1
  50. package/dist-esm/src/policies/throttlingRetryPolicy.js +0 -126
  51. package/dist-esm/src/policies/throttlingRetryPolicy.js.map +0 -1
  52. package/dist-esm/test/internal/throttlingRetryPolicyTests.spec.js +0 -145
  53. package/dist-esm/test/internal/throttlingRetryPolicyTests.spec.js.map +0 -1
  54. package/dist-esm/test/internal/tracingHelpers.spec.js +0 -112
  55. package/dist-esm/test/internal/tracingHelpers.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.readonlytests.spec.js","sourceRoot":"","sources":["../../../test/public/index.readonlytests.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n createAppConfigurationClientForTests,\n assertThrowsRestError,\n deleteKeyCompletely,\n assertThrowsAbortError,\n startRecorder,\n} from \"./utils/testHelpers\";\nimport { AppConfigurationClient } from \"../../src\";\nimport { assert } from \"chai\";\nimport { Recorder } from \"@azure-tools/test-recorder\";\nimport { Context } from \"mocha\";\n\ndescribe(\"AppConfigurationClient (set|clear)ReadOnly\", () => {\n let client: AppConfigurationClient;\n let recorder: Recorder;\n const testConfigSetting = {\n key: \"\",\n value: \"world\",\n label: \"some label\",\n };\n\n beforeEach(async function (this: Context) {\n recorder = startRecorder(this);\n testConfigSetting.key = recorder.getUniqueName(\"readOnlyTests\");\n client = createAppConfigurationClientForTests() || this.skip();\n // before it's set to read only we can set it all we want\n await client.setConfigurationSetting(testConfigSetting);\n });\n\n afterEach(async function () {\n await deleteKeyCompletely([testConfigSetting.key], client);\n await recorder.stop();\n });\n\n it(\"basic\", async function () {\n let storedSetting = await client.getConfigurationSetting({\n key: testConfigSetting.key,\n label: testConfigSetting.label,\n });\n assert.ok(!storedSetting.isReadOnly);\n\n await client.setReadOnly(testConfigSetting, true);\n\n storedSetting = await client.getConfigurationSetting({\n key: testConfigSetting.key,\n label: testConfigSetting.label,\n });\n assert.ok(storedSetting.isReadOnly);\n\n // any modification related methods throw exceptions\n await assertThrowsRestError(\n () => client.setConfigurationSetting(testConfigSetting),\n 409,\n \"Set should fail because the setting is read-only\"\n );\n await assertThrowsRestError(\n () =>\n client.deleteConfigurationSetting({\n key: testConfigSetting.key,\n label: testConfigSetting.label,\n }),\n 409,\n \"Delete should fail because the setting is read-only\"\n );\n });\n\n it(\"accepts operation options\", async function () {\n await client.getConfigurationSetting({\n key: testConfigSetting.key,\n label: testConfigSetting.label,\n });\n\n await assertThrowsAbortError(async () => {\n await client.setReadOnly(testConfigSetting, true, { requestOptions: { timeout: 1 } });\n });\n await assertThrowsAbortError(async () => {\n await client.setReadOnly(testConfigSetting, false, { requestOptions: { timeout: 1 } });\n });\n });\n});\n"]}
1
+ {"version":3,"file":"index.readonlytests.spec.js","sourceRoot":"","sources":["../../../test/public/index.readonlytests.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n assertThrowsAbortError,\n assertThrowsRestError,\n createAppConfigurationClientForTests,\n deleteKeyCompletely,\n startRecorder,\n} from \"./utils/testHelpers\";\nimport { AppConfigurationClient } from \"../../src\";\nimport { assert } from \"chai\";\nimport { Recorder, isPlaybackMode } from \"@azure-tools/test-recorder\";\nimport { Context } from \"mocha\";\n\ndescribe(\"AppConfigurationClient (set|clear)ReadOnly\", () => {\n let client: AppConfigurationClient;\n let recorder: Recorder;\n const testConfigSetting = {\n key: \"\",\n value: \"world\",\n label: \"some label\",\n };\n\n beforeEach(async function (this: Context) {\n recorder = startRecorder(this);\n testConfigSetting.key = recorder.getUniqueName(\"readOnlyTests\");\n client = createAppConfigurationClientForTests() || this.skip();\n // before it's set to read only we can set it all we want\n await client.setConfigurationSetting(testConfigSetting);\n });\n\n afterEach(async function () {\n await deleteKeyCompletely([testConfigSetting.key], client);\n await recorder.stop();\n });\n\n it(\"basic\", async function () {\n let storedSetting = await client.getConfigurationSetting({\n key: testConfigSetting.key,\n label: testConfigSetting.label,\n });\n assert.ok(!storedSetting.isReadOnly);\n\n await client.setReadOnly(testConfigSetting, true);\n\n storedSetting = await client.getConfigurationSetting({\n key: testConfigSetting.key,\n label: testConfigSetting.label,\n });\n assert.ok(storedSetting.isReadOnly);\n\n // any modification related methods throw exceptions\n await assertThrowsRestError(\n () => client.setConfigurationSetting(testConfigSetting),\n 409,\n \"Set should fail because the setting is read-only\"\n );\n await assertThrowsRestError(\n () =>\n client.deleteConfigurationSetting({\n key: testConfigSetting.key,\n label: testConfigSetting.label,\n }),\n 409,\n \"Delete should fail because the setting is read-only\"\n );\n });\n\n it(\"accepts operation options\", async function () {\n // Recorder checks for the recording and complains before core-rest-pipeline could throw the AbortError (Recorder v2 should help here)\n // eslint-disable-next-line @typescript-eslint/no-invalid-this\n if (isPlaybackMode()) this.skip();\n await client.getConfigurationSetting({\n key: testConfigSetting.key,\n label: testConfigSetting.label,\n });\n\n await assertThrowsAbortError(async () => {\n await client.setReadOnly(testConfigSetting, true, { requestOptions: { timeout: 1 } });\n });\n await assertThrowsAbortError(async () => {\n await client.setReadOnly(testConfigSetting, false, { requestOptions: { timeout: 1 } });\n });\n });\n});\n"]}
@@ -1,8 +1,8 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
  import { assert } from "chai";
4
- import { createAppConfigurationClientForTests, deleteKeyCompletely, toSortedArray, assertEqualSettings, assertThrowsRestError, assertThrowsAbortError, startRecorder, } from "./utils/testHelpers";
5
- import { delay, isLiveMode } from "@azure-tools/test-recorder";
4
+ import { assertEqualSettings, assertThrowsAbortError, assertThrowsRestError, createAppConfigurationClientForTests, deleteKeyCompletely, startRecorder, toSortedArray, } from "./utils/testHelpers";
5
+ import { delay, isLiveMode, isPlaybackMode } from "@azure-tools/test-recorder";
6
6
  describe("AppConfigurationClient", () => {
7
7
  let client;
8
8
  let recorder;
@@ -112,7 +112,7 @@ describe("AppConfigurationClient", () => {
112
112
  assert.equal(result.value, value, "Unexpected value in result from addConfigurationSetting().");
113
113
  // delete configuration
114
114
  const deletedSetting = await client.deleteConfigurationSetting(result);
115
- assert.equal(200, deletedSetting._response.status);
115
+ assert.equal(200, deletedSetting.statusCode);
116
116
  // confirm setting no longer exists
117
117
  try {
118
118
  await client.getConfigurationSetting({ key, label });
@@ -154,7 +154,6 @@ describe("AppConfigurationClient", () => {
154
154
  // delete actually happened (status code: 200) or if the setting wasn't
155
155
  // found which results in the same state but might matter to
156
156
  // the user(status code: 204)
157
- assert.equal(response._response.status, response.statusCode);
158
157
  assert.equal(204, response.statusCode);
159
158
  });
160
159
  it("throws when deleting a configuration setting (invalid etag)", async () => {
@@ -170,7 +169,11 @@ describe("AppConfigurationClient", () => {
170
169
  await assertThrowsRestError(() => client.deleteConfigurationSetting({ key, label, etag: "invalid" }, { onlyIfUnchanged: true }), 412);
171
170
  await client.deleteConfigurationSetting({ key, label });
172
171
  });
173
- it("accepts operation options", async () => {
172
+ it("accepts operation options", async function () {
173
+ // Recorder checks for the recording and complains before core-rest-pipeline could throw the AbortError (Recorder v2 should help here)
174
+ // eslint-disable-next-line @typescript-eslint/no-invalid-this
175
+ if (isPlaybackMode())
176
+ this.skip();
174
177
  const key = recorder.getUniqueName("deleteConfigTest");
175
178
  const label = "MyLabel";
176
179
  const value = "MyValue";
@@ -226,7 +229,11 @@ describe("AppConfigurationClient", () => {
226
229
  assert.notEqual(err.message, "Test failure");
227
230
  }
228
231
  });
229
- it("accepts operation options", async () => {
232
+ it("accepts operation options", async function () {
233
+ // Recorder checks for the recording and complains before core-rest-pipeline could throw the AbortError (Recorder v2 should help here)
234
+ // eslint-disable-next-line @typescript-eslint/no-invalid-this
235
+ if (isPlaybackMode())
236
+ this.skip();
230
237
  const key = recorder.getUniqueName("getConfigTest");
231
238
  const label = "test";
232
239
  const value = "foo";
@@ -524,7 +531,11 @@ describe("AppConfigurationClient", () => {
524
531
  await client.deleteConfigurationSetting({ key, label: i.toString() });
525
532
  }
526
533
  });
527
- it("accepts operation options", async () => {
534
+ it("accepts operation options", async function () {
535
+ // Recorder checks for the recording and complains before core-rest-pipeline could throw the AbortError (Recorder v2 should help here)
536
+ // eslint-disable-next-line @typescript-eslint/no-invalid-this
537
+ if (isPlaybackMode())
538
+ this.skip();
528
539
  await assertThrowsAbortError(async () => {
529
540
  const settingsIterator = client.listConfigurationSettings({
530
541
  requestOptions: { timeout: 1 },
@@ -593,7 +604,11 @@ describe("AppConfigurationClient", () => {
593
604
  { key, label: labelB, value: "fooB2", isReadOnly: false },
594
605
  ], revisions);
595
606
  });
596
- it("accepts operation options", async () => {
607
+ it("accepts operation options", async function () {
608
+ // Recorder checks for the recording and complains before core-rest-pipeline could throw the AbortError (Recorder v2 should help here)
609
+ // eslint-disable-next-line @typescript-eslint/no-invalid-this
610
+ if (isPlaybackMode())
611
+ this.skip();
597
612
  await assertThrowsAbortError(async () => {
598
613
  const iter = client.listRevisions({ labelFilter: labelA, requestOptions: { timeout: 1 } });
599
614
  await iter.next();
@@ -1 +1 @@
1
- {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../test/public/index.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { assert } from \"chai\";\nimport {\n createAppConfigurationClientForTests,\n deleteKeyCompletely,\n toSortedArray,\n assertEqualSettings,\n assertThrowsRestError,\n assertThrowsAbortError,\n startRecorder,\n} from \"./utils/testHelpers\";\nimport { AppConfigurationClient, ConfigurationSetting, ConfigurationSettingParam } from \"../../src\";\nimport { Recorder, delay, isLiveMode } from \"@azure-tools/test-recorder\";\nimport { Context } from \"mocha\";\n\ndescribe(\"AppConfigurationClient\", () => {\n let client: AppConfigurationClient;\n let recorder: Recorder;\n\n beforeEach(function (this: Context) {\n recorder = startRecorder(this);\n client = createAppConfigurationClientForTests() || this.skip();\n });\n\n afterEach(async function (this: Context) {\n await recorder.stop();\n });\n\n describe(\"simple usages\", () => {\n it(\"Add and query a setting without a label\", async () => {\n const key = recorder.getUniqueName(\"noLabelTests\");\n\n await client.addConfigurationSetting({ key, value: \"added\" });\n\n await compare({\n key,\n value: \"added\",\n label: undefined,\n });\n\n await client.deleteConfigurationSetting({ key });\n\n // will recreate the setting\n await client.setConfigurationSetting({ key, value: \"set\" });\n\n await compare({\n key,\n value: \"set\",\n label: undefined,\n });\n\n // and now acts as a wholesale update\n await client.setConfigurationSetting({ key, value: \"set a second time\" });\n\n await compare({\n key,\n value: \"set a second time\",\n label: undefined,\n });\n\n await client.deleteConfigurationSetting({ key });\n });\n\n async function compare(expected: {\n key: string;\n value: string;\n label?: string;\n }): Promise<void> {\n const actualSettings = await client.getConfigurationSetting(expected);\n\n assert.equal(expected.key, actualSettings.key);\n assert.equal(expected.value, actualSettings.value);\n assert.equal(expected.label, actualSettings.label);\n }\n });\n\n describe(\"addConfigurationSetting\", () => {\n it(\"sample works\", async () => {\n const key = recorder.getUniqueName(\"addConfigSample\");\n const result = await client.setConfigurationSetting({\n key,\n value: \"MyValue\",\n });\n\n assert.equal(key, result.key);\n });\n\n it(\"adds a configuration setting\", async () => {\n const key = recorder.getUniqueName(\"addConfigTest\");\n const label = \"MyLabel\";\n const value = \"MyValue\";\n const result = await client.addConfigurationSetting({ key, label, value });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n\n // just a sanity check - the 'eTag' field that gets added by the response headers\n // is removed (and is replaced by the 'etag' field in the model)\n assert.ok(!(result as any).eTag);\n assert.ok(result.etag);\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"throws an error if the configuration setting already exists\", async () => {\n const key = recorder.getUniqueName(\"addConfigTestTwice\");\n const label = \"test\";\n const value = \"foo\";\n const result = await client.addConfigurationSetting({ key, label, value });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n\n // attempt to add the same setting\n try {\n await client.addConfigurationSetting({ key, label, value });\n throw new Error(\"Test failure\");\n } catch (err) {\n assert.notEqual(err.message, \"Test failure\");\n }\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"accepts operation options\", async () => {\n const key = recorder.getUniqueName(\"addConfigTestTwice\");\n const label = \"test\";\n const value = \"foo\";\n await assertThrowsAbortError(async () => {\n await client.addConfigurationSetting(\n { key, label, value },\n {\n requestOptions: {\n timeout: 1,\n },\n }\n );\n });\n });\n });\n\n describe(\"deleteConfigurationSetting\", () => {\n it(\"deletes an existing configuration setting\", async () => {\n const key = recorder.getUniqueName(\"deleteConfigTest\");\n const label = \"MyLabel\";\n const value = \"MyValue\";\n\n // create configuration\n const result = await client.addConfigurationSetting({ key, label, value });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n\n // delete configuration\n const deletedSetting = await client.deleteConfigurationSetting(result);\n assert.equal(200, deletedSetting._response.status);\n\n // confirm setting no longer exists\n try {\n await client.getConfigurationSetting({ key, label });\n throw new Error(\"Test failure\");\n } catch (err) {\n assert.notEqual(err.message, \"Test failure\");\n }\n });\n\n it(\"deletes an existing configuration setting (valid etag)\", async () => {\n const key = recorder.getUniqueName(\"deleteConfigTestEtag\");\n const label = \"test\";\n const value = \"foo\";\n\n // create configuration\n const result = await client.addConfigurationSetting({ key, label, value });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n\n // delete configuration\n await client.deleteConfigurationSetting(\n {\n key,\n label,\n },\n { onlyIfUnchanged: true }\n );\n\n // confirm setting no longer exists\n try {\n await client.getConfigurationSetting({ key, label });\n throw new Error(\"Test failure\");\n } catch (err) {\n assert.notEqual(err.message, \"Test failure\");\n }\n });\n\n it(\"does not throw when deleting a non-existent configuration setting\", async () => {\n const key = recorder.getUniqueName(\"deleteConfigTestNA\");\n const label = \"test\";\n\n // delete configuration\n const response = await client.deleteConfigurationSetting({ key, label });\n\n // we hoist this code up to the top in case users want to check if the\n // delete actually happened (status code: 200) or if the setting wasn't\n // found which results in the same state but might matter to\n // the user(status code: 204)\n assert.equal(response._response.status, response.statusCode);\n assert.equal(204, response.statusCode);\n });\n\n it(\"throws when deleting a configuration setting (invalid etag)\", async () => {\n const key = recorder.getUniqueName(\"deleteConfigTestBadEtag\");\n const label = \"test\";\n const value = \"foo\";\n\n // create configuration\n const result = await client.addConfigurationSetting({ key, label, value });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n\n // delete configuration\n await assertThrowsRestError(\n () =>\n client.deleteConfigurationSetting(\n { key, label, etag: \"invalid\" },\n { onlyIfUnchanged: true }\n ),\n 412\n );\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"accepts operation options\", async () => {\n const key = recorder.getUniqueName(\"deleteConfigTest\");\n const label = \"MyLabel\";\n const value = \"MyValue\";\n\n // create configuration\n const result = await client.addConfigurationSetting({ key, label, value });\n\n // delete configuration\n await assertThrowsAbortError(async () => {\n await client.deleteConfigurationSetting(result, {\n requestOptions: { timeout: 1 },\n });\n });\n });\n });\n\n describe(\"getConfigurationSetting\", () => {\n it(\"retrieves an existing configuration setting\", async () => {\n const key = recorder.getUniqueName(\"getConfigTest\");\n const label = \"test\";\n const value = \"foo\";\n const tags = {\n bar: \"baz\",\n car: \"caz\",\n };\n const contentType = \"application/json\";\n\n // create configuration\n const result = await client.addConfigurationSetting({ key, label, value, contentType, tags });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.isReadOnly,\n false,\n \"Unexpected readOnly in result from addConfigurationSetting().\"\n );\n assert.deepEqual(\n result.tags,\n tags,\n \"Unexpected tags in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.contentType,\n contentType,\n \"Unexpected contentType in result from addConfigurationSetting().\"\n );\n\n // retrieve the value from the service\n const remoteResult = await client.getConfigurationSetting({ key, label });\n assert.equal(\n remoteResult.key,\n key,\n \"Unexpected key in result from getConfigurationSetting().\"\n );\n assert.equal(\n remoteResult.label,\n label,\n \"Unexpected label in result from getConfigurationSetting().\"\n );\n assert.equal(\n remoteResult.value,\n value,\n \"Unexpected value in result from getConfigurationSetting().\"\n );\n assert.equal(\n remoteResult.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from getConfigurationSetting().\"\n );\n assert.equal(\n remoteResult.isReadOnly,\n false,\n \"Unexpected readOnly in result from getConfigurationSetting().\"\n );\n assert.deepEqual(\n remoteResult.tags,\n tags,\n \"Unexpected tags in result from getConfigurationSetting().\"\n );\n assert.equal(\n remoteResult.contentType,\n contentType,\n \"Unexpected contentType in result from getConfigurationSetting().\"\n );\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"throws when retrieving a non-existent configuration setting\", async () => {\n const key = recorder.getUniqueName(\"getConfigTestNA\");\n const label = \"test\";\n\n // retrieve the value from the service\n try {\n await client.getConfigurationSetting({ key, label });\n throw new Error(\"Test failure\");\n } catch (err) {\n assert.notEqual(err.message, \"Test failure\");\n }\n });\n\n it(\"accepts operation options\", async () => {\n const key = recorder.getUniqueName(\"getConfigTest\");\n const label = \"test\";\n const value = \"foo\";\n const tags = {\n bar: \"baz\",\n car: \"caz\",\n };\n const contentType = \"application/json\";\n await client.addConfigurationSetting({ key, label, value, contentType, tags });\n await assertThrowsAbortError(async () => {\n await client.getConfigurationSetting({ key, label }, { requestOptions: { timeout: 1 } });\n });\n });\n\n it(\"by date\", async () => {\n const key = recorder.getUniqueName(\"getConfigurationSettingByDate\");\n\n const initialSetting = await client.setConfigurationSetting({\n key,\n value: \"value1\",\n });\n\n await delay(1000);\n await client.setConfigurationSetting({\n key,\n value: \"value2\",\n });\n\n const settingAtPointInTime = await client.getConfigurationSetting(\n { key },\n {\n acceptDateTime: initialSetting.lastModified,\n }\n );\n\n assert.equal(\"value1\", settingAtPointInTime.value);\n });\n\n it(\"Using `select` via `fields`\", async () => {\n const settingToAdd: ConfigurationSettingParam = {\n key: recorder.getUniqueName(\"getConfigTest\"),\n value: \"value that will not be retrieved\",\n contentType: \"a content type\",\n label: \"a label\",\n };\n\n await client.addConfigurationSetting(settingToAdd);\n await client.setReadOnly(settingToAdd, true);\n\n const retrievedSetting = await client.getConfigurationSetting(settingToAdd, {\n fields: [\"isReadOnly\", \"contentType\", \"lastModified\", \"label\"],\n });\n\n assert.isOk(retrievedSetting.lastModified);\n\n assert.deepEqual(\n {\n key: retrievedSetting.key,\n value: retrievedSetting.value,\n contentType: retrievedSetting.contentType,\n etag: retrievedSetting.etag,\n label: retrievedSetting.label,\n tags: retrievedSetting.tags,\n statusCode: retrievedSetting.statusCode,\n isReadOnly: retrievedSetting.isReadOnly,\n },\n {\n contentType: \"a content type\",\n isReadOnly: true,\n label: \"a label\",\n\n // this is an HTTP response field and is always included.\n statusCode: 200,\n\n // these values were purposefully omitted from my list of fields that I\n // selected above.\n key: undefined,\n value: undefined,\n etag: undefined,\n tags: undefined,\n }\n );\n });\n });\n\n describe(\"listConfigurationSettings\", () => {\n let uniqueLabel: string;\n let listConfigSettingA: ConfigurationSetting;\n let count = 0;\n\n /** Simulating a setting in production that will be made read only */\n const productionASettingId: Pick<\n ConfigurationSetting,\n \"key\" | \"label\" | \"value\" | \"contentType\"\n > = {\n key: \"\",\n label: \"\",\n value: \"[A] production value\",\n contentType: \"a content type\",\n };\n\n const keys: {\n listConfigSettingA: string;\n listConfigSettingB: string;\n } = {\n listConfigSettingA: \"\",\n listConfigSettingB: \"\",\n };\n\n beforeEach(async () => {\n keys.listConfigSettingA = recorder.getUniqueName(`listConfigSetting${count}A`);\n keys.listConfigSettingB = recorder.getUniqueName(`listConfigSetting${count}B`);\n count += 1;\n\n uniqueLabel = recorder.getUniqueName(\"listConfigSettingsLabel\");\n productionASettingId.key = keys.listConfigSettingA;\n productionASettingId.label = uniqueLabel;\n\n await client.addConfigurationSetting(productionASettingId);\n await client.setReadOnly(productionASettingId, true);\n\n listConfigSettingA = await client.addConfigurationSetting({\n key: keys.listConfigSettingA,\n value: \"[A] value\",\n });\n\n await client.addConfigurationSetting({\n key: keys.listConfigSettingB,\n label: uniqueLabel,\n value: \"[B] production value\",\n });\n await client.addConfigurationSetting({\n key: keys.listConfigSettingB,\n value: \"[B] value\",\n });\n });\n\n after(async () => {\n try {\n await deleteKeyCompletely([keys.listConfigSettingA, keys.listConfigSettingB], client);\n } catch (e) {\n /** empty */\n }\n });\n\n it(\"undefined doesn't throw and will just return everything\", async () => {\n const settingsIterator = client.listConfigurationSettings();\n await settingsIterator.next();\n });\n\n it(\"exact match on label\", async () => {\n // query with a direct label match\n const byLabelIterator = client.listConfigurationSettings({ labelFilter: uniqueLabel });\n const byLabelSettings = await toSortedArray(byLabelIterator);\n\n assertEqualSettings(\n [\n {\n key: keys.listConfigSettingA,\n value: \"[A] production value\",\n label: uniqueLabel,\n isReadOnly: true,\n },\n {\n key: keys.listConfigSettingB,\n value: \"[B] production value\",\n label: uniqueLabel,\n isReadOnly: false,\n },\n ],\n byLabelSettings\n );\n });\n\n it(\"label wildcards\", async () => {\n // query with a direct label match\n const byLabelIterator = client.listConfigurationSettings({\n labelFilter: uniqueLabel.substring(0, uniqueLabel.length - 1) + \"*\",\n });\n const byLabelSettings = await toSortedArray(byLabelIterator);\n\n assertEqualSettings(\n [\n {\n key: keys.listConfigSettingA,\n value: \"[A] production value\",\n label: uniqueLabel,\n isReadOnly: true,\n },\n {\n key: keys.listConfigSettingB,\n value: \"[B] production value\",\n label: uniqueLabel,\n isReadOnly: false,\n },\n ],\n byLabelSettings\n );\n });\n\n it(\"exact match on key\", async () => {\n const byKeyIterator = client.listConfigurationSettings({\n keyFilter: keys.listConfigSettingA,\n });\n const byKeySettings = await toSortedArray(byKeyIterator);\n\n assertEqualSettings(\n [\n {\n key: keys.listConfigSettingA,\n value: \"[A] production value\",\n label: uniqueLabel,\n isReadOnly: true,\n },\n {\n key: keys.listConfigSettingA,\n value: \"[A] value\",\n label: undefined,\n isReadOnly: false,\n },\n ],\n byKeySettings\n );\n });\n\n it(\"key wildcards\", async () => {\n // query with a key wildcard\n const keyFilter = keys.listConfigSettingA;\n const byKeyIterator = client.listConfigurationSettings({\n keyFilter: keyFilter.substring(0, keyFilter.length - 1) + \"*\",\n });\n const byKeySettings = await toSortedArray(byKeyIterator);\n\n assertEqualSettings(\n [\n {\n key: keys.listConfigSettingA,\n value: \"[A] production value\",\n label: uniqueLabel,\n isReadOnly: true,\n },\n {\n key: keys.listConfigSettingA,\n value: \"[A] value\",\n label: undefined,\n isReadOnly: false,\n },\n ],\n byKeySettings\n );\n });\n\n it(\"Using `select` via `fields`\", async () => {\n let byKeyIterator = client.listConfigurationSettings({\n keyFilter: productionASettingId.key,\n labelFilter: productionASettingId.label,\n fields: [\"isReadOnly\", \"contentType\", \"lastModified\", \"label\"],\n });\n const [retrievedSetting, ...otherValues] = await toSortedArray(byKeyIterator);\n\n assert.isEmpty(otherValues);\n assert.isOk(retrievedSetting.lastModified);\n\n assert.deepEqual(\n {\n key: retrievedSetting.key,\n value: retrievedSetting.value,\n contentType: retrievedSetting.contentType,\n etag: retrievedSetting.etag,\n label: retrievedSetting.label,\n tags: retrievedSetting.tags,\n isReadOnly: retrievedSetting.isReadOnly,\n },\n {\n contentType: \"a content type\",\n isReadOnly: true,\n label: productionASettingId.label,\n\n // these values were purposefully omitted from my list of fields that I\n // selected above.\n key: undefined,\n value: undefined,\n etag: undefined,\n tags: undefined,\n }\n );\n\n // only fill in the 'readOnly' field (which is really the locked field in the REST model)\n byKeyIterator = client.listConfigurationSettings({\n keyFilter: keys.listConfigSettingA,\n fields: [\"key\", \"label\", \"value\"],\n });\n const settings = await toSortedArray(byKeyIterator);\n\n // the fields we retrieved\n assert.equal(productionASettingId.key, settings[0].key);\n assert.equal(\"[A] production value\", settings[0].value);\n assert.equal(uniqueLabel, settings[0].label);\n\n assert.ok(!settings[0].isReadOnly);\n assert.ok(!settings[0].contentType);\n assert.ok(!settings[0].etag);\n });\n\n it(\"by date\", async () => {\n const byKeyIterator = client.listConfigurationSettings({\n keyFilter: \"listConfigSetting*\",\n acceptDateTime: listConfigSettingA.lastModified,\n });\n\n const settings = await toSortedArray(byKeyIterator);\n let foundMyExactSettingToo = false;\n\n // all settings returned should be the same date or as old as my setting\n for (const setting of settings) {\n assert.ok(setting.lastModified);\n assert.ok(setting.lastModified! <= listConfigSettingA.lastModified!);\n\n if (setting.key === listConfigSettingA.key && setting.label === listConfigSettingA.label) {\n foundMyExactSettingToo = true;\n }\n }\n\n assert.ok(foundMyExactSettingToo);\n });\n\n it(\"list with multiple pages\", async function () {\n // This occasionally hits 429 error (throttling) since we are making 100s of requests in the test to create, get and delete keys.\n // To avoid hitting the service with too many requests, skipping the test in live.\n // More details at https://github.com/Azure/azure-sdk-for-js/issues/16743\n //\n // Remove the following line if you want to hit the live service.\n // eslint-disable-next-line @typescript-eslint/no-invalid-this\n if (isLiveMode()) this.skip();\n\n const key = recorder.getUniqueName(\"listMultiplePagesOfResults\");\n\n // this number is arbitrarily chosen to match the size of a page + 1\n const expectedNumberOfLabels = 200;\n\n let addSettingPromises = [];\n\n for (let i = 0; i < expectedNumberOfLabels; i++) {\n addSettingPromises.push(\n client.addConfigurationSetting({\n key,\n value: `the value for ${i}`,\n label: i.toString(),\n })\n );\n\n if (i !== 0 && i % 10 === 0) {\n await Promise.all(addSettingPromises);\n addSettingPromises = [];\n }\n }\n\n await Promise.all(addSettingPromises);\n\n const listResult = client.listConfigurationSettings({\n keyFilter: key,\n });\n\n const sortedResults = await toSortedArray(listResult);\n assert.equal(sortedResults.length, 200);\n\n // make sure we have 200 unique labels\n const uniqueLabels = new Set(sortedResults.map((res) => res.label));\n assert.equal(uniqueLabels.size, 200);\n\n for (let i = 0; i < 200; ++i) {\n assert.ok(uniqueLabels.has(i.toString()));\n }\n\n for (let i = 0; i < expectedNumberOfLabels; i++) {\n await client.deleteConfigurationSetting({ key, label: i.toString() });\n }\n });\n\n it(\"accepts operation options\", async () => {\n await assertThrowsAbortError(async () => {\n const settingsIterator = client.listConfigurationSettings({\n requestOptions: { timeout: 1 },\n });\n await settingsIterator.next();\n });\n });\n });\n\n describe(\"listRevisions\", () => {\n let key: string;\n let labelA: string;\n let labelB: string;\n let originalSetting: ConfigurationSetting;\n\n beforeEach(async () => {\n key = recorder.getUniqueName(`listRevisions`);\n labelA = recorder.getUniqueName(`list-revisions-A`);\n labelB = recorder.getUniqueName(`list-revisions-B`);\n\n // we'll generate two sets of keys and labels for this selection\n originalSetting = await client.addConfigurationSetting({\n key,\n label: labelA,\n value: \"fooA1\",\n });\n await delay(1000);\n await client.setConfigurationSetting({ key, label: labelA, value: \"fooA2\" });\n\n await client.addConfigurationSetting({ key, label: labelB, value: \"fooB1\" });\n await client.setConfigurationSetting({ key, label: labelB, value: \"fooB2\" });\n });\n\n it(\"exact match on label\", async () => {\n const revisionsWithLabelIterator = client.listRevisions({ labelFilter: labelA });\n const revisions = await toSortedArray(revisionsWithLabelIterator);\n\n assertEqualSettings(\n [\n { key, label: labelA, value: \"fooA1\", isReadOnly: false },\n { key, label: labelA, value: \"fooA2\", isReadOnly: false },\n ],\n revisions\n );\n });\n\n it(\"label wildcards\", async () => {\n const revisionsWithLabelIterator = client.listRevisions({\n labelFilter: labelA.substring(0, labelA.length - 1) + \"*\",\n });\n const revisions = await toSortedArray(revisionsWithLabelIterator);\n\n assertEqualSettings(\n [\n { key, label: labelA, value: \"fooA1\", isReadOnly: false },\n { key, label: labelA, value: \"fooA2\", isReadOnly: false },\n ],\n revisions\n );\n });\n\n it(\"exact match on key\", async () => {\n const revisionsWithKeyIterator = client.listRevisions({ keyFilter: key });\n const revisions = await toSortedArray(revisionsWithKeyIterator);\n\n assertEqualSettings(\n [\n { key, label: labelA, value: \"fooA1\", isReadOnly: false },\n { key, label: labelA, value: \"fooA2\", isReadOnly: false },\n { key, label: labelB, value: \"fooB1\", isReadOnly: false },\n { key, label: labelB, value: \"fooB2\", isReadOnly: false },\n ],\n revisions\n );\n });\n\n it(\"key wildcards\", async () => {\n const revisionsWithKeyIterator = client.listRevisions({\n keyFilter: key.substring(0, key.length - 1) + \"*\",\n });\n const revisions = await toSortedArray(revisionsWithKeyIterator);\n\n assertEqualSettings(\n [\n { key, label: labelA, value: \"fooA1\", isReadOnly: false },\n { key, label: labelA, value: \"fooA2\", isReadOnly: false },\n { key, label: labelB, value: \"fooB1\", isReadOnly: false },\n { key, label: labelB, value: \"fooB2\", isReadOnly: false },\n ],\n revisions\n );\n });\n\n it(\"accepts operation options\", async () => {\n await assertThrowsAbortError(async () => {\n const iter = client.listRevisions({ labelFilter: labelA, requestOptions: { timeout: 1 } });\n await iter.next();\n });\n });\n\n it(\"by date\", async () => {\n const byKeyIterator = client.listRevisions({\n keyFilter: key,\n acceptDateTime: originalSetting.lastModified,\n });\n\n const settings = await toSortedArray(byKeyIterator);\n\n assert.deepEqual(\n {\n key: originalSetting.key,\n label: originalSetting.label,\n value: originalSetting.value,\n isReadOnly: originalSetting.isReadOnly,\n },\n {\n key: settings[0].key,\n label: settings[0].label,\n value: settings[0].value,\n isReadOnly: settings[0].isReadOnly,\n }\n );\n });\n });\n\n describe(\"setConfigurationSetting\", () => {\n it(\"replaces a configuration setting\", async () => {\n const key = recorder.getUniqueName(`setConfigTest`);\n const label = \"test\";\n const contentType = \"application/json\";\n const tags = {\n bar: \"baz\",\n car: \"caz\",\n };\n\n // create configuration\n const result = await client.addConfigurationSetting({\n key,\n label,\n value: \"foo\",\n contentType,\n tags,\n });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n \"foo\",\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.isReadOnly,\n false,\n \"Unexpected readOnly in result from addConfigurationSetting().\"\n );\n assert.deepEqual(\n result.tags,\n tags,\n \"Unexpected tags in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.contentType,\n contentType,\n \"Unexpected contentType in result from addConfigurationSetting().\"\n );\n\n const replacedResult = await client.setConfigurationSetting({ key, label, value: \"foo2\" });\n\n assert.equal(\n replacedResult.key,\n key,\n \"Unexpected key in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.label,\n label,\n \"Unexpected label in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.value,\n \"foo2\",\n \"Unexpected value in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.isReadOnly,\n false,\n \"Unexpected readOnly in result from setConfigurationSetting().\"\n );\n assert.deepEqual(\n replacedResult.tags,\n {},\n \"Unexpected tags in result from setConfigurationSetting().\"\n );\n assert.strictEqual(\n replacedResult.contentType,\n null,\n \"Unexpected contentType in result from setConfigurationSetting().\"\n );\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"replaces a configuration setting (valid etag)\", async () => {\n const key = recorder.getUniqueName(`setConfigTestEtag`);\n const label = \"test\";\n const contentType = \"application/json\";\n const tags = {\n bar: \"baz\",\n car: \"caz\",\n };\n\n // create configuration\n const result = await client.addConfigurationSetting({\n key,\n label,\n value: \"foo\",\n contentType,\n tags,\n });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n \"foo\",\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.isReadOnly,\n false,\n \"Unexpected readOnly in result from addConfigurationSetting().\"\n );\n assert.deepEqual(\n result.tags,\n tags,\n \"Unexpected tags in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.contentType,\n contentType,\n \"Unexpected contentType in result from addConfigurationSetting().\"\n );\n\n const replacedResult = await client.setConfigurationSetting(\n {\n key,\n label,\n value: \"foo2\",\n etag: result.etag,\n },\n { onlyIfUnchanged: true }\n );\n\n assert.equal(\n replacedResult.key,\n key,\n \"Unexpected key in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.label,\n label,\n \"Unexpected label in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.value,\n \"foo2\",\n \"Unexpected value in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.isReadOnly,\n false,\n \"Unexpected readOnly in result from setConfigurationSetting().\"\n );\n assert.deepEqual(\n replacedResult.tags,\n {},\n \"Unexpected tags in result from setConfigurationSetting().\"\n );\n assert.strictEqual(\n replacedResult.contentType,\n null,\n \"Unexpected contentType in result from setConfigurationSetting().\"\n );\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"creates a configuration setting if it doesn't exist\", async () => {\n const key = recorder.getUniqueName(`setConfigTestNA`);\n const label = \"test\";\n const value = \"foo\";\n\n const result = await client.setConfigurationSetting({ key, label, value: \"foo\" });\n assert.equal(result.key, key, \"Unexpected key in result from setConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from setConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from setConfigurationSetting().\"\n );\n assert.equal(\n result.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from setConfigurationSetting().\"\n );\n assert.equal(\n result.isReadOnly,\n false,\n \"Unexpected readOnly in result from setConfigurationSetting().\"\n );\n assert.deepEqual(\n result.tags,\n {},\n \"Unexpected tags in result from setConfigurationSetting().\"\n );\n assert.strictEqual(\n result.contentType,\n null,\n \"Unexpected contentType in result from setConfigurationSetting().\"\n );\n });\n\n it(\"accepts operation options\", async () => {\n const key = recorder.getUniqueName(`setConfigTestNA`);\n const label = \"test\";\n const value = \"foo\";\n await assertThrowsAbortError(async () => {\n await client.setConfigurationSetting(\n { key, label, value: value },\n {\n requestOptions: {\n timeout: 1,\n },\n }\n );\n });\n });\n });\n});\n"]}
1
+ {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../test/public/index.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { assert } from \"chai\";\nimport {\n assertEqualSettings,\n assertThrowsAbortError,\n assertThrowsRestError,\n createAppConfigurationClientForTests,\n deleteKeyCompletely,\n startRecorder,\n toSortedArray,\n} from \"./utils/testHelpers\";\nimport { AppConfigurationClient, ConfigurationSetting, ConfigurationSettingParam } from \"../../src\";\nimport { Recorder, delay, isLiveMode, isPlaybackMode } from \"@azure-tools/test-recorder\";\nimport { Context } from \"mocha\";\n\ndescribe(\"AppConfigurationClient\", () => {\n let client: AppConfigurationClient;\n let recorder: Recorder;\n\n beforeEach(function (this: Context) {\n recorder = startRecorder(this);\n client = createAppConfigurationClientForTests() || this.skip();\n });\n\n afterEach(async function (this: Context) {\n await recorder.stop();\n });\n\n describe(\"simple usages\", () => {\n it(\"Add and query a setting without a label\", async () => {\n const key = recorder.getUniqueName(\"noLabelTests\");\n\n await client.addConfigurationSetting({ key, value: \"added\" });\n\n await compare({\n key,\n value: \"added\",\n label: undefined,\n });\n\n await client.deleteConfigurationSetting({ key });\n\n // will recreate the setting\n await client.setConfigurationSetting({ key, value: \"set\" });\n\n await compare({\n key,\n value: \"set\",\n label: undefined,\n });\n\n // and now acts as a wholesale update\n await client.setConfigurationSetting({ key, value: \"set a second time\" });\n\n await compare({\n key,\n value: \"set a second time\",\n label: undefined,\n });\n\n await client.deleteConfigurationSetting({ key });\n });\n\n async function compare(expected: {\n key: string;\n value: string;\n label?: string;\n }): Promise<void> {\n const actualSettings = await client.getConfigurationSetting(expected);\n\n assert.equal(expected.key, actualSettings.key);\n assert.equal(expected.value, actualSettings.value);\n assert.equal(expected.label, actualSettings.label);\n }\n });\n\n describe(\"addConfigurationSetting\", () => {\n it(\"sample works\", async () => {\n const key = recorder.getUniqueName(\"addConfigSample\");\n const result = await client.setConfigurationSetting({\n key,\n value: \"MyValue\",\n });\n\n assert.equal(key, result.key);\n });\n\n it(\"adds a configuration setting\", async () => {\n const key = recorder.getUniqueName(\"addConfigTest\");\n const label = \"MyLabel\";\n const value = \"MyValue\";\n const result = await client.addConfigurationSetting({ key, label, value });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n\n // just a sanity check - the 'eTag' field that gets added by the response headers\n // is removed (and is replaced by the 'etag' field in the model)\n assert.ok(!(result as any).eTag);\n assert.ok(result.etag);\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"throws an error if the configuration setting already exists\", async () => {\n const key = recorder.getUniqueName(\"addConfigTestTwice\");\n const label = \"test\";\n const value = \"foo\";\n const result = await client.addConfigurationSetting({ key, label, value });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n\n // attempt to add the same setting\n try {\n await client.addConfigurationSetting({ key, label, value });\n throw new Error(\"Test failure\");\n } catch (err) {\n assert.notEqual((err as { message: string }).message, \"Test failure\");\n }\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"accepts operation options\", async () => {\n const key = recorder.getUniqueName(\"addConfigTestTwice\");\n const label = \"test\";\n const value = \"foo\";\n await assertThrowsAbortError(async () => {\n await client.addConfigurationSetting(\n { key, label, value },\n {\n requestOptions: {\n timeout: 1,\n },\n }\n );\n });\n });\n });\n\n describe(\"deleteConfigurationSetting\", () => {\n it(\"deletes an existing configuration setting\", async () => {\n const key = recorder.getUniqueName(\"deleteConfigTest\");\n const label = \"MyLabel\";\n const value = \"MyValue\";\n\n // create configuration\n const result = await client.addConfigurationSetting({ key, label, value });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n\n // delete configuration\n const deletedSetting = await client.deleteConfigurationSetting(result);\n assert.equal(200, deletedSetting.statusCode);\n\n // confirm setting no longer exists\n try {\n await client.getConfigurationSetting({ key, label });\n throw new Error(\"Test failure\");\n } catch (err) {\n assert.notEqual((err as { message: string }).message, \"Test failure\");\n }\n });\n\n it(\"deletes an existing configuration setting (valid etag)\", async () => {\n const key = recorder.getUniqueName(\"deleteConfigTestEtag\");\n const label = \"test\";\n const value = \"foo\";\n\n // create configuration\n const result = await client.addConfigurationSetting({ key, label, value });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n\n // delete configuration\n await client.deleteConfigurationSetting(\n {\n key,\n label,\n },\n { onlyIfUnchanged: true }\n );\n\n // confirm setting no longer exists\n try {\n await client.getConfigurationSetting({ key, label });\n throw new Error(\"Test failure\");\n } catch (err) {\n assert.notEqual((err as { message: string }).message, \"Test failure\");\n }\n });\n\n it(\"does not throw when deleting a non-existent configuration setting\", async () => {\n const key = recorder.getUniqueName(\"deleteConfigTestNA\");\n const label = \"test\";\n\n // delete configuration\n const response = await client.deleteConfigurationSetting({ key, label });\n\n // we hoist this code up to the top in case users want to check if the\n // delete actually happened (status code: 200) or if the setting wasn't\n // found which results in the same state but might matter to\n // the user(status code: 204)\n assert.equal(204, response.statusCode);\n });\n\n it(\"throws when deleting a configuration setting (invalid etag)\", async () => {\n const key = recorder.getUniqueName(\"deleteConfigTestBadEtag\");\n const label = \"test\";\n const value = \"foo\";\n\n // create configuration\n const result = await client.addConfigurationSetting({ key, label, value });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n\n // delete configuration\n await assertThrowsRestError(\n () =>\n client.deleteConfigurationSetting(\n { key, label, etag: \"invalid\" },\n { onlyIfUnchanged: true }\n ),\n 412\n );\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"accepts operation options\", async function () {\n // Recorder checks for the recording and complains before core-rest-pipeline could throw the AbortError (Recorder v2 should help here)\n // eslint-disable-next-line @typescript-eslint/no-invalid-this\n if (isPlaybackMode()) this.skip();\n const key = recorder.getUniqueName(\"deleteConfigTest\");\n const label = \"MyLabel\";\n const value = \"MyValue\";\n\n // create configuration\n const result = await client.addConfigurationSetting({ key, label, value });\n\n // delete configuration\n await assertThrowsAbortError(async () => {\n await client.deleteConfigurationSetting(result, {\n requestOptions: { timeout: 1 },\n });\n });\n });\n });\n\n describe(\"getConfigurationSetting\", () => {\n it(\"retrieves an existing configuration setting\", async () => {\n const key = recorder.getUniqueName(\"getConfigTest\");\n const label = \"test\";\n const value = \"foo\";\n const tags = {\n bar: \"baz\",\n car: \"caz\",\n };\n const contentType = \"application/json\";\n\n // create configuration\n const result = await client.addConfigurationSetting({ key, label, value, contentType, tags });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.isReadOnly,\n false,\n \"Unexpected readOnly in result from addConfigurationSetting().\"\n );\n assert.deepEqual(\n result.tags,\n tags,\n \"Unexpected tags in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.contentType,\n contentType,\n \"Unexpected contentType in result from addConfigurationSetting().\"\n );\n\n // retrieve the value from the service\n const remoteResult = await client.getConfigurationSetting({ key, label });\n assert.equal(\n remoteResult.key,\n key,\n \"Unexpected key in result from getConfigurationSetting().\"\n );\n assert.equal(\n remoteResult.label,\n label,\n \"Unexpected label in result from getConfigurationSetting().\"\n );\n assert.equal(\n remoteResult.value,\n value,\n \"Unexpected value in result from getConfigurationSetting().\"\n );\n assert.equal(\n remoteResult.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from getConfigurationSetting().\"\n );\n assert.equal(\n remoteResult.isReadOnly,\n false,\n \"Unexpected readOnly in result from getConfigurationSetting().\"\n );\n assert.deepEqual(\n remoteResult.tags,\n tags,\n \"Unexpected tags in result from getConfigurationSetting().\"\n );\n assert.equal(\n remoteResult.contentType,\n contentType,\n \"Unexpected contentType in result from getConfigurationSetting().\"\n );\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"throws when retrieving a non-existent configuration setting\", async () => {\n const key = recorder.getUniqueName(\"getConfigTestNA\");\n const label = \"test\";\n\n // retrieve the value from the service\n try {\n await client.getConfigurationSetting({ key, label });\n throw new Error(\"Test failure\");\n } catch (err) {\n assert.notEqual((err as { message: string }).message, \"Test failure\");\n }\n });\n\n it(\"accepts operation options\", async function () {\n // Recorder checks for the recording and complains before core-rest-pipeline could throw the AbortError (Recorder v2 should help here)\n // eslint-disable-next-line @typescript-eslint/no-invalid-this\n if (isPlaybackMode()) this.skip();\n const key = recorder.getUniqueName(\"getConfigTest\");\n const label = \"test\";\n const value = \"foo\";\n const tags = {\n bar: \"baz\",\n car: \"caz\",\n };\n const contentType = \"application/json\";\n await client.addConfigurationSetting({ key, label, value, contentType, tags });\n await assertThrowsAbortError(async () => {\n await client.getConfigurationSetting({ key, label }, { requestOptions: { timeout: 1 } });\n });\n });\n\n it(\"by date\", async () => {\n const key = recorder.getUniqueName(\"getConfigurationSettingByDate\");\n\n const initialSetting = await client.setConfigurationSetting({\n key,\n value: \"value1\",\n });\n\n await delay(1000);\n await client.setConfigurationSetting({\n key,\n value: \"value2\",\n });\n\n const settingAtPointInTime = await client.getConfigurationSetting(\n { key },\n {\n acceptDateTime: initialSetting.lastModified,\n }\n );\n\n assert.equal(\"value1\", settingAtPointInTime.value);\n });\n\n it(\"Using `select` via `fields`\", async () => {\n const settingToAdd: ConfigurationSettingParam = {\n key: recorder.getUniqueName(\"getConfigTest\"),\n value: \"value that will not be retrieved\",\n contentType: \"a content type\",\n label: \"a label\",\n };\n\n await client.addConfigurationSetting(settingToAdd);\n await client.setReadOnly(settingToAdd, true);\n\n const retrievedSetting = await client.getConfigurationSetting(settingToAdd, {\n fields: [\"isReadOnly\", \"contentType\", \"lastModified\", \"label\"],\n });\n\n assert.isOk(retrievedSetting.lastModified);\n\n assert.deepEqual(\n {\n key: retrievedSetting.key,\n value: retrievedSetting.value,\n contentType: retrievedSetting.contentType,\n etag: retrievedSetting.etag,\n label: retrievedSetting.label,\n tags: retrievedSetting.tags,\n statusCode: retrievedSetting.statusCode,\n isReadOnly: retrievedSetting.isReadOnly,\n },\n {\n contentType: \"a content type\",\n isReadOnly: true,\n label: \"a label\",\n\n // this is an HTTP response field and is always included.\n statusCode: 200,\n\n // these values were purposefully omitted from my list of fields that I\n // selected above.\n key: undefined,\n value: undefined,\n etag: undefined,\n tags: undefined,\n }\n );\n });\n });\n\n describe(\"listConfigurationSettings\", () => {\n let uniqueLabel: string;\n let listConfigSettingA: ConfigurationSetting;\n let count = 0;\n\n /** Simulating a setting in production that will be made read only */\n const productionASettingId: Pick<\n ConfigurationSetting,\n \"key\" | \"label\" | \"value\" | \"contentType\"\n > = {\n key: \"\",\n label: \"\",\n value: \"[A] production value\",\n contentType: \"a content type\",\n };\n\n const keys: {\n listConfigSettingA: string;\n listConfigSettingB: string;\n } = {\n listConfigSettingA: \"\",\n listConfigSettingB: \"\",\n };\n\n beforeEach(async () => {\n keys.listConfigSettingA = recorder.getUniqueName(`listConfigSetting${count}A`);\n keys.listConfigSettingB = recorder.getUniqueName(`listConfigSetting${count}B`);\n count += 1;\n\n uniqueLabel = recorder.getUniqueName(\"listConfigSettingsLabel\");\n productionASettingId.key = keys.listConfigSettingA;\n productionASettingId.label = uniqueLabel;\n\n await client.addConfigurationSetting(productionASettingId);\n await client.setReadOnly(productionASettingId, true);\n\n listConfigSettingA = await client.addConfigurationSetting({\n key: keys.listConfigSettingA,\n value: \"[A] value\",\n });\n\n await client.addConfigurationSetting({\n key: keys.listConfigSettingB,\n label: uniqueLabel,\n value: \"[B] production value\",\n });\n await client.addConfigurationSetting({\n key: keys.listConfigSettingB,\n value: \"[B] value\",\n });\n });\n\n after(async () => {\n try {\n await deleteKeyCompletely([keys.listConfigSettingA, keys.listConfigSettingB], client);\n } catch (e) {\n /** empty */\n }\n });\n\n it(\"undefined doesn't throw and will just return everything\", async () => {\n const settingsIterator = client.listConfigurationSettings();\n await settingsIterator.next();\n });\n\n it(\"exact match on label\", async () => {\n // query with a direct label match\n const byLabelIterator = client.listConfigurationSettings({ labelFilter: uniqueLabel });\n const byLabelSettings = await toSortedArray(byLabelIterator);\n\n assertEqualSettings(\n [\n {\n key: keys.listConfigSettingA,\n value: \"[A] production value\",\n label: uniqueLabel,\n isReadOnly: true,\n },\n {\n key: keys.listConfigSettingB,\n value: \"[B] production value\",\n label: uniqueLabel,\n isReadOnly: false,\n },\n ],\n byLabelSettings\n );\n });\n\n it(\"label wildcards\", async () => {\n // query with a direct label match\n const byLabelIterator = client.listConfigurationSettings({\n labelFilter: uniqueLabel.substring(0, uniqueLabel.length - 1) + \"*\",\n });\n const byLabelSettings = await toSortedArray(byLabelIterator);\n\n assertEqualSettings(\n [\n {\n key: keys.listConfigSettingA,\n value: \"[A] production value\",\n label: uniqueLabel,\n isReadOnly: true,\n },\n {\n key: keys.listConfigSettingB,\n value: \"[B] production value\",\n label: uniqueLabel,\n isReadOnly: false,\n },\n ],\n byLabelSettings\n );\n });\n\n it(\"exact match on key\", async () => {\n const byKeyIterator = client.listConfigurationSettings({\n keyFilter: keys.listConfigSettingA,\n });\n const byKeySettings = await toSortedArray(byKeyIterator);\n\n assertEqualSettings(\n [\n {\n key: keys.listConfigSettingA,\n value: \"[A] production value\",\n label: uniqueLabel,\n isReadOnly: true,\n },\n {\n key: keys.listConfigSettingA,\n value: \"[A] value\",\n label: undefined,\n isReadOnly: false,\n },\n ],\n byKeySettings\n );\n });\n\n it(\"key wildcards\", async () => {\n // query with a key wildcard\n const keyFilter = keys.listConfigSettingA;\n const byKeyIterator = client.listConfigurationSettings({\n keyFilter: keyFilter.substring(0, keyFilter.length - 1) + \"*\",\n });\n const byKeySettings = await toSortedArray(byKeyIterator);\n\n assertEqualSettings(\n [\n {\n key: keys.listConfigSettingA,\n value: \"[A] production value\",\n label: uniqueLabel,\n isReadOnly: true,\n },\n {\n key: keys.listConfigSettingA,\n value: \"[A] value\",\n label: undefined,\n isReadOnly: false,\n },\n ],\n byKeySettings\n );\n });\n\n it(\"Using `select` via `fields`\", async () => {\n let byKeyIterator = client.listConfigurationSettings({\n keyFilter: productionASettingId.key,\n labelFilter: productionASettingId.label,\n fields: [\"isReadOnly\", \"contentType\", \"lastModified\", \"label\"],\n });\n const [retrievedSetting, ...otherValues] = await toSortedArray(byKeyIterator);\n\n assert.isEmpty(otherValues);\n assert.isOk(retrievedSetting.lastModified);\n\n assert.deepEqual(\n {\n key: retrievedSetting.key,\n value: retrievedSetting.value,\n contentType: retrievedSetting.contentType,\n etag: retrievedSetting.etag,\n label: retrievedSetting.label,\n tags: retrievedSetting.tags,\n isReadOnly: retrievedSetting.isReadOnly,\n },\n {\n contentType: \"a content type\",\n isReadOnly: true,\n label: productionASettingId.label,\n\n // these values were purposefully omitted from my list of fields that I\n // selected above.\n key: undefined,\n value: undefined,\n etag: undefined,\n tags: undefined,\n }\n );\n\n // only fill in the 'readOnly' field (which is really the locked field in the REST model)\n byKeyIterator = client.listConfigurationSettings({\n keyFilter: keys.listConfigSettingA,\n fields: [\"key\", \"label\", \"value\"],\n });\n const settings = await toSortedArray(byKeyIterator);\n\n // the fields we retrieved\n assert.equal(productionASettingId.key, settings[0].key);\n assert.equal(\"[A] production value\", settings[0].value);\n assert.equal(uniqueLabel, settings[0].label);\n\n assert.ok(!settings[0].isReadOnly);\n assert.ok(!settings[0].contentType);\n assert.ok(!settings[0].etag);\n });\n\n it(\"by date\", async () => {\n const byKeyIterator = client.listConfigurationSettings({\n keyFilter: \"listConfigSetting*\",\n acceptDateTime: listConfigSettingA.lastModified,\n });\n\n const settings = await toSortedArray(byKeyIterator);\n let foundMyExactSettingToo = false;\n\n // all settings returned should be the same date or as old as my setting\n for (const setting of settings) {\n assert.ok(setting.lastModified);\n assert.ok(setting.lastModified! <= listConfigSettingA.lastModified!);\n\n if (setting.key === listConfigSettingA.key && setting.label === listConfigSettingA.label) {\n foundMyExactSettingToo = true;\n }\n }\n\n assert.ok(foundMyExactSettingToo);\n });\n\n it(\"list with multiple pages\", async function () {\n // This occasionally hits 429 error (throttling) since we are making 100s of requests in the test to create, get and delete keys.\n // To avoid hitting the service with too many requests, skipping the test in live.\n // More details at https://github.com/Azure/azure-sdk-for-js/issues/16743\n //\n // Remove the following line if you want to hit the live service.\n // eslint-disable-next-line @typescript-eslint/no-invalid-this\n if (isLiveMode()) this.skip();\n\n const key = recorder.getUniqueName(\"listMultiplePagesOfResults\");\n\n // this number is arbitrarily chosen to match the size of a page + 1\n const expectedNumberOfLabels = 200;\n\n let addSettingPromises = [];\n\n for (let i = 0; i < expectedNumberOfLabels; i++) {\n addSettingPromises.push(\n client.addConfigurationSetting({\n key,\n value: `the value for ${i}`,\n label: i.toString(),\n })\n );\n\n if (i !== 0 && i % 10 === 0) {\n await Promise.all(addSettingPromises);\n addSettingPromises = [];\n }\n }\n\n await Promise.all(addSettingPromises);\n\n const listResult = client.listConfigurationSettings({\n keyFilter: key,\n });\n\n const sortedResults = await toSortedArray(listResult);\n assert.equal(sortedResults.length, 200);\n\n // make sure we have 200 unique labels\n const uniqueLabels = new Set(sortedResults.map((res) => res.label));\n assert.equal(uniqueLabels.size, 200);\n\n for (let i = 0; i < 200; ++i) {\n assert.ok(uniqueLabels.has(i.toString()));\n }\n\n for (let i = 0; i < expectedNumberOfLabels; i++) {\n await client.deleteConfigurationSetting({ key, label: i.toString() });\n }\n });\n\n it(\"accepts operation options\", async function () {\n // Recorder checks for the recording and complains before core-rest-pipeline could throw the AbortError (Recorder v2 should help here)\n // eslint-disable-next-line @typescript-eslint/no-invalid-this\n if (isPlaybackMode()) this.skip();\n await assertThrowsAbortError(async () => {\n const settingsIterator = client.listConfigurationSettings({\n requestOptions: { timeout: 1 },\n });\n await settingsIterator.next();\n });\n });\n });\n\n describe(\"listRevisions\", () => {\n let key: string;\n let labelA: string;\n let labelB: string;\n let originalSetting: ConfigurationSetting;\n\n beforeEach(async () => {\n key = recorder.getUniqueName(`listRevisions`);\n labelA = recorder.getUniqueName(`list-revisions-A`);\n labelB = recorder.getUniqueName(`list-revisions-B`);\n\n // we'll generate two sets of keys and labels for this selection\n originalSetting = await client.addConfigurationSetting({\n key,\n label: labelA,\n value: \"fooA1\",\n });\n await delay(1000);\n await client.setConfigurationSetting({ key, label: labelA, value: \"fooA2\" });\n\n await client.addConfigurationSetting({ key, label: labelB, value: \"fooB1\" });\n await client.setConfigurationSetting({ key, label: labelB, value: \"fooB2\" });\n });\n\n it(\"exact match on label\", async () => {\n const revisionsWithLabelIterator = client.listRevisions({ labelFilter: labelA });\n const revisions = await toSortedArray(revisionsWithLabelIterator);\n\n assertEqualSettings(\n [\n { key, label: labelA, value: \"fooA1\", isReadOnly: false },\n { key, label: labelA, value: \"fooA2\", isReadOnly: false },\n ],\n revisions\n );\n });\n\n it(\"label wildcards\", async () => {\n const revisionsWithLabelIterator = client.listRevisions({\n labelFilter: labelA.substring(0, labelA.length - 1) + \"*\",\n });\n const revisions = await toSortedArray(revisionsWithLabelIterator);\n\n assertEqualSettings(\n [\n { key, label: labelA, value: \"fooA1\", isReadOnly: false },\n { key, label: labelA, value: \"fooA2\", isReadOnly: false },\n ],\n revisions\n );\n });\n\n it(\"exact match on key\", async () => {\n const revisionsWithKeyIterator = client.listRevisions({ keyFilter: key });\n const revisions = await toSortedArray(revisionsWithKeyIterator);\n\n assertEqualSettings(\n [\n { key, label: labelA, value: \"fooA1\", isReadOnly: false },\n { key, label: labelA, value: \"fooA2\", isReadOnly: false },\n { key, label: labelB, value: \"fooB1\", isReadOnly: false },\n { key, label: labelB, value: \"fooB2\", isReadOnly: false },\n ],\n revisions\n );\n });\n\n it(\"key wildcards\", async () => {\n const revisionsWithKeyIterator = client.listRevisions({\n keyFilter: key.substring(0, key.length - 1) + \"*\",\n });\n const revisions = await toSortedArray(revisionsWithKeyIterator);\n\n assertEqualSettings(\n [\n { key, label: labelA, value: \"fooA1\", isReadOnly: false },\n { key, label: labelA, value: \"fooA2\", isReadOnly: false },\n { key, label: labelB, value: \"fooB1\", isReadOnly: false },\n { key, label: labelB, value: \"fooB2\", isReadOnly: false },\n ],\n revisions\n );\n });\n\n it(\"accepts operation options\", async function () {\n // Recorder checks for the recording and complains before core-rest-pipeline could throw the AbortError (Recorder v2 should help here)\n // eslint-disable-next-line @typescript-eslint/no-invalid-this\n if (isPlaybackMode()) this.skip();\n await assertThrowsAbortError(async () => {\n const iter = client.listRevisions({ labelFilter: labelA, requestOptions: { timeout: 1 } });\n await iter.next();\n });\n });\n\n it(\"by date\", async () => {\n const byKeyIterator = client.listRevisions({\n keyFilter: key,\n acceptDateTime: originalSetting.lastModified,\n });\n\n const settings = await toSortedArray(byKeyIterator);\n\n assert.deepEqual(\n {\n key: originalSetting.key,\n label: originalSetting.label,\n value: originalSetting.value,\n isReadOnly: originalSetting.isReadOnly,\n },\n {\n key: settings[0].key,\n label: settings[0].label,\n value: settings[0].value,\n isReadOnly: settings[0].isReadOnly,\n }\n );\n });\n });\n\n describe(\"setConfigurationSetting\", () => {\n it(\"replaces a configuration setting\", async () => {\n const key = recorder.getUniqueName(`setConfigTest`);\n const label = \"test\";\n const contentType = \"application/json\";\n const tags = {\n bar: \"baz\",\n car: \"caz\",\n };\n\n // create configuration\n const result = await client.addConfigurationSetting({\n key,\n label,\n value: \"foo\",\n contentType,\n tags,\n });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n \"foo\",\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.isReadOnly,\n false,\n \"Unexpected readOnly in result from addConfigurationSetting().\"\n );\n assert.deepEqual(\n result.tags,\n tags,\n \"Unexpected tags in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.contentType,\n contentType,\n \"Unexpected contentType in result from addConfigurationSetting().\"\n );\n\n const replacedResult = await client.setConfigurationSetting({ key, label, value: \"foo2\" });\n\n assert.equal(\n replacedResult.key,\n key,\n \"Unexpected key in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.label,\n label,\n \"Unexpected label in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.value,\n \"foo2\",\n \"Unexpected value in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.isReadOnly,\n false,\n \"Unexpected readOnly in result from setConfigurationSetting().\"\n );\n assert.deepEqual(\n replacedResult.tags,\n {},\n \"Unexpected tags in result from setConfigurationSetting().\"\n );\n assert.strictEqual(\n replacedResult.contentType,\n null,\n \"Unexpected contentType in result from setConfigurationSetting().\"\n );\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"replaces a configuration setting (valid etag)\", async () => {\n const key = recorder.getUniqueName(`setConfigTestEtag`);\n const label = \"test\";\n const contentType = \"application/json\";\n const tags = {\n bar: \"baz\",\n car: \"caz\",\n };\n\n // create configuration\n const result = await client.addConfigurationSetting({\n key,\n label,\n value: \"foo\",\n contentType,\n tags,\n });\n\n assert.equal(result.key, key, \"Unexpected key in result from addConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n \"foo\",\n \"Unexpected value in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.isReadOnly,\n false,\n \"Unexpected readOnly in result from addConfigurationSetting().\"\n );\n assert.deepEqual(\n result.tags,\n tags,\n \"Unexpected tags in result from addConfigurationSetting().\"\n );\n assert.equal(\n result.contentType,\n contentType,\n \"Unexpected contentType in result from addConfigurationSetting().\"\n );\n\n const replacedResult = await client.setConfigurationSetting(\n {\n key,\n label,\n value: \"foo2\",\n etag: result.etag,\n },\n { onlyIfUnchanged: true }\n );\n\n assert.equal(\n replacedResult.key,\n key,\n \"Unexpected key in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.label,\n label,\n \"Unexpected label in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.value,\n \"foo2\",\n \"Unexpected value in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from setConfigurationSetting().\"\n );\n assert.equal(\n replacedResult.isReadOnly,\n false,\n \"Unexpected readOnly in result from setConfigurationSetting().\"\n );\n assert.deepEqual(\n replacedResult.tags,\n {},\n \"Unexpected tags in result from setConfigurationSetting().\"\n );\n assert.strictEqual(\n replacedResult.contentType,\n null,\n \"Unexpected contentType in result from setConfigurationSetting().\"\n );\n\n await client.deleteConfigurationSetting({ key, label });\n });\n\n it(\"creates a configuration setting if it doesn't exist\", async () => {\n const key = recorder.getUniqueName(`setConfigTestNA`);\n const label = \"test\";\n const value = \"foo\";\n\n const result = await client.setConfigurationSetting({ key, label, value: \"foo\" });\n assert.equal(result.key, key, \"Unexpected key in result from setConfigurationSetting().\");\n assert.equal(\n result.label,\n label,\n \"Unexpected label in result from setConfigurationSetting().\"\n );\n assert.equal(\n result.value,\n value,\n \"Unexpected value in result from setConfigurationSetting().\"\n );\n assert.equal(\n result.lastModified instanceof Date,\n true,\n \"Unexpected lastModified in result from setConfigurationSetting().\"\n );\n assert.equal(\n result.isReadOnly,\n false,\n \"Unexpected readOnly in result from setConfigurationSetting().\"\n );\n assert.deepEqual(\n result.tags,\n {},\n \"Unexpected tags in result from setConfigurationSetting().\"\n );\n assert.strictEqual(\n result.contentType,\n null,\n \"Unexpected contentType in result from setConfigurationSetting().\"\n );\n });\n\n it(\"accepts operation options\", async () => {\n const key = recorder.getUniqueName(`setConfigTestNA`);\n const label = \"test\";\n const value = \"foo\";\n await assertThrowsAbortError(async () => {\n await client.setConfigurationSetting(\n { key, label, value: value },\n {\n requestOptions: {\n timeout: 1,\n },\n }\n );\n });\n });\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"secretReference.spec.js","sourceRoot":"","sources":["../../../test/public/secretReference.spec.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,oCAAoC,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAIL,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAE3B,MAAM,WAAW,CAAC;AAInB,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,IAAI,MAA8B,CAAC;IACnC,IAAI,QAAkB,CAAC;IAEvB,UAAU,CAAC;QACT,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,oCAAoC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK;QACb,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACrD,MAAM,cAAc,GAAG,GAA+C,EAAE;YACtE,OAAO;gBACL,KAAK,EAAE;oBACL,QAAQ,EAAE,8CAA8C,QAAQ,CAAC,aAAa,CAC5E,QAAQ,CACT,EAAE;iBACJ;gBACD,UAAU,EAAE,KAAK;gBACjB,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;gBACrC,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,0BAA0B;aACxC,CAAC;QACJ,CAAC,CAAC;QAEF,SAAS,0BAA0B,CACjC,MAA0D,EAC1D,QAAoD;YAEpD,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,qCAAqC,CAAC,CAAC;YACrF,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE;gBAC7B,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,GAAG,EACV,QAAQ,CAAC,GAAG,EACZ,2DAA2D,CAC5D,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC5E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACrD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC3C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;aACxD;QACH,CAAC;QAED,IAAI,WAA4C,CAAC;QACjD,IAAI,WAAuD,CAAC;QAC5D,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,WAAW,GAAG,cAAc,EAAE,CAAC;YAC/B,WAAW,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,MAAM,CAAC,0BAA0B,CAAC;gBACtC,GAAG,EAAE,WAAW,CAAC,GAAG;aACrB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC;gBACvD,GAAG,EAAE,WAAW,CAAC,GAAG;gBACpB,KAAK,EAAE,WAAW,CAAC,KAAK;aACzB,CAAC,CAAC;YACH,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC;gBACvD,GAAG,EAAE,WAAW,CAAC,GAAG;gBACpB,KAAK,EAAE,WAAW,CAAC,KAAK;aACzB,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,8CAA8C,QAAQ,CAAC,aAAa,CACtF,QAAQ,CACT,EAAE,CAAC;YAEJ,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACrD,MAAM,eAAe,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAC1D,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;YAE7C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;YAC1E,0BAA0B,CAAC,WAAW,kCACjC,WAAW,KACd,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAChC,CAAC;YAEH,MAAM,sBAAsB,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC;gBAClE,GAAG,EAAE,WAAW,CAAC,GAAG;gBACpB,KAAK,EAAE,WAAW,CAAC,KAAK;aACzB,CAAC,CAAC;YACH,0BAA0B,CAAC,sBAAsB,kCAC5C,WAAW,KACd,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAChC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;;YAClE,MAAM,aAAa,mCACd,WAAW,KACd,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,IAAI,GAC5B,CAAC;YACF,MAAM,WAAW,GAAG,8CAA8C,QAAQ,CAAC,aAAa,CACtF,QAAQ,CACT,EAAE,CAAC;YACJ,MAAM,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;YAEpD,IAAI,gCAAgC,GAAG,CAAC,CAAC;;gBACzC,KAA4B,IAAA,KAAA,cAAA,MAAM,CAAC,yBAAyB,CAAC;oBAC3D,SAAS,EAAE,GAAG,WAAW,CAAC,GAAG,GAAG;iBACjC,CAAC,CAAA,IAAA;oBAFS,MAAM,OAAO,WAAA,CAAA;oBAGtB,gCAAgC,EAAE,CAAC;oBACnC,IAAI,OAAO,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,EAAE;wBACnC,0BAA0B,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;wBACjD,MAAM,MAAM,CAAC,uBAAuB,iCAC/B,WAAW,KACd,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAChC,CAAC;qBACJ;yBAAM;wBACL,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;wBACnD,MAAM,MAAM,CAAC,WAAW,CACtB,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAC1C,CAAC,aAAa,CAAC,UAAU,CAC1B,CAAC;qBACH;iBACF;;;;;;;;;YACD,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,EAAE,wCAAwC,CAAC,CAAC;;gBAC5F,KAA4B,IAAA,KAAA,cAAA,MAAM,CAAC,yBAAyB,CAAC;oBAC3D,SAAS,EAAE,GAAG,WAAW,CAAC,GAAG,GAAG;iBACjC,CAAC,CAAA,IAAA;oBAFS,MAAM,OAAO,WAAA,CAAA;oBAGtB,gCAAgC,EAAE,CAAC;oBACnC,IAAI,OAAO,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,EAAE;wBACnC,0BAA0B,CAAC,OAAO,kCAAO,WAAW,KAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAG,CAAC;qBAC3F;yBAAM;wBACL,0BAA0B,CAAC,OAAO,kCAC7B,aAAa,KAChB,UAAU,EAAE,CAAC,aAAa,CAAC,UAAU,IACrC,CAAC;qBACJ;iBACF;;;;;;;;;YAED,MAAM,CAAC,KAAK,CACV,gCAAgC,EAChC,CAAC,EACD,2DAA2D,CAC5D,CAAC;YACF,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACpD,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,EAAE,CAAC,oBAAoB,KAAK,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,OAAO,GAA+C;oBAC1D,WAAW,EAAE,0BAA0B;oBACvC,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;oBACrC,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;iBAC1B,CAAC;gBACF,OAAO,CAAC,KAAK,GAAG,KAAY,CAAC;gBAC7B,MAAM,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;gBAC9C,MAAM,CAAC,KAAK,CACV,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAClE,KAAK,EACL,SAAS,CACV,CAAC;gBACF,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { assert } from \"chai\";\nimport { createAppConfigurationClientForTests, startRecorder } from \"./utils/testHelpers\";\nimport {\n AddConfigurationSettingResponse,\n AppConfigurationClient,\n ConfigurationSetting,\n isSecretReference,\n parseSecretReference,\n secretReferenceContentType,\n SecretReferenceValue,\n} from \"../../src\";\nimport { Recorder } from \"@azure-tools/test-recorder\";\nimport { Context } from \"mocha\";\n\ndescribe(\"AppConfigurationClient - SecretReference\", () => {\n let client: AppConfigurationClient;\n let recorder: Recorder;\n\n beforeEach(function (this: Context) {\n recorder = startRecorder(this);\n client = createAppConfigurationClientForTests() || this.skip();\n });\n\n afterEach(async function (this: Context) {\n await recorder.stop();\n });\n\n describe(\"SecretReference configuration setting\", () => {\n const getBaseSetting = (): ConfigurationSetting<SecretReferenceValue> => {\n return {\n value: {\n secretId: `https://vault_name.vault.azure.net/secrets/${recorder.getUniqueName(\n \"name-2\"\n )}`,\n },\n isReadOnly: false,\n key: recorder.getUniqueName(\"name-3\"),\n label: \"label-s\",\n contentType: secretReferenceContentType,\n };\n };\n\n function assertSecretReferenceProps(\n actual: Omit<AddConfigurationSettingResponse, \"_response\">,\n expected: ConfigurationSetting<SecretReferenceValue>\n ): void {\n assert.equal(isSecretReference(actual), true, \"Expected to get the SecretReference\");\n const actualSecretReference = parseSecretReference(actual);\n if (isSecretReference(actual)) {\n assert.equal(\n actual.key,\n expected.key,\n \"Key from the response from get request is not as expected\"\n );\n assert.equal(actualSecretReference.value.secretId, expected.value.secretId);\n assert.equal(actual.isReadOnly, expected.isReadOnly);\n assert.equal(actual.label, expected.label);\n assert.equal(actual.contentType, expected.contentType);\n }\n }\n\n let addResponse: AddConfigurationSettingResponse;\n let baseSetting: ConfigurationSetting<SecretReferenceValue>;\n beforeEach(async () => {\n baseSetting = getBaseSetting();\n addResponse = await client.addConfigurationSetting(baseSetting);\n });\n\n afterEach(async () => {\n await client.deleteConfigurationSetting({\n key: baseSetting.key,\n });\n });\n\n it(\"can add and get SecretReference\", async () => {\n assertSecretReferenceProps(addResponse, baseSetting);\n const getResponse = await client.getConfigurationSetting({\n key: baseSetting.key,\n label: baseSetting.label,\n });\n assertSecretReferenceProps(getResponse, baseSetting);\n });\n\n it(\"can add and update SecretReference\", async () => {\n const getResponse = await client.getConfigurationSetting({\n key: baseSetting.key,\n label: baseSetting.label,\n });\n const newSecretId = `https://vault_name.vault.azure.net/secrets/${recorder.getUniqueName(\n \"name-4\"\n )}`;\n\n assertSecretReferenceProps(getResponse, baseSetting);\n const secretReference = parseSecretReference(getResponse);\n secretReference.value.secretId = newSecretId;\n\n const setResponse = await client.setConfigurationSetting(secretReference);\n assertSecretReferenceProps(setResponse, {\n ...baseSetting,\n value: { secretId: newSecretId },\n });\n\n const getResponseAfterUpdate = await client.getConfigurationSetting({\n key: baseSetting.key,\n label: baseSetting.label,\n });\n assertSecretReferenceProps(getResponseAfterUpdate, {\n ...baseSetting,\n value: { secretId: newSecretId },\n });\n });\n\n it(\"can add, list and update multiple SecretReferences\", async () => {\n const secondSetting = {\n ...baseSetting,\n key: `${baseSetting.key}-2`,\n };\n const newSecretId = `https://vault_name.vault.azure.net/secrets/${recorder.getUniqueName(\n \"name-5\"\n )}`;\n await client.addConfigurationSetting(secondSetting);\n\n let numberOFSecretReferencesReceived = 0;\n for await (const setting of client.listConfigurationSettings({\n keyFilter: `${baseSetting.key}*`,\n })) {\n numberOFSecretReferencesReceived++;\n if (setting.key === baseSetting.key) {\n assertSecretReferenceProps(setting, baseSetting);\n await client.setConfigurationSetting({\n ...baseSetting,\n value: { secretId: newSecretId },\n });\n } else {\n assertSecretReferenceProps(setting, secondSetting);\n await client.setReadOnly(\n { key: setting.key, label: setting.label },\n !secondSetting.isReadOnly\n );\n }\n }\n assert.equal(numberOFSecretReferencesReceived, 2, \"Unexpected number of FeatureFlags seen\");\n for await (const setting of client.listConfigurationSettings({\n keyFilter: `${baseSetting.key}*`,\n })) {\n numberOFSecretReferencesReceived--;\n if (setting.key === baseSetting.key) {\n assertSecretReferenceProps(setting, { ...baseSetting, value: { secretId: newSecretId } });\n } else {\n assertSecretReferenceProps(setting, {\n ...secondSetting,\n isReadOnly: !secondSetting.isReadOnly,\n });\n }\n }\n\n assert.equal(\n numberOFSecretReferencesReceived,\n 0,\n \"Unexpected number of SecretReferences seen after updating\"\n );\n await client.deleteConfigurationSetting({ key: secondSetting.key });\n });\n });\n\n describe(\"serializeAsConfigurationSettingParam\", () => {\n [`[]`, \"Hello World\"].forEach((value) => {\n it(`Unexpected value ${value} as secret reference value`, async () => {\n const setting: ConfigurationSetting<SecretReferenceValue> = {\n contentType: secretReferenceContentType,\n key: recorder.getUniqueName(\"name-1\"),\n isReadOnly: false,\n value: { secretId: \"id\" },\n };\n setting.value = value as any;\n await client.addConfigurationSetting(setting);\n assert.equal(\n (await client.getConfigurationSetting({ key: setting.key })).value,\n value,\n \"message\"\n );\n await client.deleteConfigurationSetting({ key: setting.key });\n });\n });\n });\n});\n"]}
1
+ {"version":3,"file":"secretReference.spec.js","sourceRoot":"","sources":["../../../test/public/secretReference.spec.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,oCAAoC,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAKL,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AAInB,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,IAAI,MAA8B,CAAC;IACnC,IAAI,QAAkB,CAAC;IAEvB,UAAU,CAAC;QACT,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,oCAAoC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK;QACb,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACrD,MAAM,cAAc,GAAG,GAA+C,EAAE;YACtE,OAAO;gBACL,KAAK,EAAE;oBACL,QAAQ,EAAE,8CAA8C,QAAQ,CAAC,aAAa,CAC5E,QAAQ,CACT,EAAE;iBACJ;gBACD,UAAU,EAAE,KAAK;gBACjB,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;gBACrC,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,0BAA0B;aACxC,CAAC;QACJ,CAAC,CAAC;QAEF,SAAS,0BAA0B,CACjC,MAA0D,EAC1D,QAAoD;YAEpD,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,qCAAqC,CAAC,CAAC;YACrF,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE;gBAC7B,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,GAAG,EACV,QAAQ,CAAC,GAAG,EACZ,2DAA2D,CAC5D,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC5E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACrD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC3C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;aACxD;QACH,CAAC;QAED,IAAI,WAA4C,CAAC;QACjD,IAAI,WAAuD,CAAC;QAC5D,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,WAAW,GAAG,cAAc,EAAE,CAAC;YAC/B,WAAW,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,MAAM,CAAC,0BAA0B,CAAC;gBACtC,GAAG,EAAE,WAAW,CAAC,GAAG;aACrB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC;gBACvD,GAAG,EAAE,WAAW,CAAC,GAAG;gBACpB,KAAK,EAAE,WAAW,CAAC,KAAK;aACzB,CAAC,CAAC;YACH,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC;gBACvD,GAAG,EAAE,WAAW,CAAC,GAAG;gBACpB,KAAK,EAAE,WAAW,CAAC,KAAK;aACzB,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,8CAA8C,QAAQ,CAAC,aAAa,CACtF,QAAQ,CACT,EAAE,CAAC;YAEJ,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACrD,MAAM,eAAe,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAC1D,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;YAE7C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;YAC1E,0BAA0B,CAAC,WAAW,kCACjC,WAAW,KACd,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAChC,CAAC;YAEH,MAAM,sBAAsB,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC;gBAClE,GAAG,EAAE,WAAW,CAAC,GAAG;gBACpB,KAAK,EAAE,WAAW,CAAC,KAAK;aACzB,CAAC,CAAC;YACH,0BAA0B,CAAC,sBAAsB,kCAC5C,WAAW,KACd,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAChC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;;YAClE,MAAM,aAAa,mCACd,WAAW,KACd,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,IAAI,GAC5B,CAAC;YACF,MAAM,WAAW,GAAG,8CAA8C,QAAQ,CAAC,aAAa,CACtF,QAAQ,CACT,EAAE,CAAC;YACJ,MAAM,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;YAEpD,IAAI,gCAAgC,GAAG,CAAC,CAAC;;gBACzC,KAA4B,IAAA,KAAA,cAAA,MAAM,CAAC,yBAAyB,CAAC;oBAC3D,SAAS,EAAE,GAAG,WAAW,CAAC,GAAG,GAAG;iBACjC,CAAC,CAAA,IAAA;oBAFS,MAAM,OAAO,WAAA,CAAA;oBAGtB,gCAAgC,EAAE,CAAC;oBACnC,IAAI,OAAO,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,EAAE;wBACnC,0BAA0B,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;wBACjD,MAAM,MAAM,CAAC,uBAAuB,iCAC/B,WAAW,KACd,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAChC,CAAC;qBACJ;yBAAM;wBACL,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;wBACnD,MAAM,MAAM,CAAC,WAAW,CACtB,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAC1C,CAAC,aAAa,CAAC,UAAU,CAC1B,CAAC;qBACH;iBACF;;;;;;;;;YACD,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,EAAE,wCAAwC,CAAC,CAAC;;gBAC5F,KAA4B,IAAA,KAAA,cAAA,MAAM,CAAC,yBAAyB,CAAC;oBAC3D,SAAS,EAAE,GAAG,WAAW,CAAC,GAAG,GAAG;iBACjC,CAAC,CAAA,IAAA;oBAFS,MAAM,OAAO,WAAA,CAAA;oBAGtB,gCAAgC,EAAE,CAAC;oBACnC,IAAI,OAAO,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,EAAE;wBACnC,0BAA0B,CAAC,OAAO,kCAAO,WAAW,KAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAG,CAAC;qBAC3F;yBAAM;wBACL,0BAA0B,CAAC,OAAO,kCAC7B,aAAa,KAChB,UAAU,EAAE,CAAC,aAAa,CAAC,UAAU,IACrC,CAAC;qBACJ;iBACF;;;;;;;;;YAED,MAAM,CAAC,KAAK,CACV,gCAAgC,EAChC,CAAC,EACD,2DAA2D,CAC5D,CAAC;YACF,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACpD,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,EAAE,CAAC,oBAAoB,KAAK,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,OAAO,GAA+C;oBAC1D,WAAW,EAAE,0BAA0B;oBACvC,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;oBACrC,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;iBAC1B,CAAC;gBACF,OAAO,CAAC,KAAK,GAAG,KAAY,CAAC;gBAC7B,MAAM,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;gBAC9C,MAAM,CAAC,KAAK,CACV,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAClE,KAAK,EACL,SAAS,CACV,CAAC;gBACF,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { assert } from \"chai\";\nimport { createAppConfigurationClientForTests, startRecorder } from \"./utils/testHelpers\";\nimport {\n AddConfigurationSettingResponse,\n AppConfigurationClient,\n ConfigurationSetting,\n SecretReferenceValue,\n isSecretReference,\n parseSecretReference,\n secretReferenceContentType,\n} from \"../../src\";\nimport { Recorder } from \"@azure-tools/test-recorder\";\nimport { Context } from \"mocha\";\n\ndescribe(\"AppConfigurationClient - SecretReference\", () => {\n let client: AppConfigurationClient;\n let recorder: Recorder;\n\n beforeEach(function (this: Context) {\n recorder = startRecorder(this);\n client = createAppConfigurationClientForTests() || this.skip();\n });\n\n afterEach(async function (this: Context) {\n await recorder.stop();\n });\n\n describe(\"SecretReference configuration setting\", () => {\n const getBaseSetting = (): ConfigurationSetting<SecretReferenceValue> => {\n return {\n value: {\n secretId: `https://vault_name.vault.azure.net/secrets/${recorder.getUniqueName(\n \"name-2\"\n )}`,\n },\n isReadOnly: false,\n key: recorder.getUniqueName(\"name-3\"),\n label: \"label-s\",\n contentType: secretReferenceContentType,\n };\n };\n\n function assertSecretReferenceProps(\n actual: Omit<AddConfigurationSettingResponse, \"_response\">,\n expected: ConfigurationSetting<SecretReferenceValue>\n ): void {\n assert.equal(isSecretReference(actual), true, \"Expected to get the SecretReference\");\n const actualSecretReference = parseSecretReference(actual);\n if (isSecretReference(actual)) {\n assert.equal(\n actual.key,\n expected.key,\n \"Key from the response from get request is not as expected\"\n );\n assert.equal(actualSecretReference.value.secretId, expected.value.secretId);\n assert.equal(actual.isReadOnly, expected.isReadOnly);\n assert.equal(actual.label, expected.label);\n assert.equal(actual.contentType, expected.contentType);\n }\n }\n\n let addResponse: AddConfigurationSettingResponse;\n let baseSetting: ConfigurationSetting<SecretReferenceValue>;\n beforeEach(async () => {\n baseSetting = getBaseSetting();\n addResponse = await client.addConfigurationSetting(baseSetting);\n });\n\n afterEach(async () => {\n await client.deleteConfigurationSetting({\n key: baseSetting.key,\n });\n });\n\n it(\"can add and get SecretReference\", async () => {\n assertSecretReferenceProps(addResponse, baseSetting);\n const getResponse = await client.getConfigurationSetting({\n key: baseSetting.key,\n label: baseSetting.label,\n });\n assertSecretReferenceProps(getResponse, baseSetting);\n });\n\n it(\"can add and update SecretReference\", async () => {\n const getResponse = await client.getConfigurationSetting({\n key: baseSetting.key,\n label: baseSetting.label,\n });\n const newSecretId = `https://vault_name.vault.azure.net/secrets/${recorder.getUniqueName(\n \"name-4\"\n )}`;\n\n assertSecretReferenceProps(getResponse, baseSetting);\n const secretReference = parseSecretReference(getResponse);\n secretReference.value.secretId = newSecretId;\n\n const setResponse = await client.setConfigurationSetting(secretReference);\n assertSecretReferenceProps(setResponse, {\n ...baseSetting,\n value: { secretId: newSecretId },\n });\n\n const getResponseAfterUpdate = await client.getConfigurationSetting({\n key: baseSetting.key,\n label: baseSetting.label,\n });\n assertSecretReferenceProps(getResponseAfterUpdate, {\n ...baseSetting,\n value: { secretId: newSecretId },\n });\n });\n\n it(\"can add, list and update multiple SecretReferences\", async () => {\n const secondSetting = {\n ...baseSetting,\n key: `${baseSetting.key}-2`,\n };\n const newSecretId = `https://vault_name.vault.azure.net/secrets/${recorder.getUniqueName(\n \"name-5\"\n )}`;\n await client.addConfigurationSetting(secondSetting);\n\n let numberOFSecretReferencesReceived = 0;\n for await (const setting of client.listConfigurationSettings({\n keyFilter: `${baseSetting.key}*`,\n })) {\n numberOFSecretReferencesReceived++;\n if (setting.key === baseSetting.key) {\n assertSecretReferenceProps(setting, baseSetting);\n await client.setConfigurationSetting({\n ...baseSetting,\n value: { secretId: newSecretId },\n });\n } else {\n assertSecretReferenceProps(setting, secondSetting);\n await client.setReadOnly(\n { key: setting.key, label: setting.label },\n !secondSetting.isReadOnly\n );\n }\n }\n assert.equal(numberOFSecretReferencesReceived, 2, \"Unexpected number of FeatureFlags seen\");\n for await (const setting of client.listConfigurationSettings({\n keyFilter: `${baseSetting.key}*`,\n })) {\n numberOFSecretReferencesReceived--;\n if (setting.key === baseSetting.key) {\n assertSecretReferenceProps(setting, { ...baseSetting, value: { secretId: newSecretId } });\n } else {\n assertSecretReferenceProps(setting, {\n ...secondSetting,\n isReadOnly: !secondSetting.isReadOnly,\n });\n }\n }\n\n assert.equal(\n numberOFSecretReferencesReceived,\n 0,\n \"Unexpected number of SecretReferences seen after updating\"\n );\n await client.deleteConfigurationSetting({ key: secondSetting.key });\n });\n });\n\n describe(\"serializeAsConfigurationSettingParam\", () => {\n [`[]`, \"Hello World\"].forEach((value) => {\n it(`Unexpected value ${value} as secret reference value`, async () => {\n const setting: ConfigurationSetting<SecretReferenceValue> = {\n contentType: secretReferenceContentType,\n key: recorder.getUniqueName(\"name-1\"),\n isReadOnly: false,\n value: { secretId: \"id\" },\n };\n setting.value = value as any;\n await client.addConfigurationSetting(setting);\n assert.equal(\n (await client.getConfigurationSetting({ key: setting.key })).value,\n value,\n \"message\"\n );\n await client.deleteConfigurationSetting({ key: setting.key });\n });\n });\n });\n});\n"]}
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
- import { createAppConfigurationClientForTests, deleteKeyCompletely, assertThrowsRestError, startRecorder, } from "./utils/testHelpers";
3
+ import { assertThrowsRestError, createAppConfigurationClientForTests, deleteKeyCompletely, startRecorder, } from "./utils/testHelpers";
4
4
  import { assert } from "chai";
5
5
  // There's been discussion on other teams about what errors are thrown when. This
6
6
  // is the file where I've documented the throws/notThrows cases to make coordination
@@ -1 +1 @@
1
- {"version":3,"file":"throwOrNotThrow.spec.js","sourceRoot":"","sources":["../../../test/public/throwOrNotThrow.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AppConfigurationClient, ConfigurationSetting } from \"../../src\";\nimport {\n createAppConfigurationClientForTests,\n deleteKeyCompletely,\n assertThrowsRestError,\n startRecorder,\n} from \"./utils/testHelpers\";\nimport { assert } from \"chai\";\nimport { Recorder } from \"@azure-tools/test-recorder\";\nimport { Context } from \"mocha\";\n\n// There's been discussion on other teams about what errors are thrown when. This\n// is the file where I've documented the throws/notThrows cases to make coordination\n// with other teams simpler. (there's redundancy with other parts of the test suite but\n// that's okay)\ndescribe(\"Various error cases\", () => {\n let client: AppConfigurationClient;\n let recorder: Recorder;\n const nonMatchingETag = \"never-match-etag\";\n\n beforeEach(function (this: Context) {\n recorder = startRecorder(this);\n client = createAppConfigurationClientForTests() || this.skip();\n });\n\n afterEach(async function () {\n await recorder.stop();\n });\n\n describe(\"throws\", () => {\n let addedSetting: ConfigurationSetting;\n let nonExistentKey: string;\n\n beforeEach(async () => {\n addedSetting = await client.addConfigurationSetting({\n key: recorder.getUniqueName(`etags`),\n value: \"world\",\n });\n\n nonExistentKey = \"non-existent key \" + addedSetting.key;\n });\n\n afterEach(async function (this: Context) {\n if (!this.currentTest?.isPending()) {\n await deleteKeyCompletely([addedSetting.key], client);\n }\n });\n\n it(\"get: Non-existent key throws 404\", async () => {\n await assertThrowsRestError(\n () => client.getConfigurationSetting({ key: nonExistentKey }),\n 404\n );\n });\n\n it(\"add: Setting already exists throws 412\", async () => {\n await assertThrowsRestError(() => client.addConfigurationSetting(addedSetting), 412);\n });\n\n it(\"set: Existing key, (onlyIfUnchanged) throws 412\", async () => {\n await assertThrowsRestError(\n () =>\n client.setConfigurationSetting(\n {\n ...addedSetting,\n etag: nonMatchingETag, // purposefully make the etag not match the server\n },\n { onlyIfUnchanged: true }\n ),\n 412\n );\n });\n\n it(\"set: trying to modify a read-only setting throws 409\", async () => {\n await client.setReadOnly(addedSetting, true);\n\n await assertThrowsRestError(() => client.setConfigurationSetting(addedSetting), 409);\n });\n\n it(\"delete: key that is set to read-only throws 409\", async () => {\n await client.setReadOnly(addedSetting, true);\n await assertThrowsRestError(async () => client.deleteConfigurationSetting(addedSetting), 409);\n await client.setReadOnly(addedSetting, false);\n });\n });\n\n describe(\"doesn't throw\", () => {\n let addedSetting: ConfigurationSetting;\n let nonExistentKey: string;\n\n beforeEach(async () => {\n // same setup for all tests:\n // key: hello{date}, value: world\n\n // the 'no label' value for 'hello'\n addedSetting = await client.addConfigurationSetting({\n key: recorder.getUniqueName(`etags`),\n value: \"world\",\n });\n\n nonExistentKey = \"bogus key \" + addedSetting.key;\n });\n\n afterEach(async function (this: Context) {\n if (!this.currentTest?.isPending()) {\n await deleteKeyCompletely([addedSetting.key], client);\n }\n });\n\n it(\"get: value is unchanged from etag (304) using ifNoneMatch, sets all properties to undefined\", async () => {\n const response = await client.getConfigurationSetting(addedSetting, {\n onlyIfChanged: true,\n });\n\n assert.equal(304, response.statusCode);\n assert.ok(!response.value);\n });\n\n it(\"delete: non-existent key (no etag)\", async () => {\n await client.deleteConfigurationSetting({ key: nonExistentKey });\n });\n });\n});\n"]}
1
+ {"version":3,"file":"throwOrNotThrow.spec.js","sourceRoot":"","sources":["../../../test/public/throwOrNotThrow.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AppConfigurationClient, ConfigurationSetting } from \"../../src\";\nimport {\n assertThrowsRestError,\n createAppConfigurationClientForTests,\n deleteKeyCompletely,\n startRecorder,\n} from \"./utils/testHelpers\";\nimport { assert } from \"chai\";\nimport { Recorder } from \"@azure-tools/test-recorder\";\nimport { Context } from \"mocha\";\n\n// There's been discussion on other teams about what errors are thrown when. This\n// is the file where I've documented the throws/notThrows cases to make coordination\n// with other teams simpler. (there's redundancy with other parts of the test suite but\n// that's okay)\ndescribe(\"Various error cases\", () => {\n let client: AppConfigurationClient;\n let recorder: Recorder;\n const nonMatchingETag = \"never-match-etag\";\n\n beforeEach(function (this: Context) {\n recorder = startRecorder(this);\n client = createAppConfigurationClientForTests() || this.skip();\n });\n\n afterEach(async function () {\n await recorder.stop();\n });\n\n describe(\"throws\", () => {\n let addedSetting: ConfigurationSetting;\n let nonExistentKey: string;\n\n beforeEach(async () => {\n addedSetting = await client.addConfigurationSetting({\n key: recorder.getUniqueName(`etags`),\n value: \"world\",\n });\n\n nonExistentKey = \"non-existent key \" + addedSetting.key;\n });\n\n afterEach(async function (this: Context) {\n if (!this.currentTest?.isPending()) {\n await deleteKeyCompletely([addedSetting.key], client);\n }\n });\n\n it(\"get: Non-existent key throws 404\", async () => {\n await assertThrowsRestError(\n () => client.getConfigurationSetting({ key: nonExistentKey }),\n 404\n );\n });\n\n it(\"add: Setting already exists throws 412\", async () => {\n await assertThrowsRestError(() => client.addConfigurationSetting(addedSetting), 412);\n });\n\n it(\"set: Existing key, (onlyIfUnchanged) throws 412\", async () => {\n await assertThrowsRestError(\n () =>\n client.setConfigurationSetting(\n {\n ...addedSetting,\n etag: nonMatchingETag, // purposefully make the etag not match the server\n },\n { onlyIfUnchanged: true }\n ),\n 412\n );\n });\n\n it(\"set: trying to modify a read-only setting throws 409\", async () => {\n await client.setReadOnly(addedSetting, true);\n\n await assertThrowsRestError(() => client.setConfigurationSetting(addedSetting), 409);\n });\n\n it(\"delete: key that is set to read-only throws 409\", async () => {\n await client.setReadOnly(addedSetting, true);\n await assertThrowsRestError(async () => client.deleteConfigurationSetting(addedSetting), 409);\n await client.setReadOnly(addedSetting, false);\n });\n });\n\n describe(\"doesn't throw\", () => {\n let addedSetting: ConfigurationSetting;\n let nonExistentKey: string;\n\n beforeEach(async () => {\n // same setup for all tests:\n // key: hello{date}, value: world\n\n // the 'no label' value for 'hello'\n addedSetting = await client.addConfigurationSetting({\n key: recorder.getUniqueName(`etags`),\n value: \"world\",\n });\n\n nonExistentKey = \"bogus key \" + addedSetting.key;\n });\n\n afterEach(async function (this: Context) {\n if (!this.currentTest?.isPending()) {\n await deleteKeyCompletely([addedSetting.key], client);\n }\n });\n\n it(\"get: value is unchanged from etag (304) using ifNoneMatch, sets all properties to undefined\", async () => {\n const response = await client.getConfigurationSetting(addedSetting, {\n onlyIfChanged: true,\n });\n\n assert.equal(304, response.statusCode);\n assert.ok(!response.value);\n });\n\n it(\"delete: non-existent key (no etag)\", async () => {\n await client.deleteConfigurationSetting({ key: nonExistentKey });\n });\n });\n});\n"]}
@@ -0,0 +1,34 @@
1
+ import { assert } from "@azure/test-utils";
2
+ import { createAppConfigurationClientForTests, startRecorder } from "./utils/testHelpers";
3
+ describe("supports tracing", () => {
4
+ let client;
5
+ let recorder;
6
+ beforeEach(async function () {
7
+ recorder = startRecorder(this);
8
+ client = createAppConfigurationClientForTests() || this.skip();
9
+ });
10
+ afterEach(async () => {
11
+ await recorder.stop();
12
+ });
13
+ it("can trace through the various options", async function () {
14
+ const key = recorder.getUniqueName("noLabelTests");
15
+ await assert.supportsTracing(async (options) => {
16
+ const promises = [
17
+ client.addConfigurationSetting({ key }, options),
18
+ client.getConfigurationSetting({ key }, options),
19
+ client.setConfigurationSetting({ key, value: "new-value" }, options),
20
+ client.setReadOnly({ key }, true, options),
21
+ client.deleteConfigurationSetting({ key }, options),
22
+ ];
23
+ // We don't care about errors, only that we created (and closed) the appropriate spans.
24
+ await Promise.all(promises.map((p) => p.catch(() => undefined)));
25
+ }, [
26
+ "AppConfigurationClient.addConfigurationSetting",
27
+ "AppConfigurationClient.getConfigurationSetting",
28
+ "AppConfigurationClient.setConfigurationSetting",
29
+ "AppConfigurationClient.setReadOnly",
30
+ "AppConfigurationClient.deleteConfigurationSetting",
31
+ ]);
32
+ });
33
+ });
34
+ //# sourceMappingURL=tracing.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.spec.js","sourceRoot":"","sources":["../../../test/public/tracing.spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,oCAAoC,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE1F,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,MAA8B,CAAC;IACnC,IAAI,QAAkB,CAAC;IAEvB,UAAU,CAAC,KAAK;QACd,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,oCAAoC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK;QAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACnD,MAAM,MAAM,CAAC,eAAe,CAC1B,KAAK,EAAE,OAAO,EAAE,EAAE;YAChB,MAAM,QAAQ,GAAmB;gBAC/B,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC;gBAChD,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC;gBAChD,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC;gBACpE,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC;gBAC1C,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC;aACpD,CAAC;YACF,uFAAuF;YACvF,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC,EACD;YACE,gDAAgD;YAChD,gDAAgD;YAChD,gDAAgD;YAChD,oCAAoC;YACpC,mDAAmD;SACpD,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { Recorder } from \"@azure-tools/test-recorder\";\nimport { assert } from \"@azure/test-utils\";\nimport { Context } from \"mocha\";\nimport { AppConfigurationClient } from \"../../src/appConfigurationClient\";\nimport { createAppConfigurationClientForTests, startRecorder } from \"./utils/testHelpers\";\n\ndescribe(\"supports tracing\", () => {\n let client: AppConfigurationClient;\n let recorder: Recorder;\n\n beforeEach(async function (this: Context) {\n recorder = startRecorder(this);\n client = createAppConfigurationClientForTests() || this.skip();\n });\n\n afterEach(async () => {\n await recorder.stop();\n });\n\n it(\"can trace through the various options\", async function () {\n const key = recorder.getUniqueName(\"noLabelTests\");\n await assert.supportsTracing(\n async (options) => {\n const promises: Promise<any>[] = [\n client.addConfigurationSetting({ key }, options),\n client.getConfigurationSetting({ key }, options),\n client.setConfigurationSetting({ key, value: \"new-value\" }, options),\n client.setReadOnly({ key }, true, options),\n client.deleteConfigurationSetting({ key }, options),\n ];\n // We don't care about errors, only that we created (and closed) the appropriate spans.\n await Promise.all(promises.map((p) => p.catch(() => undefined)));\n },\n [\n \"AppConfigurationClient.addConfigurationSetting\",\n \"AppConfigurationClient.getConfigurationSetting\",\n \"AppConfigurationClient.setConfigurationSetting\",\n \"AppConfigurationClient.setReadOnly\",\n \"AppConfigurationClient.deleteConfigurationSetting\",\n ]\n );\n });\n});\n"]}