Forum Discussion

7V's avatar
7V
Occasional Contributor
6 years ago
Solved

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 !

2 Replies

  • 7V's avatar
    7V
    Occasional Contributor

    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 !

  • 7V's avatar
    7V
    Occasional Contributor

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

     

    Thanks