cancel
Showing results for 
Search instead for 
Did you mean: 

Using context parameter in Request Authorization

SOLVED
7V
Occasional Contributor

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.

SoapUI-5.4.0_2018-05-23_16-08-25.png

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

 

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
7V
Occasional Contributor

I found a solution

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:

SoapUI-5.4.0_2018-05-24_10-10-45.png

 

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 !

View solution in original post

2 REPLIES 2
7V
Occasional Contributor

Re: Using context parameter in Request Authorization

Maybe I could use Test "Properties" too and stock the variables in the Properties so I am open to advices on this subject.

 

Thanks

Highlighted
7V
Occasional Contributor

I found a solution

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:

SoapUI-5.4.0_2018-05-24_10-10-45.png

 

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 !

View solution in original post