From 294e4ca849ff23f2bfbc4d0b4cd7b38a178ff92b Mon Sep 17 00:00:00 2001 From: lillem4n Date: Sun, 3 May 2015 13:28:52 +0200 Subject: [PATCH] Fixed issue with number values --- lib/defs.js | 34 +++++++++++++++++++++++++++++----- test/03_pdu.js | 25 +++++++++++++++++++++++-- 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/lib/defs.js b/lib/defs.js index 84c0ca2..6adca55 100644 --- a/lib/defs.js +++ b/lib/defs.js @@ -175,12 +175,18 @@ types = { }, write: function(value, buffer, offset) { buffer.writeUInt8(value.length, offset ++); - if (typeof value === 'string' || typeof value === 'number') { + if (typeof value === 'number') { + value = value.toString(); + } + if (typeof value === 'string') { value = new Buffer(value, 'ascii'); } value.copy(buffer, offset); }, size: function(value) { + if (typeof value === 'number') { + value = value.toString(); + } return value.length + 1; }, default: '' @@ -197,7 +203,10 @@ types = { return buffer.toString('ascii', offset, offset + length); }, write: function(value, buffer, offset) { - if (typeof value === 'string' || typeof value === 'number') { + if (typeof value === 'number') { + value = value.toString(); + } + if (typeof value === 'string') { value = new Buffer(value, 'ascii'); } value.copy(buffer, offset); @@ -217,7 +226,10 @@ types = { return buffer.slice(offset, offset + length); }, write: function(value, buffer, offset) { - if (typeof value === 'string' || typeof value === 'number') { + if (typeof value === 'number') { + value = value.toString(); + } + if (typeof value === 'string') { value = new Buffer(value, 'ascii'); } value.copy(buffer, offset); @@ -337,12 +349,18 @@ types.tlv = { return buffer.toString('ascii', offset, offset + length); }, write: function(value, buffer, offset) { - if (typeof value === 'string' || typeof value === 'number') { + if (typeof value === 'number') { + value = value.toString(); + } + if (typeof value === 'string') { value = new Buffer(value, 'ascii'); } value.copy(buffer, offset); }, size: function(value) { + if (typeof value === 'number') { + value = value.toString(); + } return value.length; }, default: '' @@ -352,12 +370,18 @@ types.tlv = { return buffer.slice(offset, offset + length); }, write: function(value, buffer, offset) { - if (typeof value === 'string' || typeof value === 'number') { + if (typeof value === 'number') { + value = value.toString(); + } + if (typeof value === 'string') { value = new Buffer(value, 'ascii'); } value.copy(buffer, offset); }, size: function(value) { + if (typeof value === 'number') { + value = value.toString(); + } return value.length; }, default: null diff --git a/test/03_pdu.js b/test/03_pdu.js index 3e737a2..349e362 100644 --- a/test/03_pdu.js +++ b/test/03_pdu.js @@ -141,6 +141,29 @@ describe('PDU convertion', function() { done(); }); }); + + it('should encode and decode integer cstring params correctly', function(done) { + var pduObj = { + 'cmdName': 'submit_sm_resp', + 'cmdStatus': 'ESME_ROK', + 'seqNr': 2, + 'params': { + 'message_id': 450 + } + }; + + larvitsmpp.utils.objToPdu(pduObj, function(err, pduBuf) { + assert( ! err, 'Error should be negative'); + + larvitsmpp.utils.pduToObj(pduBuf, function(err, retPduObj) { + assert( ! err, 'Error should be negative'); + + assert(retPduObj.params.message_id === '450', 'message_id param should be 450, but as string'); + + done(); + }); + }); + }); }); describe('TLVs', function() { @@ -204,7 +227,6 @@ describe('PDU convertion', function() { }); describe('Return PDUs', function() { - it('should create a basic and valid return PDU', function(done) { var pduObj = { 'cmdName': 'deliver_sm', @@ -286,7 +308,6 @@ describe('PDU convertion', function() { }); }); }); - }); }); \ No newline at end of file