Skip to content

Commit d31adc2

Browse files
committed
Align protocol test query param logic with APIG behavior
We use APIGateway multi-value query parameters which will always use an array value for query parameters, even if they're specified only once, and even if that single specification does not have a value. Our translation logic from APIG preserves this structure, and since all query parameters can have multiple values, this isn't necessarily wrong. Our handling of query parameters is actually broken in main, but protocol tests don't uncover this due to the logic that generates non-array values for single query parameters. Streamlining our generated requests in protocol tests uncovers this bug, and aligns more closely with how our code runs in the wild.
1 parent 75df923 commit d31adc2

File tree

1 file changed

+1
-7
lines changed

1 file changed

+1
-7
lines changed

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/HttpProtocolTestGenerator.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -449,13 +449,7 @@ private ObjectNode buildQueryBag(List<String> queryParams) {
449449

450450
ObjectNode.Builder nodeBuilder = ObjectNode.objectNodeBuilder();
451451
for (Map.Entry<String, List<String>> entry : query.entrySet()) {
452-
// The value of the query bag can either be a single string or a list, so we need to ensure individual
453-
// values are written out as individual strings.
454-
if (entry.getValue().size() == 1) {
455-
nodeBuilder.withMember(entry.getKey(), StringNode.from(entry.getValue().get(0)));
456-
} else {
457-
nodeBuilder.withMember(entry.getKey(), ArrayNode.fromStrings(entry.getValue()));
458-
}
452+
nodeBuilder.withMember(entry.getKey(), ArrayNode.fromStrings(entry.getValue()));
459453
}
460454
return nodeBuilder.build();
461455
}

0 commit comments

Comments
 (0)