In my first look at Groovy script for SoapUI yesterday i needed to access a restful service and pull back some json content which looks like this:
access_token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3Mi8m6BYc, expires_in:35999, refresh_token:6952f91f508c4f9f9
here is the script code for my project:
// Grab and imports
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7')
@Grab(group='oauth.signpost', module='signpost-core', version='1.2.1.2')
@Grab(group='oauth.signpost', module='signpost-commonshttp4', version='1.2.1.2')
import groovyx.net.http.RESTClient
import static groovyx.net.http.ContentType.*
import groovyx.net.http.*
import static groovyx.net.http.Method.*
def client = new RESTClient('https://identity.myService.net/idsrv/issue/oauth2/token', ContentType.URLENC )
client.defaultRequestHeaders.'Authorization' = "Basic ENCRYPTED_CONTENT_HERE"
client.setContentType('application/json') // important for accessing the json response
// Perform Http Post with url encoded content
def response = client.post(body: ["grant_type":"password", "username":"myusername", "password":"mypassword","scope":"http://myservice.net"])
// access response examples
println response.getStatus()
println response.getContentType()
if (response.getStatus() != 200)
{
println "Unsuccessful call!!"
}
else
{
def r = response.getData().access_token // this accesses the json access_token
// set my global property
//com.eviware.soapui.SoapUI.globalProperties.setPropertyValue( "Authorization", "Bearer " + r )
}