How do I extract the new resource created via a REST POST for use in a subsequent request?
The API I'm testing is RESTful so I can create a resource such as an account number by sending a POST to AndysAPI/newaccount
The code there generates an account number for me based on the details I've provided, but being RESTful does nothing but send back a success message in the raw response and the newly created URI ie AndysAPI/newaccount/1234.
That great but there's no message body. Therefore I can't update this resource by referencing it in a subsequent test using a GET DATA.
Any ideas how to get round this? I want to be able to extract 1234 from the raw response and use it in a subsequent request to update the account. At the moment I can only put the entire raw response in the next request because I can't specify the part I want.
I have a few snippets that you might be able to use for parsing out the data you want. I'm going to have to fudge some of it since I do not know what your raw request looks like.
testStep = context.testCase.testSteps["Test Step Name"]; String request = new String(testStep.testRequest.response.rawResponseData);
// Set up a split-by-newline array for parsing line by line
String [] splitData = request.split("\n");
for (String eachSplit : splitData)
{
if (eachSplit.contains("AndysAPI/newaccount")
{
// Building this off of the example "AndysAPI/newaccount/1234"
// This creates an array with from the string, using "/" as the delimiter
def accountNumber = eachSplit.tokenize("/")[2];
log.info(accountNumber);
}
}That should be enough to get you started.