I have been trying to add a XML block in to XML payload, it works fine if I declare a variable with a XML block under the scenario before reading the XML file. However it fails/adds special characters replacing "<",">" if we fetch the address from Javascript function/another scenario in a different feature file.
Below works fine:
Scenario: Add address XML block
* def address =
"""
<Address>
<StreetNo>2</StreetNo>
<Street Type="Avenue">Second</Street>
<City>ADELAIDE</City>
<State Name="SA"/>
<Postcode>5000</Postcode>
<Country ISO3166="AU"/>
</Address>
"""
* def b2bRequestBody =
read('classpath:supportingFiles/b2bApplication_Post/CAL_11OwnsAndPurchase.xml')
This approach has problem:
Javascript function to return XML block:
function()
{
return {
fetchStdAddress1: function()
{
var Address =
`<Address>
<StreetNo>2</StreetNo>
<Street Type="Avenue">Second</Street>
<City>ADELAIDE</City>
<State Name="SA"/>
<Postcode>5000</Postcode>
<Country ISO3166="AU"/>
</Address>`;
return Address;
},
}
}
Scenario to assign XML to a variable and reading XML file:
Scenario: Submit application from B2BApplication API
* def functions = call read('classpath:reusableFeatures/utils/customiseB2BRequests.js')
* def address = functions.fetchStdAddress1()
* print address
* def b2bRequestBody =
read('classpath:supportingFiles/b2bApplication_Post/CAL_11OwnsAndPurchase.xml')
* print b2bRequestBody
Excerpt of XML payload:
<AddressWrapper>
<Identifier UniqueID="1655877356200" Type="BrokerAssigned"/>
#(address)
</AddressWrapper>
Result: It is replacing "<" and ">" like below,
<Address>
<StreetNo>2</StreetNo>
<Street Type="Avenue">Second</Street>
<City>ADELAIDE</City>
<State Name="SA"/>
<Postcode>5000</Postcode>
<Country ISO3166="AU"/>
</Address>