Skip to content

Commit da86085

Browse files
committed
fix(middleware-sdk-s3-control): add check for -fips in REGEX_S3CONTROL_HOSTNAME
1 parent a236609 commit da86085

File tree

2 files changed

+37
-28
lines changed

2 files changed

+37
-28
lines changed
Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,38 @@
11
import { getOutpostEndpoint } from "./getOutpostEndpoint";
22

33
describe(getOutpostEndpoint.name, () => {
4-
const mockRegion = "region";
5-
const mockDnsSuffix = "mockDnsSuffix";
6-
const mockHostname = `s3-control.${mockRegion}.${mockDnsSuffix}`;
74
const mockInput = { isCustomEndpoint: false, useFipsEndpoint: false };
8-
95
it("returns hostname if custom endpoint is set", () => {
6+
const mockHostname = "mock.hostname.com";
107
expect(getOutpostEndpoint(mockHostname, { ...mockInput, isCustomEndpoint: true })).toStrictEqual(mockHostname);
118
});
129

1310
describe("returns outpost endpoint", () => {
14-
it("uses region from hostname if regionOverride if provided", () => {
15-
expect(getOutpostEndpoint(mockHostname, mockInput)).toStrictEqual(`s3-outposts.${mockRegion}.${mockDnsSuffix}`);
16-
});
11+
const mockRegion = "region";
12+
const mockDnsSuffix = "mockDnsSuffix";
13+
14+
const testOutpostEndpoint = (useFipsEndpoint: boolean) => {
15+
const mockHostname = `s3-control${useFipsEndpoint ? "-fips" : ""}.${mockRegion}.${mockDnsSuffix}`;
16+
it("uses region from hostname if regionOverride if provided", () => {
17+
expect(getOutpostEndpoint(mockHostname, { ...mockInput, useFipsEndpoint })).toStrictEqual(
18+
`s3-outposts${useFipsEndpoint ? "-fips" : ""}.${mockRegion}.${mockDnsSuffix}`
19+
);
20+
});
21+
22+
it("uses region from regionOverride if provided", () => {
23+
const mockRegionOverride = "mockRegionOverride";
24+
expect(
25+
getOutpostEndpoint(mockHostname, { ...mockInput, useFipsEndpoint, regionOverride: mockRegionOverride })
26+
).toStrictEqual(`s3-outposts${useFipsEndpoint ? "-fips" : ""}.${mockRegionOverride}.${mockDnsSuffix}`);
27+
});
28+
};
1729

18-
it("uses region from regionOverride if provided", () => {
19-
const mockRegionOverride = "mockRegionOverride";
20-
expect(getOutpostEndpoint(mockHostname, { ...mockInput, regionOverride: mockRegionOverride })).toStrictEqual(
21-
`s3-outposts.${mockRegionOverride}.${mockDnsSuffix}`
22-
);
30+
describe("with FIPS", () => {
31+
testOutpostEndpoint(true);
2332
});
2433

25-
it(`adds suffix "-fips" if useFipsEndpoint is set`, () => {
26-
expect(getOutpostEndpoint(mockHostname, { ...mockInput, useFipsEndpoint: true })).toStrictEqual(
27-
`s3-outposts-fips.${mockRegion}.${mockDnsSuffix}`
28-
);
34+
describe("without FIPS", () => {
35+
testOutpostEndpoint(false);
2936
});
3037
});
3138
});
Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const REGEX_S3CONTROL_HOSTNAME = /^(.+\.)?s3-control[.-]([a-z0-9-]+)\./;
1+
const REGEX_S3CONTROL_HOSTNAME = /^(.+\.)?s3-control(-fips)?[.-]([a-z0-9-]+)\./;
22

33
export interface GetOutpostEndpointOptions {
44
isCustomEndpoint?: boolean;
@@ -10,15 +10,17 @@ export const getOutpostEndpoint = (
1010
hostname: string,
1111
{ isCustomEndpoint, regionOverride, useFipsEndpoint }: GetOutpostEndpointOptions
1212
): string => {
13-
const [matched, prefix, region] = hostname.match(REGEX_S3CONTROL_HOSTNAME)!;
14-
// hostname prefix will be ignored even if presents
15-
return isCustomEndpoint
16-
? hostname
17-
: [
18-
`s3-outposts${useFipsEndpoint ? "-fips" : ""}`,
19-
regionOverride || region,
20-
hostname.replace(new RegExp(`^${matched}`), ""),
21-
]
22-
.filter((part) => part !== undefined)
23-
.join(".");
13+
if (isCustomEndpoint) {
14+
return hostname;
15+
}
16+
17+
const [matched, prefix, fips, region] = hostname.match(REGEX_S3CONTROL_HOSTNAME)!;
18+
// hostname prefix will be ignored even if it is present
19+
return [
20+
`s3-outposts${useFipsEndpoint ? "-fips" : ""}`,
21+
regionOverride || region,
22+
hostname.replace(new RegExp(`^${matched}`), ""),
23+
]
24+
.filter((part) => part !== undefined)
25+
.join(".");
2426
};

0 commit comments

Comments
 (0)