Here are a couple of keyword functions to get a token and set the property in the request.
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import com.kms.katalon.core.annotation.Keyword
import com.kms.katalon.core.testobject.ConditionType
import com.kms.katalon.core.testobject.RequestObject
import com.kms.katalon.core.testobject.ResponseObject
import com.kms.katalon.core.testobject.TestObjectProperty
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
@Keyword
def String getToken(){
def authResponse = WS.sendRequestAndVerify(findTestObject('Auth/AuthenticateUser'))
def slurper = new groovy.json.JsonSlurper()
def result = slurper.parseText(authResponse.getResponseBodyContent())
return result.token
}
@Keyword
def ResponseObject sendAuthorizedRequest(RequestObject restRequest, String access_token){
// Build the authentication header
def authRequest = restRequest
ArrayList<TestObjectProperty> httpHeader = new ArrayList<TestObjectProperty>()
httpHeader.add(new TestObjectProperty('Authorization', ConditionType.EQUALS, "Bearer " + access_token))
// Set the header property and pass it back out
authRequest.setHttpHeaderProperties(httpHeader)
def response = WS.sendRequestAndVerify(authRequest)
return response
}
And to use it in a test case, I call it like this:
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
def token = CustomKeywords.'tokens.TokenUtilities.getToken'()
def secureResponse = CustomKeywords.'tokens.TokenUtilities.sendAuthorizedRequest'(findTestObject('SystemUser/GetSystemUsers'), token)
WS.verifyResponseStatusCode(secureResponse, 200)
WS.verifyElementPropertyValue(secureResponse, 'data[0].registeredEmailAddress', 'samplename@samplemail.com')
This approach has worked for me so far…I hope it helps.