Skip to content

Commit c1822bd

Browse files
authored
Filter unknown params declared in test case (#3802)
If a test case declares an unknown endpoint parameter when setting parameters on the test client, just ignore it.
1 parent c57b760 commit c1822bd

File tree

5 files changed

+45
-14
lines changed

5 files changed

+45
-14
lines changed

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ private CodeBlock createTestCase(EndpointTestModel test) {
121121

122122
if (test.getParams() != null) {
123123
test.getParams().forEach((n, v) -> {
124-
if (!isDeclaredParam(n)) {
124+
if (!endpointRulesSpecUtils.isDeclaredParam(n)) {
125125
return;
126126
}
127127

@@ -144,9 +144,4 @@ private boolean isRegionBuiltIn(String paramName) {
144144
ParameterModel param = parameters.get(paramName);
145145
return param.getBuiltInEnum() == BuiltInParameter.AWS_REGION;
146146
}
147-
148-
private boolean isDeclaredParam(String paramName) {
149-
Map<String, ParameterModel> parameters = model.getEndpointRuleSetModel().getParameters();
150-
return parameters.containsKey(paramName);
151-
}
152147
}

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,11 @@ private CodeBlock setClientParams(String builderName, Map<String, TreeNode> para
520520
config.add("$T.builder()", configClass());
521521

522522
params.forEach((n, v) -> {
523+
524+
if (!endpointRulesSpecUtils.isDeclaredParam(n)) {
525+
return;
526+
}
527+
523528
CodeBlock valueLiteral = endpointRulesSpecUtils.treeNodeToLiteral(v);
524529
switch (n) {
525530
case "UseDualStack":
@@ -653,9 +658,9 @@ private CodeBlock getSkipReasonBlock(String testName) {
653658

654659
private MethodSpec methodSetupMethod() {
655660
MethodSpec.Builder b = MethodSpec.methodBuilder("methodSetup")
656-
.addModifiers(Modifier.PUBLIC)
657-
.addAnnotation(BeforeEach.class)
658-
.returns(void.class);
661+
.addModifiers(Modifier.PUBLIC)
662+
.addAnnotation(BeforeEach.class)
663+
.returns(void.class);
659664

660665
b.addStatement("super.methodSetup()");
661666

@@ -675,9 +680,9 @@ private CodeBlock s3RegionalEndpointSystemPropertyCode() {
675680

676681
private FieldSpec s3RegionEndpointSystemPropertySaveValueField() {
677682
return FieldSpec.builder(String.class, "regionalEndpointPropertySaveValue")
678-
.addModifiers(Modifier.PRIVATE, Modifier.STATIC)
679-
.initializer("$T.getProperty($L)", System.class, s3RegionalEndpointSystemPropertyCode())
680-
.build();
683+
.addModifiers(Modifier.PRIVATE, Modifier.STATIC)
684+
.initializer("$T.getProperty($L)", System.class, s3RegionalEndpointSystemPropertyCode())
685+
.build();
681686
}
682687

683688
private MethodSpec teardownMethod() {

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.net.URL;
2828
import java.util.List;
2929
import java.util.Locale;
30+
import java.util.Map;
3031
import java.util.concurrent.CompletableFuture;
3132
import java.util.jar.JarFile;
3233
import java.util.stream.Collectors;
@@ -201,4 +202,9 @@ public List<String> rulesEngineResourceFiles() {
201202
throw new UncheckedIOException(e);
202203
}
203204
}
205+
206+
public boolean isDeclaredParam(String paramName) {
207+
Map<String, ParameterModel> parameters = intermediateModel.getEndpointRuleSetModel().getParameters();
208+
return parameters.containsKey(paramName);
209+
}
204210
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,15 @@
8787
}
8888
}
8989
]
90+
},
91+
{
92+
"documentation": "Has has undeclared input parameter",
93+
"expect": {
94+
"error": "Missing info"
95+
},
96+
"params": {
97+
"NotAParam": "ABC"
98+
}
9099
}
91100
],
92101
"version": "1.0"

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,15 @@ private static List<SyncTestCase> syncTestCases() {
104104
OperationWithContextParamRequest request = OperationWithContextParamRequest.builder()
105105
.nestedMember(ChecksumStructure.builder().checksumMode("foo").build()).build();
106106
builder.build().operationWithContextParam(request);
107-
}, Expect.builder().error("Missing info").build()));
107+
}, Expect.builder().error("Missing info").build()), new SyncTestCase("Has has undeclared input parameter",
108+
() -> {
109+
QueryClientBuilder builder = QueryClient.builder();
110+
builder.credentialsProvider(BaseRuleSetClientTest.CREDENTIALS_PROVIDER);
111+
builder.tokenProvider(BaseRuleSetClientTest.TOKEN_PROVIDER);
112+
builder.httpClient(getSyncHttpClient());
113+
APostOperationRequest request = APostOperationRequest.builder().build();
114+
builder.build().aPostOperation(request);
115+
}, Expect.builder().error("Missing info").build()));
108116
}
109117

110118
private static List<AsyncTestCase> asyncTestCases() {
@@ -166,6 +174,14 @@ private static List<AsyncTestCase> asyncTestCases() {
166174
OperationWithContextParamRequest request = OperationWithContextParamRequest.builder()
167175
.nestedMember(ChecksumStructure.builder().checksumMode("foo").build()).build();
168176
return builder.build().operationWithContextParam(request);
169-
}, Expect.builder().error("Missing info").build()));
177+
}, Expect.builder().error("Missing info").build()), new AsyncTestCase("Has has undeclared input parameter",
178+
() -> {
179+
QueryAsyncClientBuilder builder = QueryAsyncClient.builder();
180+
builder.credentialsProvider(BaseRuleSetClientTest.CREDENTIALS_PROVIDER);
181+
builder.tokenProvider(BaseRuleSetClientTest.TOKEN_PROVIDER);
182+
builder.httpClient(getAsyncHttpClient());
183+
APostOperationRequest request = APostOperationRequest.builder().build();
184+
return builder.build().aPostOperation(request);
185+
}, Expect.builder().error("Missing info").build()));
170186
}
171187
}

0 commit comments

Comments
 (0)