@apideck/portman
Version:
Port OpenAPI Spec to Postman Collection, with contract & variation tests included
257 lines • 12.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeDynamicPmVars = exports.makeJsonSafeDynamicPmVars = exports.overwriteRequestBodyFormUrlEncoded = exports.overwriteRequestBodyFormData = exports.overwriteRequestBodyJson = exports.overwriteRequestBody = void 0;
var tslib_1 = require("tslib");
var utils_1 = require("../../utils");
var overwriteRequestBody = function (dto) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
var overwriteValues = dto.overwriteValues, pmOperation = dto.pmOperation;
if (!(overwriteValues instanceof Array))
return pmOperation;
if ((_c = (_b = (_a = pmOperation.item) === null || _a === void 0 ? void 0 : _a.request) === null || _b === void 0 ? void 0 : _b.body) === null || _c === void 0 ? void 0 : _c.raw) {
(0, exports.overwriteRequestBodyJson)(dto);
return pmOperation;
}
if ((_f = (_e = (_d = pmOperation.item) === null || _d === void 0 ? void 0 : _d.request) === null || _e === void 0 ? void 0 : _e.body) === null || _f === void 0 ? void 0 : _f.formdata) {
(0, exports.overwriteRequestBodyFormData)(dto);
return pmOperation;
}
if ((_j = (_h = (_g = pmOperation.item) === null || _g === void 0 ? void 0 : _g.request) === null || _h === void 0 ? void 0 : _h.body) === null || _j === void 0 ? void 0 : _j.urlencoded) {
(0, exports.overwriteRequestBodyFormUrlEncoded)(dto);
return pmOperation;
}
return pmOperation;
};
exports.overwriteRequestBody = overwriteRequestBody;
var overwriteRequestBodyJson = function (dto) {
var _a, _b, _c;
var overwriteValues = dto.overwriteValues, pmOperation = dto.pmOperation, oaOperation = dto.oaOperation, globals = dto.globals;
if (!(overwriteValues instanceof Array))
return pmOperation;
if (!((_c = (_b = (_a = pmOperation.item) === null || _a === void 0 ? void 0 : _a.request) === null || _b === void 0 ? void 0 : _b.body) === null || _c === void 0 ? void 0 : _c.raw))
return pmOperation;
var requestBody = pmOperation.item.request.body.raw;
var requestBodySafe = (0, exports.makeJsonSafeDynamicPmVars)(requestBody);
var bodyData = JSON.parse(requestBodySafe);
overwriteValues.map(function (overwriteItem) {
if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.key) && typeof (overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value) !== 'undefined') {
var root = overwriteItem.key === '.';
var originalValue = root ? bodyData : (0, utils_1.getByPath)(bodyData, overwriteItem.key);
var generatedName = (0, utils_1.parseTpl)({
template: overwriteItem.value,
oaOperation: oaOperation,
options: {
casing: globals === null || globals === void 0 ? void 0 : globals.variableCasing
}
});
var newValue = (overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value) && (0, utils_1.hasTpl)(overwriteItem.value) ? generatedName : overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value;
if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.overwrite) === false) {
if (Array.isArray(originalValue) && Array.isArray(newValue)) {
newValue = originalValue.concat(newValue);
}
else if ((0, utils_1.isObject)(originalValue)) {
newValue = tslib_1.__assign(tslib_1.__assign({}, originalValue), newValue);
}
else {
newValue = originalValue + newValue;
}
}
if (root) {
bodyData = overwriteItem.overwrite ? newValue : tslib_1.__assign(tslib_1.__assign({}, bodyData), newValue);
}
else {
bodyData = (0, utils_1.setByPath)(bodyData, overwriteItem.key, newValue);
}
}
if (overwriteItem.key && overwriteItem.remove === true) {
bodyData = (0, utils_1.omitByPath)(bodyData, overwriteItem.key);
}
});
var bodyString = JSON.stringify(bodyData, null, 4);
var bodyStringSafe = (0, exports.decodeDynamicPmVars)(bodyString);
pmOperation.item.request.body.raw = bodyStringSafe;
return pmOperation;
};
exports.overwriteRequestBodyJson = overwriteRequestBodyJson;
var overwriteRequestBodyFormData = function (dto) {
var _a, _b, _c;
var overwriteValues = dto.overwriteValues, pmOperation = dto.pmOperation, oaOperation = dto.oaOperation, globals = dto.globals;
if (!(overwriteValues instanceof Array))
return pmOperation;
if (!((_c = (_b = (_a = pmOperation.item) === null || _a === void 0 ? void 0 : _a.request) === null || _b === void 0 ? void 0 : _b.body) === null || _c === void 0 ? void 0 : _c.formdata))
return pmOperation;
var formData = pmOperation.item.request.body.formdata;
if (formData.count() === 0)
return pmOperation;
var formMembers = [];
var formKeys = formData.map(function (_a) {
var key = _a.key;
return key;
});
var insertNewKeys = overwriteValues.filter(function (x) { return !formKeys.includes(x.key); });
formData.each(function (pmFormParam) {
var overwriteItem = overwriteValues.find(function (obj) {
return obj.key === pmFormParam.key;
});
if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value) !== undefined) {
var pmFormParamAny = pmFormParam;
var orgValue = pmFormParamAny.value || pmFormParamAny.src;
var generatedName = (0, utils_1.parseTpl)({
template: overwriteItem.value,
oaOperation: oaOperation,
options: {
casing: globals === null || globals === void 0 ? void 0 : globals.variableCasing
}
});
var newValue = (overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value) && (0, utils_1.hasTpl)(overwriteItem.value) ? generatedName : overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value;
if (overwriteItem.overwrite === false && typeof orgValue === 'string') {
newValue = orgValue + newValue;
}
if (pmFormParamAny.type === 'file') {
pmFormParamAny.src = newValue;
}
else {
pmFormParamAny.value =
newValue || typeof newValue === 'boolean' ? "".concat(newValue).toString() : '';
}
}
if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.disable) === true) {
pmFormParam.disabled = true;
}
if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.description) !== undefined && (pmFormParam === null || pmFormParam === void 0 ? void 0 : pmFormParam.description)) {
pmFormParam.description = overwriteItem.description;
}
if (!((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.remove) === true)) {
formMembers.push(pmFormParam);
}
});
insertNewKeys
.filter(function (overwriteItem) { return !(overwriteItem.insert === false); })
.filter(function (overwriteItem) { return !(overwriteItem.remove === true); })
.map(function (formMember) {
var pmFormParam = {
key: formMember.key,
value: '',
disabled: false
};
if (formMember.value)
pmFormParam.value = formMember.value;
if (formMember.disable === true)
pmFormParam.disabled = true;
if (formMember.description)
pmFormParam.description = formMember.description;
formMembers.push(pmFormParam);
});
formData.clear();
formData.assimilate(formMembers, false);
return pmOperation;
};
exports.overwriteRequestBodyFormData = overwriteRequestBodyFormData;
var overwriteRequestBodyFormUrlEncoded = function (dto) {
var _a, _b, _c;
var overwriteValues = dto.overwriteValues, pmOperation = dto.pmOperation, oaOperation = dto.oaOperation, globals = dto.globals;
if (!(overwriteValues instanceof Array))
return pmOperation;
if (!((_c = (_b = (_a = pmOperation.item) === null || _a === void 0 ? void 0 : _a.request) === null || _b === void 0 ? void 0 : _b.body) === null || _c === void 0 ? void 0 : _c.urlencoded))
return pmOperation;
var formEncoded = pmOperation.item.request.body.urlencoded;
if (formEncoded.count() === 0)
return pmOperation;
var formMembers = [];
var formKeys = formEncoded.map(function (_a) {
var key = _a.key;
return key;
});
var insertNewKeys = overwriteValues.filter(function (x) { return !formKeys.includes(x.key); });
formEncoded.each(function (pmFormParam) {
var overwriteItem = overwriteValues.find(function (obj) {
return obj.key === pmFormParam.key;
});
if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value) !== undefined && (pmFormParam === null || pmFormParam === void 0 ? void 0 : pmFormParam.value)) {
var orgValue = pmFormParam.value;
var generatedName = (0, utils_1.parseTpl)({
template: overwriteItem.value,
oaOperation: oaOperation,
options: {
casing: globals === null || globals === void 0 ? void 0 : globals.variableCasing
}
});
var newValue = (overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value) && (0, utils_1.hasTpl)(overwriteItem.value) ? generatedName : overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value;
if (overwriteItem.overwrite === false) {
newValue = orgValue + newValue;
}
pmFormParam.value = newValue || 'boolean' === typeof newValue ? "".concat(newValue).toString() : '';
}
if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.disable) === true) {
pmFormParam.disabled = true;
}
if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.description) !== undefined && (pmFormParam === null || pmFormParam === void 0 ? void 0 : pmFormParam.description)) {
pmFormParam.description = overwriteItem.description;
}
if (!((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.remove) === true)) {
formMembers.push(pmFormParam);
}
});
insertNewKeys
.filter(function (overwriteItem) { return !(overwriteItem.insert === false); })
.filter(function (overwriteItem) { return !(overwriteItem.remove === true); })
.map(function (formMember) {
var pmFormParam = {
key: formMember.key,
value: '',
disabled: false
};
if (formMember.value)
pmFormParam.value = formMember.value;
if (formMember.disable === true)
pmFormParam.disabled = true;
if (formMember.description)
pmFormParam.description = formMember.description;
formMembers.push(pmFormParam);
});
formEncoded.clear();
formEncoded.assimilate(formMembers, false);
return pmOperation;
};
exports.overwriteRequestBodyFormUrlEncoded = overwriteRequestBodyFormUrlEncoded;
var makeJsonSafeDynamicPmVars = function (jsonString) {
var find = [
': {{',
'}},',
'}}\n'
];
var replace = [
': "{{{',
'}}}",',
'}}}"\n'
];
find.forEach(function (item, index) {
var escapedFind = item.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1');
jsonString = jsonString.replace(new RegExp(escapedFind, 'g'), replace[index]);
});
return jsonString;
};
exports.makeJsonSafeDynamicPmVars = makeJsonSafeDynamicPmVars;
var decodeDynamicPmVars = function (jsonString) {
var find = [
'"{{$randomInt}}"',
'"{{$randomCreditCardMask}}"',
'"{{$randomBankAccount}}"',
'"{{{',
'}}}"'
];
var replace = [
'{{$randomInt}}',
'{{$randomCreditCardMask}}',
'{{$randomBankAccount}}',
'{{',
'}}'
];
find.forEach(function (item, index) {
var escapedFind = item.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1');
jsonString = jsonString.replace(new RegExp(escapedFind, 'g'), replace[index]);
});
return jsonString;
};
exports.decodeDynamicPmVars = decodeDynamicPmVars;
//# sourceMappingURL=overwriteRequestBody.js.map