Forum Discussion
Hi,
Could you please clarify:
-- What parameter must be added: validator_id=DEX1 or env=ENV1?
-- "double query parameters being sent" - what does this mean? Can you provide an example/screenshot?
-- Considering that "double query parameters being sent", it looks like you were able to add additional parameter to the request before it is routed. Can you let us know how this was done?
Thanks for response and sorry for the confusion
We are trying to add the add the additional parameter as env=ENV1
The incoming request from the client looks like : http://localhost:8090/oauth2?username=ABCD&password=Test123
The requirement is to add addtional parameter env=ENV1 to the incoming request like : http://localhost:8090/oauth2?username=ABCD&password=Test123&env=ENV1
I tried to add the below script to the Events (however it did not work) and then later I tried to add the same script to the "OnRequest Script" where we are trying to extract the query parameters and then passed query property to the "Route to" option as : https://HOSTNAME?${query}&env=ENV1
Please see the screen-shot.However, it did not work.
def incomingRequest = mockRequest.httpRequest
def path = mockRequest.path
def query = mockRequest.queryString
context.setProperty("query", query)
Below is the error what I see in the http logs :
POST /?scope=full&grant_type=password&username=ABCD&password=Test123&env=ENV1/as/token.oauth2?scope=full&grant_type=password&username=ABCD&password=Test123 HTTP/1.1
I am new to the ReadyAPI ServiceV. If you think this can be achieved by a different method please help with it.
- AlexKaras6 years agoChampion Level 3
Hi,
Thank you for the detailed description and the screenshot.
It is my current understanding that you need this:
-- If the request to your virtualized service contains /oauth2 in the path then extra parameter must be added to the query string and the request must be routed;
-- Otherwise the request must not be routed.
If my above understanding is correct, then I would try to follow the scenario described in this help topic: https://support.smartbear.com/readyapi/docs/servicev/routing/conditional.html
I.e.:
-- Set Route Options for the virtual service to either Route to or Route Non-Virtualized Requests according to what works best for you and as per https://support.smartbear.com/readyapi/docs/servicev/routing/about.html#setting-up-routing description;
-- For the required request, set Routing Options to Conditional;
-- Enter this code into the Routing Options script code window that will appear on the right:
if (! mockRequest.path.contains('/oauth2')) return false; // do not route the request mockRequest.queryString += '&env=ENV1'; log.info 'DEBUG: Modified query string - ' + mockRequest.queryString; return true; // route the request
Does this help?
- Vib6 years agoOccasional Contributor
Hi Alex,
Thanks for your response. I tried the solution provided by you. However I see that the addtional paratmeter is not getting added. Even in the script log the logs is not getting generated. Looks like it is not invoking the script. Please see the attached screenshot.
Below is the HTTP log.
Mon Nov 25 10:12:26 CST 2019: DEBUG: http-outgoing >>
POST /as/oauth2 HTTP/1.1
Authorization: Basic dnhsVjVWbXpXeEhWWlRW
Accept: */*
Cache-Control: no-cache
User-Agent: PostmanRuntime/7.20.1
Connection: keep-alive
Postman-Token: 2672d906-2c71-4f45-bfeb-3533e526deed
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 76
Host: HOSTNAME
Cookie: PF=vczZKrzF0BnzGeLv7Wbgaxscope=full&grant_type=password&username=ABCD&password=Test123
Mon Nov 25 10:12:26 CST 2019: DEBUG: http-incoming <<
HTTP/1.1 200 OK
Date: Mon, 25 Nov 2019 16:12:26 GMT
X-Frame-Options: SAMEORIGIN
Referrer-Policy: origin
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked57
DEFAULT RESPONSE
0- AlexKaras6 years agoChampion Level 3
Hi,
Thank you for the screenshots.
I think (I am not a ServiceV guru) that the script is not called because of the Route Non-Virtualized Request setting been set in the Route Options combo-box. (Though I am not 100% sure that I got description from the documentation right.)
What I would try is:
a) Add something like this as the first script line:
log.info 'DEBUG: Inside the script';
Just to check if the script is called at all;
b) Try to change the Route Non-Virtualized Request setting to Route to one and check if it changes something.
P.S. You may check not only the Script Log, but also the Error Log one - sometimes the latter contains script errors while the former remains empty.
Related Content
- 2 years ago
- 7 years ago
Recent Discussions
- 16 days ago