Skip to content

Commit 098e850

Browse files
authored
test(util-endpoints): add integration tests for resolving endpoint (#3926)
1 parent aecd894 commit 098e850

28 files changed

+2169
-2
lines changed

jest.config.integ.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module.exports = {
2-
projects: ["<rootDir>/clients/*/jest.integ.config.js"],
2+
projects: ["<rootDir>/clients/*/jest.integ.config.js", "<rootDir>/packages/*/jest.config.integ.js"],
33
};
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module.exports = {
2+
preset: "ts-jest",
3+
testMatch: ["**/*.integ.spec.ts"],
4+
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"testCases": [
3+
{
4+
"documentation": "basic region templating",
5+
"params": {
6+
"Region": "us-east-1"
7+
},
8+
"expect": {
9+
"endpoint": {
10+
"url": "https://us-east-1.amazonaws.com",
11+
"properties": {
12+
"authSchemes": [
13+
{
14+
"name": "sigv4",
15+
"signingRegion": "us-east-1",
16+
"signingName": "serviceName"
17+
}
18+
]
19+
}
20+
}
21+
}
22+
},
23+
{
24+
"documentation": "test case where region is unset",
25+
"params": {},
26+
"expect": {
27+
"error": "Region must be set to resolve a valid endpoint"
28+
}
29+
}
30+
],
31+
"version": "1.4"
32+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
{
2+
"testCases": [
3+
{
4+
"documentation": "default endpoint",
5+
"params": {},
6+
"expect": {
7+
"endpoint": {
8+
"url": "https://fips.us-west-5.amazonaws.com"
9+
}
10+
}
11+
},
12+
{
13+
"documentation": "test case where FIPS is disabled",
14+
"params": {
15+
"UseFips": false
16+
},
17+
"expect": {
18+
"error": "UseFips = false"
19+
}
20+
},
21+
{
22+
"documentation": "test case where FIPS is enabled explicitly",
23+
"params": {
24+
"UseFips": true
25+
},
26+
"expect": {
27+
"endpoint": {
28+
"url": "https://fips.us-west-5.amazonaws.com"
29+
}
30+
}
31+
},
32+
{
33+
"documentation": "defaults can be overridden",
34+
"params": {
35+
"Region": "us-east-1"
36+
},
37+
"expect": {
38+
"endpoint": {
39+
"url": "https://fips.us-east-1.amazonaws.com"
40+
}
41+
}
42+
}
43+
],
44+
"version": "1.4"
45+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{
2+
"testCases": [
3+
{
4+
"documentation": "simple region endpoint",
5+
"params": {
6+
"region": "us-east-1"
7+
},
8+
"expect": {
9+
"endpoint": {
10+
"url": "https://events.us-east-1.amazonaws.com"
11+
}
12+
}
13+
},
14+
{
15+
"documentation": "basic case of endpointId",
16+
"params": {
17+
"region": "us-east-1",
18+
"endpointId": "myendpoint"
19+
},
20+
"expect": {
21+
"endpoint": {
22+
"url": "https://myendpoint.endpoint.events.amazonaws.com",
23+
"properties": {
24+
"authSchemes": [
25+
{
26+
"name": "sigv4a",
27+
"signingName": "events",
28+
"signingRegionSet": ["*"]
29+
}
30+
]
31+
}
32+
}
33+
}
34+
},
35+
{
36+
"documentation": "endpointId & FIPS",
37+
"params": {
38+
"region": "us-east-1",
39+
"endpointId": "myendpoint",
40+
"useFIPSEndpoint": true
41+
},
42+
"expect": {
43+
"error": "FIPS endpoints not supported with multi-region endpoints"
44+
}
45+
}
46+
],
47+
"version": "1.4"
48+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
{
2+
"testCases": [
3+
{
4+
"documentation": "test where URI is set and flows to URI and header",
5+
"params": {
6+
"Uri": "https://www.example.com",
7+
"Arn": "arn:aws:s3:us-east-2:012345678:outpost:op-1234"
8+
},
9+
"expect": {
10+
"endpoint": {
11+
"url": "https://www.example.com",
12+
"headers": {
13+
"x-uri": ["https://www.example.com"],
14+
"x-arn-region": ["us-east-2"]
15+
}
16+
}
17+
}
18+
},
19+
{
20+
"documentation": "test where explicit error is set",
21+
"params": {
22+
"CustomError": "This is an error!"
23+
},
24+
"expect": {
25+
"error": "This is an error!"
26+
}
27+
},
28+
{
29+
"documentation": "test where an ARN field is used in the error directly",
30+
"params": {
31+
"Arn": "arn:This is an error!:s3:us-east-2:012345678:outpost:op-1234"
32+
},
33+
"expect": {
34+
"error": "This is an error!"
35+
}
36+
},
37+
{
38+
"documentation": "test case where no fields are set",
39+
"params": {},
40+
"expect": {
41+
"error": "No fields were set"
42+
}
43+
}
44+
],
45+
"version": "1.4"
46+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"version": "1.4",
3+
"testCases": [
4+
{
5+
"documentation": "header set to region",
6+
"params": {
7+
"Region": "us-east-1"
8+
},
9+
"expect": {
10+
"endpoint": {
11+
"url": "https://us-east-1.amazonaws.com",
12+
"headers": {
13+
"x-amz-region": ["us-east-1"],
14+
"x-amz-multi": ["*", "us-east-1"]
15+
}
16+
}
17+
}
18+
}
19+
]
20+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"testCases": [
3+
{
4+
"documentation": "local region override",
5+
"params": {
6+
"Region": "local"
7+
},
8+
"expect": {
9+
"endpoint": {
10+
"url": "http://localhost:8080"
11+
}
12+
}
13+
},
14+
{
15+
"documentation": "standard region templated",
16+
"params": {
17+
"Region": "us-east-2"
18+
},
19+
"expect": {
20+
"endpoint": {
21+
"url": "https://us-east-2.someservice.amazonaws.com"
22+
}
23+
}
24+
}
25+
],
26+
"version": "1.4"
27+
}
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
{
2+
"testCases": [
3+
{
4+
"documentation": "arn + region resolution",
5+
"params": {
6+
"Bucket": "arn:aws:s3:us-east-2:012345678:outpost:op-1234",
7+
"Region": "us-east-2"
8+
},
9+
"expect": {
10+
"endpoint": {
11+
"url": "https://op-1234-012345678.us-east-2.amazonaws.com"
12+
}
13+
}
14+
},
15+
{
16+
"documentation": "arn, unset outpost id",
17+
"params": {
18+
"Bucket": "arn:aws:s3:us-east-2:012345678:outpost",
19+
"Region": "us-east-2"
20+
},
21+
"expect": {
22+
"error": "Invalid ARN: outpostId was not set"
23+
}
24+
},
25+
{
26+
"documentation": "arn, empty outpost id (tests that empty strings are handled properly during matching)",
27+
"params": {
28+
"Bucket": "arn:aws:s3:us-east-2:012345678:outpost::",
29+
"Region": "us-east-2"
30+
},
31+
"expect": {
32+
"error": "OutpostId was empty"
33+
}
34+
},
35+
{
36+
"documentation": "arn, empty outpost id (tests that ARN parsing considers a trailing colon)",
37+
"params": {
38+
"Bucket": "arn:aws:s3:us-east-2:012345678:outpost:",
39+
"Region": "us-east-2"
40+
},
41+
"expect": {
42+
"error": "OutpostId was empty"
43+
}
44+
},
45+
{
46+
"documentation": "valid hostlabel + region resolution",
47+
"params": {
48+
"Bucket": "mybucket",
49+
"Region": "us-east-2"
50+
},
51+
"expect": {
52+
"endpoint": {
53+
"url": "https://mybucket.us-east-2.amazonaws.com"
54+
}
55+
}
56+
},
57+
{
58+
"documentation": "not a valid hostlabel + region resolution",
59+
"params": {
60+
"Bucket": "99_a",
61+
"Region": "us-east-2"
62+
},
63+
"expect": {
64+
"endpoint": {
65+
"url": "https://us-east-2.amazonaws.com/99_a"
66+
}
67+
}
68+
},
69+
{
70+
"documentation": "no bucket",
71+
"params": {
72+
"Region": "us-east-2"
73+
},
74+
"expect": {
75+
"endpoint": {
76+
"url": "https://us-east-2.amazonaws.com"
77+
}
78+
}
79+
},
80+
{
81+
"documentation": "a string that is not a 6-part ARN",
82+
"params": {
83+
"TestCaseId": "invalid-arn",
84+
"Bucket": "asdf"
85+
},
86+
"expect": {
87+
"error": "Test case passed: `asdf` is not a valid ARN."
88+
}
89+
},
90+
{
91+
"documentation": "resource id MUST not be null",
92+
"params": {
93+
"TestCaseId": "invalid-arn",
94+
"Bucket": "arn:aws:s3:us-west-2:123456789012:"
95+
},
96+
"expect": {
97+
"error": "Test case passed: `arn:aws:s3:us-west-2:123456789012:` is not a valid ARN."
98+
}
99+
},
100+
{
101+
"documentation": "service MUST not be null",
102+
"params": {
103+
"TestCaseId": "invalid-arn",
104+
"Bucket": "arn:aws::us-west-2:123456789012:resource-id"
105+
},
106+
"expect": {
107+
"error": "Test case passed: `arn:aws::us-west-2:123456789012:resource-id` is not a valid ARN."
108+
}
109+
},
110+
{
111+
"documentation": "partition MUST not be null",
112+
"params": {
113+
"TestCaseId": "invalid-arn",
114+
"Bucket": "arn::s3:us-west-2:123456789012:resource-id"
115+
},
116+
"expect": {
117+
"error": "Test case passed: `arn::s3:us-west-2:123456789012:resource-id` is not a valid ARN."
118+
}
119+
},
120+
{
121+
"documentation": "region MAY be null",
122+
"params": {
123+
"TestCaseId": "valid-arn",
124+
"Bucket": "arn:aws:s3::123456789012:resource-id"
125+
},
126+
"expect": {
127+
"error": "Test case passed: A valid ARN was parsed: service: `s3`, partition: `aws, region: ``, accountId: `123456789012`, resource: `resource-id`"
128+
}
129+
},
130+
{
131+
"documentation": "accountId MAY be null",
132+
"params": {
133+
"TestCaseId": "valid-arn",
134+
"Bucket": "arn:aws:s3:us-east-1::resource-id"
135+
},
136+
"expect": {
137+
"error": "Test case passed: A valid ARN was parsed: service: `s3`, partition: `aws, region: `us-east-1`, accountId: ``, resource: `resource-id`"
138+
}
139+
},
140+
{
141+
"documentation": "accountId MAY be non-numeric",
142+
"params": {
143+
"TestCaseId": "valid-arn",
144+
"Bucket": "arn:aws:s3:us-east-1:abcd:resource-id"
145+
},
146+
"expect": {
147+
"error": "Test case passed: A valid ARN was parsed: service: `s3`, partition: `aws, region: `us-east-1`, accountId: `abcd`, resource: `resource-id`"
148+
}
149+
}
150+
],
151+
"version": "1.4"
152+
}

0 commit comments

Comments
 (0)