Using context parameter in Request Authorization
Hi,
I am currently building a Test Case in which I use scripts to parse the response body of a few REST API Call Test Steps.
1. I create a user: POST /user/signup.
2. I log in with the created user: POST /user/login ( response body contains a JWT token that I want to use as Authorization in the following API Calls )
3. I parse the token with the following script:
import groovy.json.JsonSlurper responseContent = testRunner.testCase.getTestStepByName("POST User Login").getPropertyValue("response") jsonParser = new JsonSlurper().parseText(responseContent) context.JWTToken = jsonParser.token log.info ("Token in context: " + context.JWTToken)
The token correctly logs in the log.info (line 5 of the script), so it is valid and stocked as a context variable.
4. I want to create a product: POST /products . This API Call needs a valid JWT to suceed, so I want to pass my stocked context.JWTToken as the value of the the Access Token.
It doesn't work and I would gladly like to get some help on how to make it work.
I also tried: ${context.JWTToken} ; context.JWTToken ; JWTToken ; ${=JWTToken} ; ${JWTToken}
Thank you
This case is now resolved. I created a Properties Test Step named "StepProperties" as the first step.
I now stock my variables in the step properties thanks to the following script:
import groovy.json.JsonSlurper responseContent = testRunner.testCase.getTestStepByName("POST User Login").getPropertyValue("response") jsonParser = new JsonSlurper().parseText(responseContent) testRunner.testCase.getTestStepByName("StepProperties").setPropertyValue("JWT",jsonParser.token)
Then I pass as a header parameter the following properties In the following calls:
At the end of the test case I run a TearDown Script that erases every properties created in StepProperties during that run:
data = context.testCase.getTestStepByName("StepProperties"); String[] propToRemove = new String[data.getPropertyCount()]; propToRemove = data.getPropertyNames(); if(propToRemove.size()==0){ log.info("No properties to remove.") }else{ log.info("Removing properties...") for ( int i = 0 ; i < propToRemove.size(); i++ ){ data.removeProperty( propToRemove[i] ); } log.info("Properties removed.") }
This documentation helped me understand how to access different hierarchy of properties in SoapUI: https://groovyinsoapui.wordpress.com/tag/teststep-level-property-access/
Bye !