Skip to content

Commit 4209967

Browse files
trivikrgosar
andauthored
chore(config-resolver): reuse code in CustomEndpointsConfig (#2720)
Co-authored-by: Jaykumar Gosar <[email protected]>
1 parent 0c74892 commit 4209967

12 files changed

+82
-121
lines changed

packages/config-resolver/src/CustomEndpointsConfig.spec.ts

-64
This file was deleted.

packages/config-resolver/src/CustomEndpointsConfig.ts

-50
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
export * from "./resolveCustomEndpointsConfig";
12
export * from "./resolveEndpointsConfig";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { resolveCustomEndpointsConfig } from "./resolveCustomEndpointsConfig";
2+
import { normalizeEndpoint } from "./utils/normalizeEndpoint";
3+
4+
jest.mock("./utils/normalizeEndpoint");
5+
6+
describe(resolveCustomEndpointsConfig.name, () => {
7+
const mockEndpoint = {
8+
protocol: "http:",
9+
hostname: "localhost",
10+
path: "/",
11+
};
12+
13+
const mockInput = { endpoint: mockEndpoint } as any;
14+
15+
beforeEach(() => {
16+
(normalizeEndpoint as jest.Mock).mockReturnValueOnce(() => Promise.resolve(mockEndpoint));
17+
});
18+
19+
afterEach(() => {
20+
jest.clearAllMocks();
21+
});
22+
23+
describe("tls", () => {
24+
it.each([true, false])("returns %s when it's %s", (tls) => {
25+
expect(resolveCustomEndpointsConfig({ ...mockInput, tls }).tls).toStrictEqual(tls);
26+
});
27+
28+
it("returns true if input.tls is undefined", () => {
29+
expect(resolveCustomEndpointsConfig({ ...mockInput }).tls).toStrictEqual(true);
30+
});
31+
});
32+
33+
it("returns true for isCustomEndpoint", () => {
34+
expect(resolveCustomEndpointsConfig(mockInput).isCustomEndpoint).toStrictEqual(true);
35+
});
36+
37+
it("returns normalized endpoint", async () => {
38+
const endpoint = await resolveCustomEndpointsConfig(mockInput).endpoint();
39+
expect(endpoint).toStrictEqual(mockEndpoint);
40+
expect(normalizeEndpoint).toHaveBeenCalledTimes(1);
41+
expect(normalizeEndpoint).toHaveBeenCalledWith(mockInput);
42+
});
43+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { Endpoint, Provider, UrlParser } from "@aws-sdk/types";
2+
3+
import { EndpointsInputConfig, EndpointsResolvedConfig } from "./resolveEndpointsConfig";
4+
import { normalizeEndpoint } from "./utils/normalizeEndpoint";
5+
6+
export interface CustomEndpointsInputConfig extends EndpointsInputConfig {
7+
/**
8+
* The fully qualified endpoint of the webservice.
9+
*/
10+
endpoint: string | Endpoint | Provider<Endpoint>;
11+
}
12+
13+
interface PreviouslyResolved {
14+
urlParser: UrlParser;
15+
}
16+
17+
export interface CustomEndpointsResolvedConfig extends EndpointsResolvedConfig {
18+
/**
19+
* Whether the endpoint is specified by caller.
20+
* @internal
21+
*/
22+
isCustomEndpoint: true;
23+
}
24+
25+
export const resolveCustomEndpointsConfig = <T>(
26+
input: T & CustomEndpointsInputConfig & PreviouslyResolved
27+
): T & CustomEndpointsResolvedConfig => ({
28+
...input,
29+
tls: input.tls ?? true,
30+
endpoint: normalizeEndpoint(input),
31+
isCustomEndpoint: true,
32+
});

packages/config-resolver/src/endpointsConfig/resolveEndpointsConfig.spec.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { getEndpointFromRegion } from "./getEndpointFromRegion";
2-
import { normalizeEndpoint } from "./normalizeEndpoint";
31
import { resolveEndpointsConfig } from "./resolveEndpointsConfig";
2+
import { getEndpointFromRegion } from "./utils/getEndpointFromRegion";
3+
import { normalizeEndpoint } from "./utils/normalizeEndpoint";
44

5-
jest.mock("./getEndpointFromRegion");
6-
jest.mock("./normalizeEndpoint");
5+
jest.mock("./utils/getEndpointFromRegion");
6+
jest.mock("./utils/normalizeEndpoint");
77

88
describe(resolveEndpointsConfig.name, () => {
99
const mockEndpoint = {

packages/config-resolver/src/endpointsConfig/resolveEndpointsConfig.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Endpoint, Provider, RegionInfoProvider, UrlParser } from "@aws-sdk/types";
22

3-
import { getEndpointFromRegion } from "./getEndpointFromRegion";
4-
import { normalizeEndpoint } from "./normalizeEndpoint";
3+
import { getEndpointFromRegion } from "./utils/getEndpointFromRegion";
4+
import { normalizeEndpoint } from "./utils/normalizeEndpoint";
55

66
export interface EndpointsInputConfig {
77
/**

packages/config-resolver/src/index.ts

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
export * from "./CustomEndpointsConfig";
21
export * from "./endpointsConfig";
32
export * from "./RegionConfig";
43
export * from "./regionInfo";

0 commit comments

Comments
 (0)