Percent Encoding Test & Spec Enhancements #803
Merged
+37
−5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of changes:
Two separate commits that increase coverage of percent encoding tests:
The current test actually admits buggy behavior where neither greedy nor non-greedy labels are escaped, a bug I know
impacts at least 1 SDK. This updates the test to include
/
in the non-greedy label to ensure that it is, in fact, escaped.Add test for httpLabel/httpQuery escaping.
Smithy recently amended the HTTP label spec to clarify the set of characters that must be escaped. But, due to
a peculiarity of the spec, it Smithy omitted the
%
character from this set which definitely needs to be escaped.This diff updates the spec and adds exhaustive test cases for both. These tests have been run on and pass the Rust SDK protocol test suite. (They also went the other way, I had 2 bugs caused by copy-paste errors converting the Smithy set to the percent encoding set used by the Rust SDK).
Exhaustive tests are important here, because I suspect other SDKs may have similar copy-paste errors, furthermore, several of these characters, namely:
:()!,
may not be escaped by a "out of the box" percent encoder but these are known to cause problems when sent to AWS services.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.