ISSUE-675 # Url encode dynamic values using URLENCODED token - #787
Open
imBharatMalviya wants to merge 1 commit into
Open
ISSUE-675 # Url encode dynamic values using URLENCODED token#787imBharatMalviya wants to merge 1 commit into
imBharatMalviya wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
URL encode dynamic values using the URLENCODED token
Fixed Which Issue?
PR Branch
issue-675-urlencoded-token
Motivation and Context
A step could not reuse a value produced by an earlier step in its url when that
value contains special characters. e.g. an id like
#37:29has to travel overthe wire as
%2337%3A29, and the DSL had no way of encoding it, so such flows(POST then GET/PUT/DELETE by the generated id) were not automatable.
This PR introduces the
URLENCODED:value token, which encodes the resolvedvalue with
URLEncoder.encode(value, "UTF-8"), i.e. exactly the behaviour askedfor in the issue.
The id
#37:29of the earlier step now reaches the server as/questions/%2337%3A29.It resolves in the
url,requestandassertionssections, and supports:${URLENCODED:$.step_name.response.body.id}${URLENCODED:#37:29}${URLENCODED:LOCAL.DATE.TODAY:yyyy/MM/dd}${URLENCODED:web.application.endpoint.context}Changed classes:
ZeroCodeValueTokens- newURL_ENCODEDtoken, registered as a known tokenTokenUtils- newurlEncoded(...), encodes static values and nested tokensZeroCodeAssertionsProcessorImpl- encodes the json paths of earlier stepsafter they are resolved against the scenario state, and target env properties
Existing token behaviour is untouched. An absent json path leaves the token as
it is, which is how the plain json paths already behave.
Checklist:
1. New Unit tests were added
2. Integration tests were added
3. Test names are meaningful
3.1 Feature manually tested and outcome is successful
4. PR doesn't break any of the earlier features for end users
5. PR doesn't break the HTML report features directly
/targetfolder and they look fine6. PR doesn't break any HTML report features indirectly
7. Branch build passed in CI
8. No 'package.*' in the imports
9. Relevant DOcumentation page added or updated with clear instructions and examples for the end user
10. Http test added to
http-testing-examplesmodule(if applicable) ?11. Kafka test added to
kafka-testing-examplesmodule(if applicable) ?Tests added
TokenUtilsTest, 6 cases inZeroCodeAssertionsProcessorImplTestintegrationtests/urlencoded/UrlEncodedTokenTest, a two stepscenario passing an id with special chars from one step to the next
HelloWorldUrlEncodedTestdoes a real POST then GET againstthe local mock server and is added to the surefire list so CI runs it
Local test run
mvn -pl core clean test- all unit and integration tests pass, except theones that need the CI docker containers, which are not reachable locally.
mvn -pl http-testing-examples test- 10 tests, all green.