Skip to content

Commit 57644ef

Browse files
committed
fix(config-resolver): test for dot character before and after regionregex match
1 parent c85f9db commit 57644ef

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

packages/config-resolver/src/regionInfo/getResolvedSigningRegion.spec.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,34 @@ describe(getResolvedSigningRegion.name, () => {
4646
expect(isFipsRegion).toHaveBeenCalledTimes(1);
4747
expect(isFipsRegion).toHaveBeenCalledWith(mockRegion);
4848
});
49+
50+
it("region is not present between dots in a hostname", () => {
51+
const regionInHostname = "us-east-1";
52+
(isFipsRegion as jest.Mock).mockReturnValueOnce(true);
53+
54+
expect(
55+
getResolvedSigningRegion(mockRegion, {
56+
...mockOptions,
57+
hostname: `test-${regionInHostname}.amazonaws.com`,
58+
regionRegex: "^(us|eu|ap|sa|ca|me|af)\\-\\w+\\-\\d+$",
59+
})
60+
).not.toBeDefined();
61+
expect(isFipsRegion).toHaveBeenCalledTimes(1);
62+
expect(isFipsRegion).toHaveBeenCalledWith(mockRegion);
63+
});
4964
});
5065

51-
it("returns region from hostname is signingRegion is not present", () => {
66+
it("returns region from hostname if signingRegion is not present", () => {
67+
const regionInHostname = "us-east-1";
5268
(isFipsRegion as jest.Mock).mockReturnValueOnce(true);
53-
const matchSpy = jest.spyOn(String.prototype, "match").mockReturnValueOnce([`.${mockSigningRegion}.`]);
5469

55-
expect(getResolvedSigningRegion(mockRegion, mockOptions)).toEqual(mockSigningRegion);
56-
expect(matchSpy).toHaveBeenCalledTimes(1);
57-
expect(matchSpy).toHaveBeenCalledWith(mockRegionRegex);
70+
expect(
71+
getResolvedSigningRegion(mockRegion, {
72+
...mockOptions,
73+
hostname: `test.${regionInHostname}.amazonaws.com`,
74+
regionRegex: "^(us|eu|ap|sa|ca|me|af)\\-\\w+\\-\\d+$",
75+
})
76+
).toEqual(regionInHostname);
5877
expect(isFipsRegion).toHaveBeenCalledTimes(1);
5978
expect(isFipsRegion).toHaveBeenCalledWith(mockRegion);
6079
});

packages/config-resolver/src/regionInfo/getResolvedSigningRegion.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export const getResolvedSigningRegion = (
1313
if (signingRegion) {
1414
return signingRegion;
1515
} else if (isFipsRegion(region)) {
16-
const regionRegexJs = regionRegex.replace("\\\\", "\\").replace(/^\^/g, ".").replace(/\$$/g, ".");
16+
const regionRegexJs = regionRegex.replace("\\\\", "\\").replace(/^\^/g, "\\.").replace(/\$$/g, "\\.");
1717
const regionRegexmatchArray = hostname.match(regionRegexJs);
1818
if (regionRegexmatchArray) {
1919
return regionRegexmatchArray[0].slice(1, -1);

0 commit comments

Comments
 (0)