Adding xml version data to body if not present

- When content is text/xml and the provided body or example does not contain the version data it will be added at the beginning.
This commit is contained in:
Erik Mendoza
2022-07-18 21:00:41 -05:00
parent 3cce44aca9
commit b402d96edf
3 changed files with 26 additions and 7 deletions

View File

@@ -1932,7 +1932,18 @@ module.exports = {
else { else {
bodyData = this.convertToPmBodyData(contentObj[bodyType], requestType, bodyType, bodyData = this.convertToPmBodyData(contentObj[bodyType], requestType, bodyType,
PARAMETER_SOURCE.REQUEST, options.indentCharacter, components, options, schemaCache); PARAMETER_SOURCE.REQUEST, options.indentCharacter, components, options, schemaCache);
let getXmlVersionContent = (bodyContent) => {
const regExp = new RegExp('([<\\?xml]+[\\s{1,}]+[version="\\d.\\d"]+[\\sencoding="]+.{1,15}"\\?>)');
let xmlBody = bodyContent;
if (!bodyContent.match(regExp)) {
const versionContent = '<?xml version="1.0" encoding="utf-8"?>';
xmlBody = versionContent + xmlBody;
}
return xmlBody;
};
bodyData = bodyType === TEXT_XML ?
getXmlVersionContent(bodyData) :
bodyData;
updateOptions = { updateOptions = {
mode: rDataMode, mode: rDataMode,
raw: bodyType !== APP_JSON ? raw: bodyType !== APP_JSON ?

View File

@@ -1152,9 +1152,13 @@ describe('CONVERT FUNCTION TESTS ', function() {
expect(conversionResult.result).to.equal(true); expect(conversionResult.result).to.equal(true);
expect(conversionResult.output[0].data.item[0].request.body.raw) expect(conversionResult.output[0].data.item[0].request.body.raw)
.to.equal( .to.equal(
'<?xml version="1.0" encoding="utf-8"?>' +
'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope">' + '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope">' +
' <soap:Body> <NumberToWords xmlns="http://www.dataaccess.com/webservicesserver">' + ' <soap:Body> <NumberToWords ' +
' <ubiNum>500</ubiNum> </NumberToWords> </soap:Body> </soap:Envelope>'); 'xmlns="http://www.dataaccess.com/webservicesserver"> ' +
'<ubiNum>500</ubiNum> </NumberToWords> </soap:Body> ' +
'</soap:Envelope>'
);
done(); done();
}); });
}); });

View File

@@ -1664,7 +1664,7 @@ describe('SCHEMA UTILITY FUNCTION TESTS ', function () {
examples: { examples: {
xml: { xml: {
summary: 'A list containing two items', summary: 'A list containing two items',
value: 'text/plain description' value: '<AnXMLObject>test</AnXMLObject>'
} }
} }
} }
@@ -1675,7 +1675,9 @@ describe('SCHEMA UTILITY FUNCTION TESTS ', function () {
exampleParametersResolution: 'example' exampleParametersResolution: 'example'
}); });
resultBody = (result.body.raw); resultBody = (result.body.raw);
expect(resultBody).to.equal('text/plain description'); expect(resultBody).to.equal(
'<?xml version="1.0" encoding="utf-8"?><AnXMLObject>test</AnXMLObject>'
);
expect(result.contentHeader).to.deep.include( expect(result.contentHeader).to.deep.include(
{ key: 'Content-Type', value: 'text/xml' }); { key: 'Content-Type', value: 'text/xml' });
expect(result.body.options.raw.language).to.equal('xml'); expect(result.body.options.raw.language).to.equal('xml');
@@ -1839,7 +1841,7 @@ describe('SCHEMA UTILITY FUNCTION TESTS ', function () {
examples: { examples: {
xml: { xml: {
summary: 'A list containing two items', summary: 'A list containing two items',
value: 'text/plain description' value: '<AnXMLObject>test</AnXMLObject>'
} }
} }
} }
@@ -1850,7 +1852,9 @@ describe('SCHEMA UTILITY FUNCTION TESTS ', function () {
requestParametersResolution: 'example' requestParametersResolution: 'example'
}); });
resultBody = (result.body.raw); resultBody = (result.body.raw);
expect(resultBody).to.equal('text/plain description'); expect(resultBody).to.equal(
'<?xml version="1.0" encoding="utf-8"?><AnXMLObject>test</AnXMLObject>'
);
expect(result.contentHeader).to.deep.include( expect(result.contentHeader).to.deep.include(
{ key: 'Content-Type', value: 'text/xml' }); { key: 'Content-Type', value: 'text/xml' });
expect(result.body.options.raw.language).to.equal('xml'); expect(result.body.options.raw.language).to.equal('xml');