Ask a Question

Need help in property transfer for Rest service

SOLVED
Apoorva6
Frequent Contributor

Need help in property transfer for Rest service

Hi All,

 

I have below response from which account1Number must be transferred to Next request body accountNumber. I used property transfer path giving $.invoiceNodeDetails[:0],account1Number  to $.userDetails[:0],accountNumber

 

Source: Request1 --Property as Response1

Target: Request2--property as Request2

 

I am getting error as error parsing, unexpected CDATA.

 

Response1

{
   "transactionDetails":    {
      "startRow": "1",
      "endRow": "400",
      "totalRow": "1",
      "timeZone": "EST"
   },
   "invoiceNodeDetails":    {
      "nodeLabel": "mx",
      "hierarchyPointId": "16760",
      "nodeStartDate": "20170419 01:40:35",
      "sequenceNumber": "982475",
      "updateDate": "20170419 01:40:35",
      "nodeCreateDate": "20170420 07:47:13",
      "account1Number": "8290000000682"
   },
   "orderDetails": {"serviceOrderNumber": "MX-EUAM-31734"}
}


Request2

{
      "customerDefinedGroupNodeDetails": {
         "parentInvoiceHierarchyPointId": "155346355",
         "startDate": "20170419 01:40:35",
         "customerDefinedGroupId": "000011",
         "customerAdminId": "",
         "label": "&cadmxprs&",
         "legacyIdTypeCode": "G"
      },
      "userDetails": {
         "userId": "DK246Q",
         "accountNumber": "8290000000682",
         "accountToNumber": "",
         "customerName": "WalGreen",
         "activity": "&Description provided by UI&"
      }
   }

10 REPLIES 10
PaulMS
Super Contributor

Did you change the path language to JSON?

 

JSONPath expression could be

$.invoiceNodeDetails.account1Number

or

$..invoiceNodeDetails[0].account1Number

Apoorva6
Frequent Contributor

Hi Paul, Thanks for the reply. I am using 5.0.0 open source and i dont see language path in property transfer. Do i need to click anywhere to appear?
PaulMS
Super Contributor

This option might have been included in version 5.2 with JSONPath-based assertions

https://www.soapui.org/downloads/latest-release/release-history.html

 

The language is visible next to the source and target in the image here

https://www.soapui.org/functional-testing/properties/transferring-properties.html

nmrao
Community Hero

@Apoorva6,

Alternatively, the Script Assertion (now Property Transfer step becomes obsolete) can be used for the first step.

 

assert context.response, 'Response is empty or null'
def json = new groovy.json.JsonSlurper().parseText(context.response)
context.testCase.setPropertyValue('ACCOUNT_NO', json.invoiceNodeDetails.account1Number.toString())

In the second request use Property Transfer ${#TestCase#ACCOUNT_NO}

 

i.e., "accountNumber": "${#TestCase#ACCOUNT_NO}",



Regards,
Rao.
Apoorva6
Frequent Contributor

Thank you Paul and Rao. Will use the script and see, but also,

 

I migrated to 5.3.0 version and see now JasonPath in property transfer, However I see transferred values are coming with square braces when transferred. Any idea why ?

 

"accountNumber": ["8290000000717"]

 

I am using $..invoiceNodeDetails[:1].account1Number at Source and $..userDetails[:1].accountNumber at target with both JasonPath

It is not about square brackets. That is a list of accountNumbers.


Regards,
Rao.
Apoorva6
Frequent Contributor

Hi Rao, ty. But is there a way to ensure not to get braces in request? We are not handling the request after property transfer due to braces.

Well, let me admit that I am not good at jsonpath. If you are ok, use provided script assertion which is tested one.


Regards,
Rao.

And more over one less test step in the test case if you go with Script assertion.


Regards,
Rao.
cancel
Showing results for 
Search instead for 
Did you mean: