Skip to content

Commit 5e70fed

Browse files
authored
Add support for generating endpoint tests with integer parameter values. (#7070)
* Add support for generating endpoint tests with integer parameter values. * Add support for floats as well
1 parent 66ec243 commit 5e70fed

5 files changed

Lines changed: 103 additions & 2 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "bugfix",
3+
"category": "AWS SDK for Java v2 Codegen",
4+
"contributor": "",
5+
"description": "Add support for generating endpoint tests with integer parameter values."
6+
}

codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/EndpointRulesSpecUtils.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.fasterxml.jackson.core.TreeNode;
1919
import com.fasterxml.jackson.jr.stree.JrsArray;
2020
import com.fasterxml.jackson.jr.stree.JrsBoolean;
21+
import com.fasterxml.jackson.jr.stree.JrsNumber;
2122
import com.fasterxml.jackson.jr.stree.JrsString;
2223
import com.fasterxml.jackson.jr.stree.JrsValue;
2324
import com.squareup.javapoet.ClassName;
@@ -189,6 +190,12 @@ public CodeBlock treeNodeToLiteral(TreeNode treeNode) {
189190
case VALUE_FALSE:
190191
b.add("$L", Validate.isInstanceOf(JrsBoolean.class, treeNode, "Expected boolean").booleanValue());
191192
break;
193+
case VALUE_NUMBER_INT:
194+
b.add("$L", Validate.isInstanceOf(JrsNumber.class, treeNode, "Expected number").getValue().intValue());
195+
break;
196+
case VALUE_NUMBER_FLOAT:
197+
b.add("$L", Validate.isInstanceOf(JrsNumber.class, treeNode, "Expected number").getValue().doubleValue());
198+
break;
192199
case START_ARRAY:
193200
handleArrayDefaultValue(b, "stringarray",
194201
Validate.isInstanceOf(JrsArray.class, treeNode, "Expected string array"));

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/endpoint-tests.json

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,46 @@
183183
}
184184
]
185185
},
186+
{
187+
"documentation": "Has integer operation input",
188+
"expect": {
189+
"endpoint": {
190+
"url": "https://myservice.aws"
191+
}
192+
},
193+
"params": {
194+
"region": "us-east-1"
195+
},
196+
"operationInputs": [
197+
{
198+
"operationName": "OperationWithContextParam",
199+
"operationParams": {
200+
"StringMember": "this is a test",
201+
"IntegerMember": 42
202+
}
203+
}
204+
]
205+
},
206+
{
207+
"documentation": "Has double operation input",
208+
"expect": {
209+
"endpoint": {
210+
"url": "https://myservice.aws"
211+
}
212+
},
213+
"params": {
214+
"region": "us-east-1"
215+
},
216+
"operationInputs": [
217+
{
218+
"operationName": "OperationWithContextParam",
219+
"operationParams": {
220+
"StringMember": "this is a test",
221+
"DoubleMember": 3.14
222+
}
223+
}
224+
]
225+
},
186226
{
187227
"documentation": "Has has undeclared input parameter",
188228
"expect": {

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/query/service-2.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,12 @@
216216
"name": "operationContextParam"
217217
}
218218
},
219+
"IntegerMember": {
220+
"shape": "Integer"
221+
},
222+
"DoubleMember": {
223+
"shape": "Double"
224+
},
219225
"NestedMember": {
220226
"shape": "ChecksumStructure"
221227
}
@@ -453,6 +459,8 @@
453459
"payload":"Body"
454460
},
455461
"String":{"type":"string"},
462+
"Integer":{"type":"integer"},
463+
"Double":{"type":"double"},
456464
"BearerAuthOperationRequest": {
457465
"type": "structure",
458466
"members": {

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules/endpoint-rules-test-class.java

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,27 @@ private static List<SyncTestCase> syncTestCases() {
117117
OperationWithContextParamRequest request = OperationWithContextParamRequest.builder()
118118
.nestedMember(ChecksumStructure.builder().checksumMode("foo").build()).build();
119119
builder.build().operationWithContextParam(request);
120-
}, Expect.builder().error("Missing info").build()));
120+
}, Expect.builder().error("Missing info").build()),
121+
new SyncTestCase("Has integer operation input", () -> {
122+
QueryClientBuilder builder = QueryClient.builder();
123+
builder.credentialsProvider(BaseRuleSetClientTest.CREDENTIALS_PROVIDER);
124+
builder.tokenProvider(BaseRuleSetClientTest.TOKEN_PROVIDER);
125+
builder.httpClient(getSyncHttpClient());
126+
builder.region(Region.of("us-east-1"));
127+
OperationWithContextParamRequest request = OperationWithContextParamRequest.builder()
128+
.stringMember("this is a test").integerMember(42).build();
129+
builder.build().operationWithContextParam(request);
130+
}, Expect.builder().endpoint(Endpoint.builder().url(URI.create("https://myservice.aws")).build()).build()),
131+
new SyncTestCase("Has double operation input", () -> {
132+
QueryClientBuilder builder = QueryClient.builder();
133+
builder.credentialsProvider(BaseRuleSetClientTest.CREDENTIALS_PROVIDER);
134+
builder.tokenProvider(BaseRuleSetClientTest.TOKEN_PROVIDER);
135+
builder.httpClient(getSyncHttpClient());
136+
builder.region(Region.of("us-east-1"));
137+
OperationWithContextParamRequest request = OperationWithContextParamRequest.builder()
138+
.stringMember("this is a test").doubleMember(3.14).build();
139+
builder.build().operationWithContextParam(request);
140+
}, Expect.builder().endpoint(Endpoint.builder().url(URI.create("https://myservice.aws")).build()).build()));
121141
}
122142

123143
private static List<AsyncTestCase> asyncTestCases() {
@@ -189,6 +209,26 @@ private static List<AsyncTestCase> asyncTestCases() {
189209
OperationWithContextParamRequest request = OperationWithContextParamRequest.builder()
190210
.nestedMember(ChecksumStructure.builder().checksumMode("foo").build()).build();
191211
return builder.build().operationWithContextParam(request);
192-
}, Expect.builder().error("Missing info").build()));
212+
}, Expect.builder().error("Missing info").build()),
213+
new AsyncTestCase("Has integer operation input", () -> {
214+
QueryAsyncClientBuilder builder = QueryAsyncClient.builder();
215+
builder.credentialsProvider(BaseRuleSetClientTest.CREDENTIALS_PROVIDER);
216+
builder.tokenProvider(BaseRuleSetClientTest.TOKEN_PROVIDER);
217+
builder.httpClient(getAsyncHttpClient());
218+
builder.region(Region.of("us-east-1"));
219+
OperationWithContextParamRequest request = OperationWithContextParamRequest.builder()
220+
.stringMember("this is a test").integerMember(42).build();
221+
return builder.build().operationWithContextParam(request);
222+
}, Expect.builder().endpoint(Endpoint.builder().url(URI.create("https://myservice.aws")).build()).build()),
223+
new AsyncTestCase("Has double operation input", () -> {
224+
QueryAsyncClientBuilder builder = QueryAsyncClient.builder();
225+
builder.credentialsProvider(BaseRuleSetClientTest.CREDENTIALS_PROVIDER);
226+
builder.tokenProvider(BaseRuleSetClientTest.TOKEN_PROVIDER);
227+
builder.httpClient(getAsyncHttpClient());
228+
builder.region(Region.of("us-east-1"));
229+
OperationWithContextParamRequest request = OperationWithContextParamRequest.builder()
230+
.stringMember("this is a test").doubleMember(3.14).build();
231+
return builder.build().operationWithContextParam(request);
232+
}, Expect.builder().endpoint(Endpoint.builder().url(URI.create("https://myservice.aws")).build()).build()));
193233
}
194234
}

0 commit comments

Comments
 (0)