More support for return PDUs params and tlvs and more tests

This commit is contained in:
2015-05-01 14:28:30 +02:00
parent 04972855ed
commit 3c9d04aacc
5 changed files with 91 additions and 18 deletions
+28 -11
View File
@@ -323,10 +323,11 @@ function objToPdu(obj, callback) {
*
* @param obj or buf pdu
* @param str status - see list at defs.errors - defaults to 'ESME_ROK' - no error (OPTIONAL)
* @param obj params (OPTIONAL)
* @param obj tlvs (OPTIONAL)
* @param func callback(err, pduBuffer) (OPTIONAL)
*/
function pduReturn(pdu, status, tlvs, callback) {
function pduReturn(pdu, status, params, tlvs, callback) {
var err = null,
retPdu = {},
param;
@@ -340,23 +341,28 @@ function pduReturn(pdu, status, tlvs, callback) {
return;
}
pduReturn(pduObj, status, callback);
pduReturn(pduObj, status, params, tlvs, callback);
});
return;
}
log.silly('larvitsmpp: lib/utils.js: pduReturn() - ran');
// If status is a function, it is the callback.
// Default to OK status and sett callback correctly
if (typeof status === 'function') {
callback = status;
status = 'ESME_ROK';
if (typeof tlvs === 'function') {
callback = tlvs;
tlvs = undefined;
}
if (typeof tlvs === 'function') {
callback = tlvs;
if (typeof params === 'function') {
callback = params;
params = {};
tlvs = undefined;
}
if (typeof status === 'function') {
callback = status;
status = 'ESME_ROK';
params = {};
tlvs = undefined;
}
@@ -364,6 +370,13 @@ function pduReturn(pdu, status, tlvs, callback) {
status = 'ESME_ROK';
}
if (callback === undefined) {
callback = function() {};
}
if (params === undefined) {
params = {};
}
if (pdu === undefined || pdu.cmdName === undefined || pdu.seqNr === undefined) {
err = new Error('larvitsmpp: lib/utils.js: pduReturn() - Invalid call PDU, cannot create response PDU');
@@ -386,12 +399,16 @@ function pduReturn(pdu, status, tlvs, callback) {
retPdu.cmdName = pdu.cmdName + '_resp';
retPdu.cmdStatus = status;
retPdu.seqNr = pdu.seqNr;
retPdu.params = {};
retPdu.params = params;
retPdu.tlvs = tlvs;
// Populate parameters that should exist in the response
for (param in defs.cmds[pdu.cmdName + '_resp'].params) {
retPdu.params[param] = pdu.params[param];
// Do not override the manually supplied parameters
if (retPdu.params[param] === undefined) {
retPdu.params[param] = pdu.params[param];
}
}
objToPdu(retPdu, function(err, retPdu) {