Skip to content

Commit 5f35f2d

Browse files
authored
Rewrite test cases in TS (#24)
1 parent b4455bb commit 5f35f2d

16 files changed

+167
-93
lines changed

.eslintrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,6 @@
4040
"avoidEscape": true
4141
}
4242
],
43-
},
43+
"@typescript-eslint/no-explicit-any": "off"
44+
}
4445
}

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,7 @@ FodyWeavers.xsd
400400
# bundled folder
401401
dist/
402402
dist-esm/
403+
out/
403404
types/
404405

405406
# dotenv
@@ -409,4 +410,4 @@ types/
409410
*.tgz
410411

411412
# examples
412-
examples/package-lock.json
413+
examples/package-lock.json

package-lock.json

Lines changed: 57 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@
1717
"README.md"
1818
],
1919
"scripts": {
20-
"build": "npm run clean && npm run build-cjs && npm run build-esm",
20+
"build": "npm run clean && npm run build-cjs && npm run build-esm && npm run build-test",
2121
"build-cjs": "rollup --config",
22-
"build-esm": "tsc -p ./",
23-
"clean": "rimraf dist dist-esm types",
22+
"build-esm": "tsc -p ./tsconfig.json",
23+
"build-test": "tsc -p ./tsconfig.test.json",
24+
"clean": "rimraf dist dist-esm out types",
2425
"dev": "rollup --config --watch",
2526
"lint": "eslint src/ test/",
2627
"fix-lint": "eslint src/ test/ --fix",
27-
"test": "mocha --timeout 10000"
28+
"test": "mocha out/test/*.test.{js,cjs,mjs} --timeout 10000"
2829
},
2930
"repository": {
3031
"type": "git",
@@ -33,7 +34,10 @@
3334
"license": "MIT",
3435
"devDependencies": {
3536
"@rollup/plugin-typescript": "^11.1.2",
37+
"@types/mocha": "^10.0.4",
3638
"@types/node": "^20.5.7",
39+
"@types/sinon": "^17.0.1",
40+
"@types/uuid": "^9.0.7",
3741
"@typescript-eslint/eslint-plugin": "^6.6.0",
3842
"@typescript-eslint/parser": "^6.6.0",
3943
"chai": "^4.3.7",

src/AzureAppConfiguration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33

44
export type AzureAppConfiguration = {
55
// methods for advanced features, e.g. refresh()
6-
} & ReadonlyMap<string, unknown>;
6+
} & ReadonlyMap<string, any>;

test/.eslintrc

Lines changed: 0 additions & 5 deletions
This file was deleted.

test/clientOptions.test.js renamed to test/clientOptions.test.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT license.
33

4-
const chai = require("chai");
5-
const chaiAsPromised = require("chai-as-promised");
4+
import * as chai from "chai";
5+
import * as chaiAsPromised from "chai-as-promised";
66
chai.use(chaiAsPromised);
77
const expect = chai.expect;
8-
const { load } = require("../dist/index");
9-
const { createMockedConnectionString } = require("./utils/testHelper");
10-
const nock = require("nock");
8+
import { load } from "./exportedApi";
9+
import { createMockedConnectionString } from "./utils/testHelper";
10+
import * as nock from "nock";
1111

1212
class HttpRequestCountPolicy {
13+
count: number;
14+
name: string;
15+
1316
constructor() {
1417
this.count = 0;
1518
this.name = "HttpRequestCountPolicy";
@@ -58,7 +61,7 @@ describe("custom client options", function () {
5861

5962
it("should override default retry options", async () => {
6063
const countPolicy = new HttpRequestCountPolicy();
61-
const loadWithMaxRetries = (maxRetries) => {
64+
const loadWithMaxRetries = (maxRetries: number) => {
6265
return load(createMockedConnectionString(fakeEndpoint), {
6366
clientOptions: {
6467
additionalPolicies: [{

test/exportedApi.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// Copyright (c) Microsoft Corporation.
2+
// Licensed under the MIT license.
3+
4+
export { load } from "../src";

test/json.test.js renamed to test/json.test.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT license.
33

4-
const chai = require("chai");
5-
const chaiAsPromised = require("chai-as-promised");
4+
import * as chai from "chai";
5+
import * as chaiAsPromised from "chai-as-promised";
66
chai.use(chaiAsPromised);
77
const expect = chai.expect;
8-
const { load } = require("../dist/index");
9-
const {
10-
mockAppConfigurationClientListConfigurationSettings,
11-
restoreMocks,
12-
createMockedConnectionString,
13-
createMockedKeyVaultReference,
14-
createMockedJsonKeyValue
15-
} = require("./utils/testHelper");
8+
import { load } from "./exportedApi";
9+
import { mockAppConfigurationClientListConfigurationSettings, restoreMocks, createMockedConnectionString, createMockedKeyVaultReference, createMockedJsonKeyValue } from "./utils/testHelper";
1610

1711
const jsonKeyValue = createMockedJsonKeyValue("json.settings.logging", '{"Test":{"Level":"Debug"},"Prod":{"Level":"Warning"}}');
1812
const keyVaultKeyValue = createMockedKeyVaultReference("TestKey", "https://fake-vault-name.vault.azure.net/secrets/fakeSecretName");

test/keyvault.test.js renamed to test/keyvault.test.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT license.
33

4-
const chai = require("chai");
5-
const chaiAsPromised = require("chai-as-promised");
4+
import * as chai from "chai";
5+
import * as chaiAsPromised from "chai-as-promised";
66
chai.use(chaiAsPromised);
77
const expect = chai.expect;
8-
const { load } = require("../dist/index");
9-
const { sinon,
10-
createMockedConnectionString,
11-
createMockedTokenCredential,
12-
mockAppConfigurationClientListConfigurationSettings, mockSecretClientGetSecret, restoreMocks, createMockedKeyVaultReference } = require("./utils/testHelper");
13-
const { SecretClient } = require("@azure/keyvault-secrets");
8+
import { load } from "./exportedApi";
9+
import { sinon, createMockedConnectionString, createMockedTokenCredential, mockAppConfigurationClientListConfigurationSettings, mockSecretClientGetSecret, restoreMocks, createMockedKeyVaultReference } from "./utils/testHelper";
10+
import { KeyVaultSecret, SecretClient } from "@azure/keyvault-secrets";
1411

1512
const mockedData = [
1613
// key, secretUri, value
@@ -72,9 +69,9 @@ describe("key vault reference", function () {
7269

7370
// mock specific behavior per secret client
7471
const client1 = new SecretClient("https://fake-vault-name.vault.azure.net", createMockedTokenCredential());
75-
sinon.stub(client1, "getSecret").returns({ value: "SecretValueViaClient1" });
72+
sinon.stub(client1, "getSecret").returns(Promise.resolve({value: "SecretValueViaClient1" } as KeyVaultSecret));
7673
const client2 = new SecretClient("https://fake-vault-name2.vault.azure.net", createMockedTokenCredential());
77-
sinon.stub(client2, "getSecret").returns({ value: "SecretValueViaClient2" });
74+
sinon.stub(client2, "getSecret").returns(Promise.resolve({value: "SecretValueViaClient2" } as KeyVaultSecret));
7875
const settings = await load(createMockedConnectionString(), {
7976
keyVaultOptions: {
8077
secretClients: [

test/load.test.js renamed to test/load.test.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT license.
33

4-
const chai = require("chai");
5-
const chaiAsPromised = require("chai-as-promised");
4+
import * as chai from "chai";
5+
import * as chaiAsPromised from "chai-as-promised";
66
chai.use(chaiAsPromised);
77
const expect = chai.expect;
8-
const { load } = require("../dist/index");
9-
const {
10-
mockAppConfigurationClientListConfigurationSettings,
11-
restoreMocks,
12-
createMockedConnectionString,
13-
createMockedEnpoint,
14-
createMockedTokenCredential,
15-
createMockedKeyValue,
16-
} = require("./utils/testHelper");
8+
import { load } from "./exportedApi";
9+
import { mockAppConfigurationClientListConfigurationSettings, restoreMocks, createMockedConnectionString, createMockedEnpoint, createMockedTokenCredential, createMockedKeyValue } from "./utils/testHelper";
1710

1811
const mockedKVs = [{
1912
key: "app.settings.fontColor",

test/requestTracing.test.js renamed to test/requestTracing.test.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT license.
33

4-
const chai = require("chai");
5-
const chaiAsPromised = require("chai-as-promised");
4+
import * as chai from "chai";
5+
import * as chaiAsPromised from "chai-as-promised";
66
chai.use(chaiAsPromised);
77
const expect = chai.expect;
8-
const { load } = require("../dist/index");
9-
const { createMockedConnectionString, createMockedTokenCredential } = require("./utils/testHelper");
10-
8+
import { createMockedConnectionString, createMockedTokenCredential } from "./utils/testHelper";
9+
import { load } from "./exportedApi";
1110
class HttpRequestHeadersPolicy {
11+
headers: any;
12+
name: string;
13+
1214
constructor() {
1315
this.headers = {};
1416
this.name = "HttpRequestHeadersPolicy";
@@ -22,13 +24,14 @@ class HttpRequestHeadersPolicy {
2224
describe("request tracing", function () {
2325
const fakeEndpoint = "https://127.0.0.1"; // sufficient to test the request it sends out
2426
const headerPolicy = new HttpRequestHeadersPolicy();
27+
const position: "perCall" | "perRetry" = "perCall";
2528
const clientOptions = {
2629
retryOptions: {
2730
maxRetries: 0 // save time
2831
},
2932
additionalPolicies: [{
3033
policy: headerPolicy,
31-
position: "perCall"
34+
position
3235
}]
3336
};
3437

@@ -43,7 +46,7 @@ describe("request tracing", function () {
4346
await load(createMockedConnectionString(fakeEndpoint), { clientOptions });
4447
} catch (e) { /* empty */ }
4548
expect(headerPolicy.headers).not.undefined;
46-
expect(headerPolicy.headers.get("User-Agent")).satisfy(ua => ua.startsWith("javascript-appconfiguration-provider"));
49+
expect(headerPolicy.headers.get("User-Agent")).satisfy((ua: string) => ua.startsWith("javascript-appconfiguration-provider"));
4750
});
4851

4952
it("should have request type in correlation-context header", async () => {
@@ -99,7 +102,7 @@ describe("request tracing", function () {
99102
delete process.env.WEBSITE_SITE_NAME;
100103
});
101104

102-
it("should disable request tracing when AZURE_APP_CONFIGURATION_TRACING_DISABLED is true", async() => {
105+
it("should disable request tracing when AZURE_APP_CONFIGURATION_TRACING_DISABLED is true", async () => {
103106
for (const indicator of ["TRUE", "true"]) {
104107
process.env.AZURE_APP_CONFIGURATION_TRACING_DISABLED = indicator;
105108
try {

0 commit comments

Comments
 (0)