From f266c77ce46746f49b0bfe7e3bc2be0af843c913 Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 11:08:04 +0200 Subject: [PATCH 01/22] script for inserting a message on several queues --- utils/provision.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 utils/provision.js diff --git a/utils/provision.js b/utils/provision.js new file mode 100755 index 0000000..8b47716 --- /dev/null +++ b/utils/provision.js @@ -0,0 +1,50 @@ +#!/usr/bin/env node + +'use strict'; + +var program = require('commander'), + request = require('request'), + util = require('util'), + i, + url, + trans; + +program + .version('0.0.1') + .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') + .option('-P, --port [number]', 'port, 5001 by default', 5001) + .option('-M, --message [text]', 'message','¡hola!\n') + .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) + .option('-C, --callback [url]', 'callback URL') + .option('-E, --expiration [url]', 'expiration delay') + .parse(process.argv); +url = util.format('http://%s:%d/trans', program.host, program.port); +trans = { + 'payload': program.message, + 'priority': 'H', + 'queue': []}; +if(program.expiration) { + trans.expirationDelay = program.expiration; +} +for(i = 0; i < program.queues.length; i++) { + trans.queue.push({id: program.queues[i]}); +} +trans.queue.concat(program.queues); +console.log('url\n', url); +console.log('trans\n', trans); +request.post({url : url, json: trans}, function(err, res, body) { + if(err) { + console.log('error\n', err); + } + else { + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body\n', body); + } +}); +function range(val) { + return val.split('..').map(Number); +} +function list(val) { + return val.split(','); +} \ No newline at end of file From f5fd1e3ef30e4316c2fb8f6f09d1900fc9fecf95 Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 11:15:05 +0200 Subject: [PATCH 02/22] Honor callback argument --- utils/provision.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/utils/provision.js b/utils/provision.js index 8b47716..dc22a1e 100755 --- a/utils/provision.js +++ b/utils/provision.js @@ -26,6 +26,9 @@ trans = { if(program.expiration) { trans.expirationDelay = program.expiration; } +if(program.callback) { + trans.callback = program.callback; +} for(i = 0; i < program.queues.length; i++) { trans.queue.push({id: program.queues[i]}); } From c99c9af21e784d3a53c263f0789bf5283eb80550 Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 13:46:27 +0200 Subject: [PATCH 03/22] Some fix --- utils/provision.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/utils/provision.js b/utils/provision.js index dc22a1e..97db05e 100755 --- a/utils/provision.js +++ b/utils/provision.js @@ -12,7 +12,7 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 5001) + .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) .option('-M, --message [text]', 'message','¡hola!\n') .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) .option('-C, --callback [url]', 'callback URL') @@ -32,7 +32,6 @@ if(program.callback) { for(i = 0; i < program.queues.length; i++) { trans.queue.push({id: program.queues[i]}); } -trans.queue.concat(program.queues); console.log('url\n', url); console.log('trans\n', trans); request.post({url : url, json: trans}, function(err, res, body) { From 4d1d5cc99dbbe2ed162e608c043685d2bc2962bd Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 13:47:20 +0200 Subject: [PATCH 04/22] For extracting messages --- utils/pop.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 utils/pop.js diff --git a/utils/pop.js b/utils/pop.js new file mode 100755 index 0000000..4e362f6 --- /dev/null +++ b/utils/pop.js @@ -0,0 +1,58 @@ +#!/usr/bin/env node + +'use strict'; + +var program = require('commander'), + http = require('http'), + qs = require('querystring'), + util = require('util'), + action, + i, + path, + query; + +program + .version('0.0.1') + .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') + .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) + .option('-Q, --queue [id]', 'queue', "Q1") + .option('-R, --reliable', 'reliable extraction', false) + .option('-S, --subscribe', 'subscribe', false) + .option('-T, --timeout [secs]', 'timeout') + .option('-A, --timeoutACK [secs', 'ACK timeout') + .parse(process.argv); +action = program.subscribe ? 'subscribe' : 'pop'; +if (program.reliable) { + action += 'rel'; +} +path = util.format('/queue/%s/%s', program.queue, action); +if (program.timeout) { + query = { timeout: program.timeout} +} +if (program.timeoutACK) { + query = query || {}; + query.timeoutACK = program.timeoutACK; +} +if(query){ + path += '?'+qs.stringify(query); +} +console.log('path\n', path); +http.request({method: 'POST', host: program.host, port: program.port, path: path}, function (res) { + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body'); + res.setEncoding('utf8'); + res.on('data', function(data) { + console.log(data); + }); + res.on('err', function(err) { + console.err('error\n', err); + }); +}).end(); + +function range(val) { + return val.split('..').map(Number); +} +function list(val) { + return val.split(','); +} \ No newline at end of file From dc671a2f68788c7fc339dedfc8f47924c950557d Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 13:51:30 +0200 Subject: [PATCH 05/22] EOL before EOF --- utils/pop.js | 2 +- utils/provision.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/pop.js b/utils/pop.js index 4e362f6..767dbb6 100755 --- a/utils/pop.js +++ b/utils/pop.js @@ -55,4 +55,4 @@ function range(val) { } function list(val) { return val.split(','); -} \ No newline at end of file +} diff --git a/utils/provision.js b/utils/provision.js index 97db05e..c26f445 100755 --- a/utils/provision.js +++ b/utils/provision.js @@ -49,4 +49,4 @@ function range(val) { } function list(val) { return val.split(','); -} \ No newline at end of file +} From 0cc0775b38eb719ff9e8d0f22383f2633fb39e95 Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 14:13:06 +0200 Subject: [PATCH 06/22] Add HTTPS support --- utils/createSecure.js | 52 +++++++++++++++++++++++++++++++++++++++++++ utils/provision.js | 3 ++- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100755 utils/createSecure.js diff --git a/utils/createSecure.js b/utils/createSecure.js new file mode 100755 index 0000000..c26f445 --- /dev/null +++ b/utils/createSecure.js @@ -0,0 +1,52 @@ +#!/usr/bin/env node + +'use strict'; + +var program = require('commander'), + request = require('request'), + util = require('util'), + i, + url, + trans; + +program + .version('0.0.1') + .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') + .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) + .option('-M, --message [text]', 'message','¡hola!\n') + .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) + .option('-C, --callback [url]', 'callback URL') + .option('-E, --expiration [url]', 'expiration delay') + .parse(process.argv); +url = util.format('http://%s:%d/trans', program.host, program.port); +trans = { + 'payload': program.message, + 'priority': 'H', + 'queue': []}; +if(program.expiration) { + trans.expirationDelay = program.expiration; +} +if(program.callback) { + trans.callback = program.callback; +} +for(i = 0; i < program.queues.length; i++) { + trans.queue.push({id: program.queues[i]}); +} +console.log('url\n', url); +console.log('trans\n', trans); +request.post({url : url, json: trans}, function(err, res, body) { + if(err) { + console.log('error\n', err); + } + else { + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body\n', body); + } +}); +function range(val) { + return val.split('..').map(Number); +} +function list(val) { + return val.split(','); +} diff --git a/utils/provision.js b/utils/provision.js index c26f445..19070f4 100755 --- a/utils/provision.js +++ b/utils/provision.js @@ -17,8 +17,9 @@ program .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) .option('-C, --callback [url]', 'callback URL') .option('-E, --expiration [url]', 'expiration delay') + .option('-X, --secure', 'use HTTPS', false) .parse(process.argv); -url = util.format('http://%s:%d/trans', program.host, program.port); +url = util.format('%s://%s:%d/trans', program.secure?'https':'http', program.host, program.port); trans = { 'payload': program.message, 'priority': 'H', From f08d4b97e43ae90886da3515e86b964895d97347 Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 14:13:42 +0200 Subject: [PATCH 07/22] Add creation of secure queues --- utils/createSecure.js | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/utils/createSecure.js b/utils/createSecure.js index c26f445..d47273a 100755 --- a/utils/createSecure.js +++ b/utils/createSecure.js @@ -7,34 +7,26 @@ var program = require('commander'), util = require('util'), i, url, - trans; + data; program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) - .option('-M, --message [text]', 'message','¡hola!\n') - .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) - .option('-C, --callback [url]', 'callback URL') - .option('-E, --expiration [url]', 'expiration delay') + .option('-P, --port [number]', 'port, 5001 by default', 5002, parseInt) + .option('-Q, --queue [id]', 'queue', "Q1") + .option('-U, --user [id]', 'username','popbox') + .option('-X, --password [passwd]', 'password', 'itscool') .parse(process.argv); -url = util.format('http://%s:%d/trans', program.host, program.port); -trans = { - 'payload': program.message, - 'priority': 'H', - 'queue': []}; -if(program.expiration) { - trans.expirationDelay = program.expiration; -} -if(program.callback) { - trans.callback = program.callback; -} -for(i = 0; i < program.queues.length; i++) { - trans.queue.push({id: program.queues[i]}); -} +url = util.format('https://%s:%d/queue', program.host, program.port); +data = { + queue: program.queue, + user: program.user, + password: program.password +}; + console.log('url\n', url); -console.log('trans\n', trans); -request.post({url : url, json: trans}, function(err, res, body) { +console.log('data\n', data); +request.post({url : url, json: data}, function(err, res, body) { if(err) { console.log('error\n', err); } From 35d231273c5b118c852d51576ee559a4d9aea0e8 Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 16:01:40 +0200 Subject: [PATCH 08/22] Put user:password together --- utils/createSecure.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/utils/createSecure.js b/utils/createSecure.js index d47273a..1c763af 100755 --- a/utils/createSecure.js +++ b/utils/createSecure.js @@ -14,16 +14,14 @@ program .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') .option('-P, --port [number]', 'port, 5001 by default', 5002, parseInt) .option('-Q, --queue [id]', 'queue', "Q1") - .option('-U, --user [id]', 'username','popbox') - .option('-X, --password [passwd]', 'password', 'itscool') + .option('-U, --user [id:passwd]', 'username','popbox:itscool') .parse(process.argv); url = util.format('https://%s:%d/queue', program.host, program.port); data = { queue: program.queue, - user: program.user, - password: program.password + user: program.user.split(":")[0], + password: program.user.split(":")[1] }; - console.log('url\n', url); console.log('data\n', data); request.post({url : url, json: data}, function(err, res, body) { From 7e2604642872f8080d1cd130d7781b30fc9180f4 Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 16:02:07 +0200 Subject: [PATCH 09/22] Add secure pop --- utils/pop.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/utils/pop.js b/utils/pop.js index 767dbb6..292fead 100755 --- a/utils/pop.js +++ b/utils/pop.js @@ -4,10 +4,13 @@ var program = require('commander'), http = require('http'), + https = require('https'), qs = require('querystring'), util = require('util'), action, i, + options, + protocol, path, query; @@ -20,8 +23,11 @@ program .option('-S, --subscribe', 'subscribe', false) .option('-T, --timeout [secs]', 'timeout') .option('-A, --timeoutACK [secs', 'ACK timeout') + .option('-U, --user [id:passwd]', 'username','popbox:itscool') + .option('-X, --secure', 'use HTTPS', false) .parse(process.argv); action = program.subscribe ? 'subscribe' : 'pop'; +protocol = http; if (program.reliable) { action += 'rel'; } @@ -37,7 +43,12 @@ if(query){ path += '?'+qs.stringify(query); } console.log('path\n', path); -http.request({method: 'POST', host: program.host, port: program.port, path: path}, function (res) { +options = {method: 'POST', host: program.host, port: program.port, path: path}; +if(program.secure) { + protocol = https; + options.auth = program.user; +} +protocol.request(options, function (res) { console.log('statusCode\n', res.statusCode); console.log('headers\n', res.headers); console.log('body'); From d350a5b4f71358693508d0b59eb41e315c3c7e03 Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 17:29:43 +0200 Subject: [PATCH 10/22] Add group creation script --- utils/createGroup.js | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 utils/createGroup.js diff --git a/utils/createGroup.js b/utils/createGroup.js new file mode 100755 index 0000000..61ab161 --- /dev/null +++ b/utils/createGroup.js @@ -0,0 +1,41 @@ +#!/usr/bin/env node + +'use strict'; + +var program = require('commander'), + request = require('request'), + util = require('util'), + i, + url, + trans; + +program + .version('0.0.1') + .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') + .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) + .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) + .option('-G, --group [id]', 'group to be created', ["G1"]) + .option('-X, --secure', 'use HTTPS', false) + .parse(process.argv); +url = util.format('%s://%s:%d/group', program.secure?'https':'http', program.host, program.port); +trans = { + 'name': program.group, + 'queues': program.queues}; +console.log('url\n', url); +console.log('data\n', trans); +request.post({url : url, json: trans}, function(err, res, body) { + if(err) { + console.log('error\n', err); + } + else { + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body\n', body); + } +}); +function range(val) { + return val.split('..').map(Number); +} +function list(val) { + return val.split(','); +} From 3ad7f1ad263e6f6fe853f715f2059b9da86f9731 Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 17:31:25 +0200 Subject: [PATCH 11/22] Add groups to provision --- utils/provision.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/utils/provision.js b/utils/provision.js index 19070f4..a16184b 100755 --- a/utils/provision.js +++ b/utils/provision.js @@ -15,6 +15,7 @@ program .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) .option('-M, --message [text]', 'message','¡hola!\n') .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) + .option('-G, --groups [list]', 'list of groups separated by comma', list, []) .option('-C, --callback [url]', 'callback URL') .option('-E, --expiration [url]', 'expiration delay') .option('-X, --secure', 'use HTTPS', false) @@ -27,6 +28,9 @@ trans = { if(program.expiration) { trans.expirationDelay = program.expiration; } +if(program.groups) { + trans.groups = program.groups; +} if(program.callback) { trans.callback = program.callback; } From 861087a28b9b0808e819e28b39d880d09baba47b Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 17:40:14 +0200 Subject: [PATCH 12/22] Better name for 'group' script --- utils/{createGroup.js => group.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename utils/{createGroup.js => group.js} (100%) diff --git a/utils/createGroup.js b/utils/group.js similarity index 100% rename from utils/createGroup.js rename to utils/group.js From c484fa8d845f3197ecdb21149a39c4937bdcf956 Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 17:57:52 +0200 Subject: [PATCH 13/22] Add support for transaction info --- utils/trans_info.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 utils/trans_info.js diff --git a/utils/trans_info.js b/utils/trans_info.js new file mode 100755 index 0000000..5a21e54 --- /dev/null +++ b/utils/trans_info.js @@ -0,0 +1,42 @@ +#!/usr/bin/env node + +'use strict'; + +var program = require('commander'), + request = require('request'), + util = require('util'), + i, + url, + trans; + +program + .version('0.0.1') + .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') + .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) + .option('-T, --trans [id]', 'transaction') + .option('-X, --secure', 'use HTTPS', false) + .parse(process.argv); +url = util.format('%s://%s:%d/trans/%s', program.secure ? 'https' : 'http', program.host, program.port, program.trans); +req_aux(url, function () { + req_aux(url + '/state', function(){}); +}); +function req_aux(url, done) { + console.log('url\n', url); + request.get({url: url, headers: {'Accept': 'application/json'}}, function (err, res, body) { + if (err) { + console.log('error\n', err); + } + else { + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body\n', body); + } + done(err); + }); +} +function range(val) { + return val.split('..').map(Number); +} +function list(val) { + return val.split(','); +} From c8bee1c9bfe759e2ef09df2d54b68fe80d848cac Mon Sep 17 00:00:00 2001 From: Carlos Romero Date: Thu, 30 May 2013 18:02:02 +0200 Subject: [PATCH 14/22] Do not send group attribute if it is empty --- utils/provision.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/provision.js b/utils/provision.js index a16184b..4f6b84c 100755 --- a/utils/provision.js +++ b/utils/provision.js @@ -15,7 +15,7 @@ program .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) .option('-M, --message [text]', 'message','¡hola!\n') .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) - .option('-G, --groups [list]', 'list of groups separated by comma', list, []) + .option('-G, --groups [list]', 'list of groups separated by comma',list) .option('-C, --callback [url]', 'callback URL') .option('-E, --expiration [url]', 'expiration delay') .option('-X, --secure', 'use HTTPS', false) From 3db89833475f9c3e2816b95ac18106dc15dd85f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Reyes=20Ure=C3=B1a?= Date: Thu, 30 May 2013 18:45:43 +0200 Subject: [PATCH 15/22] Bug at utils/provision queues ["q1"] groups [] --- utils/provision.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/provision.js b/utils/provision.js index 4f6b84c..7fa0932 100755 --- a/utils/provision.js +++ b/utils/provision.js @@ -28,8 +28,8 @@ trans = { if(program.expiration) { trans.expirationDelay = program.expiration; } -if(program.groups) { - trans.groups = program.groups; +if(program.groups && program.groups.length!==0) { + trans.groups = program.groups; } if(program.callback) { trans.callback = program.callback; From 3e77609f2c7bd25fa14e7f777bbc501fb9a37ba9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Reyes=20Ure=C3=B1a?= Date: Thu, 30 May 2013 19:05:16 +0200 Subject: [PATCH 16/22] Fix Wrong code --- lib/groupService.js | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/lib/groupService.js b/lib/groupService.js index 6306a70..ab3fb5e 100644 --- a/lib/groupService.js +++ b/lib/groupService.js @@ -94,18 +94,22 @@ function addQueuesFromGroup(req, res, next) { var db = dbCluster.getTransactionDb(req.params.groupName); if (req.body && req.body.groups) { - async.map(req.body.groups, getElementsHandler(db), function (error, results) { - if (req.body.queue) { - var processedResults = []; - for (var i = 0; i < results[0].length; i++) { - processedResults.push({ - id: results[0][i] - }); + async.map(req.body.groups, getElementsHandler(db), + function(error, results) { + //[[q,q,q],[q],[q,q]] + var processedResults = []; + for (var j = 0; j < results.length; j++) { + for (var i = 0; i < results[j].length; i++) { + processedResults.push({ + id: results[j][i] + }); + } + } + if (req.body.queue) { + req.body.queue = req.body.queue.concat(processedResults); + } else { + req.body.queue = processedResults; } - req.body.queue = req.body.queue.concat(processedResults); - } else { - req.body.queue = results[0]; - } next(); }); From 2452c1521f0eb8728989f9e24bd91ad298af6aee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aitor=20Mag=C3=A1n=20Garc=C3=ADa?= Date: Fri, 31 May 2013 12:31:32 +0200 Subject: [PATCH 17/22] Fix #152. Improve code and test --- lib/groupService.js | 35 +++++++++---------- test/unit/groupsTest.js | 76 ++++++++++++++++++++++++++++++----------- 2 files changed, 72 insertions(+), 39 deletions(-) diff --git a/lib/groupService.js b/lib/groupService.js index ab3fb5e..d579a94 100644 --- a/lib/groupService.js +++ b/lib/groupService.js @@ -84,34 +84,31 @@ function getGroup(req, res) { }); } -function getElementsHandler(db) { - return function (name, callback) { - db.smembers(name, callback); - } +function getElementsHandler(name, callback) { + var db = dbCluster.getTransactionDb(name); + db.smembers(name, callback); } function addQueuesFromGroup(req, res, next) { - var db = dbCluster.getTransactionDb(req.params.groupName); if (req.body && req.body.groups) { - async.map(req.body.groups, getElementsHandler(db), + async.map(req.body.groups, getElementsHandler, function(error, results) { - //[[q,q,q],[q],[q,q]] - var processedResults = []; - for (var j = 0; j < results.length; j++) { - for (var i = 0; i < results[j].length; i++) { - processedResults.push({ - id: results[j][i] - }); - } + + if (!req.body.queue) { + req.body.queue = []; + } + + var processedResults = []; + for (var j = 0; j < results.length; j++) { + for (var i = 0; i < results[j].length; i++) { + req.body.queue.push({ + id: results[j][i] + }); } - if (req.body.queue) { - req.body.queue = req.body.queue.concat(processedResults); - } else { - req.body.queue = processedResults; } - next(); + next(); }); } else { next(); diff --git a/test/unit/groupsTest.js b/test/unit/groupsTest.js index d3d0288..9a33a5f 100644 --- a/test/unit/groupsTest.js +++ b/test/unit/groupsTest.js @@ -133,12 +133,37 @@ describe('Groups', function () { describe('When a message is posted to a group', function () { var publish; + var groupName = 'group2'; + var queues = ['A2', 'B2']; + + function checkQueue(transId, queue, done) { + var checkQueue = { + url: 'http://' + HOST + ':' + PORT + '/queue/' + queue + '/pop', + method: 'POST' + } + + request(checkQueue, function (error, response, body) { + response.statusCode.should.equal(200); + + var parsedBody = JSON.parse(body); + should.exist(parsedBody.data); + parsedBody.data.length.should.equal(1); + parsedBody.data.should.include(publish.json.payload); + parsedBody.transactions.length.should.equal(1); + parsedBody.transactions.should.include(transId); + + done(); + }); + } beforeEach(function (done) { var createGroup = { url: 'http://' + HOST + ':' + PORT + '/group', method: 'POST', - json: {} + json: { + name: groupName, + queues: queues + } }; publish = { @@ -148,42 +173,53 @@ describe('Groups', function () { 'payload': 'Published message', 'priority': 'H', 'callback': 'http://foo.bar', - 'queue': [ - ], 'groups': [ 'group2' ] } }; - createGroup.json.name = 'group1'; - createGroup.json.queues = ['A1', 'B1'] request(createGroup, function (error, response, body) { - createGroup.json.name = 'group2'; - createGroup.json.queues = ['A2', 'B2'] - request(createGroup, function (error, response, body) { - done(); - }); + done(); + }); + }); + + it('should publish to all the inboxes associated to the group', function (done) { + request(publish, function (error, response, body) { + + response.statusCode.should.equal(200); + + var transId = body.data; + var tests = []; + + for (var i = 0; i < queues.length; i++) { + tests.push(checkQueue.bind({}, transId, queues[i])); + } + + async.parallel(tests, done); + }); }); + it('should publish to all the inboxes associated to the group', function (done) { + var newQueue = 'C2'; + + publish.json.queue = [ { id: newQueue } ]; request(publish, function (error, response, body) { + response.statusCode.should.equal(200); - var checkQueue = { - url: 'http://' + HOST + ':' + PORT + '/queue/B2/pop', - method: 'POST' + var transId = body.data; + var tests = []; + + tests.push(checkQueue.bind({}, transId, newQueue)); + for (var i = 0; i < queues.length; i++) { + tests.push(checkQueue.bind({}, transId, queues[i])); } - request(checkQueue, function (error, response, body) { - response.statusCode.should.equal(200); + async.parallel(tests, done); - var parsedBody = JSON.parse(body); - should.exist(parsedBody.data); - parsedBody.data.length.should.equal(1); - done(); - }); }); }); }); From aa0e5d22861c76e4a3adbdb1dd0f1e7bd81804a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aitor=20Mag=C3=A1n=20Garc=C3=ADa?= Date: Fri, 31 May 2013 12:33:46 +0200 Subject: [PATCH 18/22] Modify test name --- test/unit/groupsTest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/groupsTest.js b/test/unit/groupsTest.js index 9a33a5f..b1de0b5 100644 --- a/test/unit/groupsTest.js +++ b/test/unit/groupsTest.js @@ -202,7 +202,7 @@ describe('Groups', function () { }); - it('should publish to all the inboxes associated to the group', function (done) { + it('should publish to all the inboxes associated to the group and in the selected queues', function (done) { var newQueue = 'C2'; publish.json.queue = [ { id: newQueue } ]; From 6d41c0e8e07520306d83fcaae16b27acad956d90 Mon Sep 17 00:00:00 2001 From: Carlos Romero Brox Date: Mon, 3 Jun 2013 14:50:43 +0200 Subject: [PATCH 19/22] Add ack script --- utils/ack.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 utils/ack.js diff --git a/utils/ack.js b/utils/ack.js new file mode 100644 index 0000000..2f3cf7a --- /dev/null +++ b/utils/ack.js @@ -0,0 +1,42 @@ +#!/usr/bin/env node + +'use strict'; + +var program = require('commander'), + request = require('request'), + util = require('util'), + i, + url, + trans; + +program + .version('0.0.1') + .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') + .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) + .option('-Q, --queue [id]', 'queue', "Q1") + .option('-T, --trans [list]', 'list of transactions separated by comma', list) + .option('-X, --secure', 'use HTTPS', false) + .parse(process.argv); +url = util.format('%s://%s:%d/queue/%s/ack', program.secure?'https':'http', program.host, program.port, program.queue); +trans = { + 'transactions': program.trans +}; + +console.log('url\n', url); +console.log('trans\n', trans); +request.post({url : url, json: trans}, function(err, res, body) { + if(err) { + console.log('error\n', err); + } + else { + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body\n', body); + } +}); +function range(val) { + return val.split('..').map(Number); +} +function list(val) { + return val.split(','); +} From a3e7345206cfa67f0690eb7e1899057e8d7c7a92 Mon Sep 17 00:00:00 2001 From: Carlos Romero Brox Date: Mon, 3 Jun 2013 15:02:02 +0200 Subject: [PATCH 20/22] Do not check length of group list --- utils/provision.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/provision.js b/utils/provision.js index 7fa0932..4f6b84c 100755 --- a/utils/provision.js +++ b/utils/provision.js @@ -28,8 +28,8 @@ trans = { if(program.expiration) { trans.expirationDelay = program.expiration; } -if(program.groups && program.groups.length!==0) { - trans.groups = program.groups; +if(program.groups) { + trans.groups = program.groups; } if(program.callback) { trans.callback = program.callback; From 98dd0670a6902032e08cf60f159e5c08e3b6bf64 Mon Sep 17 00:00:00 2001 From: Carlos Romero Brox Date: Tue, 4 Jun 2013 11:46:58 +0200 Subject: [PATCH 21/22] Set default port to 3001 (scripts) --- utils/ack.js | 2 +- utils/createSecure.js | 2 +- utils/group.js | 2 +- utils/pop.js | 2 +- utils/provision.js | 2 +- utils/trans_info.js | 8 ++++---- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/utils/ack.js b/utils/ack.js index 2f3cf7a..2cdf1ee 100644 --- a/utils/ack.js +++ b/utils/ack.js @@ -12,7 +12,7 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) + .option('-P, --port [number]', 'port, 5001 by default', 3001, parseInt) .option('-Q, --queue [id]', 'queue', "Q1") .option('-T, --trans [list]', 'list of transactions separated by comma', list) .option('-X, --secure', 'use HTTPS', false) diff --git a/utils/createSecure.js b/utils/createSecure.js index 1c763af..b7f53f8 100755 --- a/utils/createSecure.js +++ b/utils/createSecure.js @@ -12,7 +12,7 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 5002, parseInt) + .option('-P, --port [number]', 'port, 5001 by default', 3002, parseInt) .option('-Q, --queue [id]', 'queue', "Q1") .option('-U, --user [id:passwd]', 'username','popbox:itscool') .parse(process.argv); diff --git a/utils/group.js b/utils/group.js index 61ab161..d69b578 100755 --- a/utils/group.js +++ b/utils/group.js @@ -12,7 +12,7 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) + .option('-P, --port [number]', 'port, 5001 by default', 3001, parseInt) .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) .option('-G, --group [id]', 'group to be created', ["G1"]) .option('-X, --secure', 'use HTTPS', false) diff --git a/utils/pop.js b/utils/pop.js index 292fead..c975968 100755 --- a/utils/pop.js +++ b/utils/pop.js @@ -17,7 +17,7 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) + .option('-P, --port [number]', 'port, 5001 by default', 3001, parseInt) .option('-Q, --queue [id]', 'queue', "Q1") .option('-R, --reliable', 'reliable extraction', false) .option('-S, --subscribe', 'subscribe', false) diff --git a/utils/provision.js b/utils/provision.js index 4f6b84c..b1ed62e 100755 --- a/utils/provision.js +++ b/utils/provision.js @@ -12,7 +12,7 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) + .option('-P, --port [number]', 'port, 5001 by default', 3001, parseInt) .option('-M, --message [text]', 'message','¡hola!\n') .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) .option('-G, --groups [list]', 'list of groups separated by comma',list) diff --git a/utils/trans_info.js b/utils/trans_info.js index 5a21e54..b3c3de3 100755 --- a/utils/trans_info.js +++ b/utils/trans_info.js @@ -12,15 +12,15 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 5001, parseInt) + .option('-P, --port [number]', 'port, 5001 by default', 3001, parseInt) .option('-T, --trans [id]', 'transaction') .option('-X, --secure', 'use HTTPS', false) .parse(process.argv); url = util.format('%s://%s:%d/trans/%s', program.secure ? 'https' : 'http', program.host, program.port, program.trans); -req_aux(url, function () { - req_aux(url + '/state', function(){}); +reqAux(url, function () { + reqAux(url + '/state', function(){}); }); -function req_aux(url, done) { +function reqAux(url, done) { console.log('url\n', url); request.get({url: url, headers: {'Accept': 'application/json'}}, function (err, res, body) { if (err) { From eca49353641e6f6d97b85051e3e08aa5b7b3b1ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aitor=20Mag=C3=A1n=20Garc=C3=ADa?= Date: Tue, 4 Jun 2013 12:24:57 +0200 Subject: [PATCH 22/22] Correct indentation --- test/unit/bugsTest.js | 111 ++++++++++++----------- test/unit/callbackTest.js | 81 +++++++++-------- test/unit/groupsTest.js | 4 +- test/unit/inboxTest.js | 96 ++++++++++---------- test/unit/invalidContent.js | 83 ++++++++++++------ test/unit/peekTest.js | 120 +++++++++++++------------ test/unit/provisionTest.js | 43 ++++----- test/unit/putTest.js | 36 ++++---- test/unit/queueState.js | 52 +++++------ test/unit/secureQueues.js | 160 +++++++++++++++++----------------- test/unit/subscriptionTest.js | 66 +++++++------- utils/ack.js | 25 +++--- utils/createSecure.js | 26 +++--- utils/group.js | 24 ++--- utils/pop.js | 48 +++++----- utils/provision.js | 46 +++++----- utils/trans_info.js | 33 +++---- 17 files changed, 557 insertions(+), 497 deletions(-) diff --git a/test/unit/bugsTest.js b/test/unit/bugsTest.js index dd31143..123a264 100644 --- a/test/unit/bugsTest.js +++ b/test/unit/bugsTest.js @@ -5,23 +5,23 @@ var utils = require('./../utils.js'); var agent = require('../../.'); -describe('Bugs', function() { +describe('Bugs', function () { - before(function(done){ - agent.start(done); - }); + before(function (done) { + agent.start(done); + }); - after(function(done) { - utils.cleanBBDD(function() { - agent.stop(done); - } ); + after(function (done) { + utils.cleanBBDD(function () { + agent.stop(done); }); + }); - beforeEach(function(done) { + beforeEach(function (done) { utils.cleanBBDD(done); }); - it('should return empty data (priority is not considered)', function(done) { + it('should return empty data (priority is not considered)', function (done) { var transID = 'fake'; var modifiedData = { @@ -30,40 +30,40 @@ describe('Bugs', function() { async.series([ - function(callback) { + function (callback) { - utils.putTransaction(transID, modifiedData, function(err, response, data) { + utils.putTransaction(transID, modifiedData, function (err, response, data) { - should.not.exist(err); - response.statusCode.should.be.equal(200); - data.data.should.be.equal('empty data'); + should.not.exist(err); + response.statusCode.should.be.equal(200); + data.data.should.be.equal('empty data'); - callback(); - }); - }, + callback(); + }); + }, - function(callback) { + function (callback) { - utils.getTransState(transID, function(err, response, data) { + utils.getTransState(transID, function (err, response, data) { - should.not.exist(err); - response.statusCode.should.be.equal(200); - should.not.exist(data.data); + should.not.exist(err); + response.statusCode.should.be.equal(200); + should.not.exist(data.data); - callback(); - }); - } + callback(); + }); + } ], done); }); - it('should return errors (does not exist [id])', function(done) { + it('should return errors (does not exist [id])', function (done) { var transID = 'false'; - var modifyTrans = function(payload, cb) { + var modifyTrans = function (payload, cb) { - utils.putTransaction(transID, {expirationDate: 2147483645}, function(err, response, data) { + utils.putTransaction(transID, {expirationDate: 2147483645}, function (err, response, data) { should.not.exist(err); response.statusCode.should.be.equal(400); @@ -73,9 +73,9 @@ describe('Bugs', function() { }); } - var checkState = function(cb) { + var checkState = function (cb) { - utils.getTransState(transID, function(err, response, data) { + utils.getTransState(transID, function (err, response, data) { should.not.exist(err); response.statusCode.should.be.equal(200); @@ -86,23 +86,25 @@ describe('Bugs', function() { } async.series([ - modifyTrans.bind({}, {expirationDate: 2147483645}), - checkState, - modifyTrans.bind({}, {payload: 'hello'}), - checkState - ], done); + modifyTrans.bind({}, {expirationDate: 2147483645}), + checkState, + modifyTrans.bind({}, {payload: 'hello'}), + checkState + ], done); }); - it('Invalid Content-Type creating a transaction', function(done) { + it('Invalid Content-Type creating a transaction', function (done) { - var trans = utils.createTransaction('Message', 'H', [ { 'id': 'q1' } ]); + var trans = utils.createTransaction('Message', 'H', [ + { 'id': 'q1' } + ]); var heads = {}; var options = { host: config.hostname, port: config.port, path: '/trans/', method: 'POST', headers: heads}; var transParsed = JSON.stringify(trans); - utils.makeRequest(options, transParsed, function(error, response, data) { + utils.makeRequest(options, transParsed, function (error, response, data) { response.statusCode.should.be.equal(400); should.not.exist(error); @@ -116,13 +118,16 @@ describe('Bugs', function() { }); - it('Invalid Content-Type modifying a transaction', function(done) { + it('Invalid Content-Type modifying a transaction', function (done) { - var QUEUES = [ { 'id': 'q1' }, { 'id': 'q2' } ]; - var trans = utils.createTransaction('Test', 'H', QUEUES, Math.round(new Date().getTime() / 1000 + 2), + var QUEUES = [ + { 'id': 'q1' }, + { 'id': 'q2' } + ]; + var trans = utils.createTransaction('Test', 'H', QUEUES, Math.round(new Date().getTime() / 1000 + 2), 'http://telefonica.com'); - utils.pushTransaction(trans, function(error, response, data) { + utils.pushTransaction(trans, function (error, response, data) { response.statusCode.should.be.equal(200); should.not.exist(error); @@ -140,7 +145,7 @@ describe('Bugs', function() { path: '/trans/' + id, method: 'PUT', headers: heads}; var contentModifiedParsed = JSON.stringify(contentModified); - utils.makeRequest(options, contentModifiedParsed, function(error, response, data) { + utils.makeRequest(options, contentModifiedParsed, function (error, response, data) { response.statusCode.should.be.equal(400); should.not.exist(error); @@ -154,12 +159,14 @@ describe('Bugs', function() { }); }); - it('Queue state in a transaction should be \'Delivered\' when the queue has been popped', function(done) { + it('Queue state in a transaction should be \'Delivered\' when the queue has been popped', function (done) { var QUEUE_ID = 'q0', MESSAGE = 'MESSAGE 1', transID; - var transaction = utils.createTransaction(MESSAGE, 'H', [ { 'id': QUEUE_ID } ]); + var transaction = utils.createTransaction(MESSAGE, 'H', [ + { 'id': QUEUE_ID } + ]); - utils.pushTransaction(transaction, function(error, response, data) { + utils.pushTransaction(transaction, function (error, response, data) { response.statusCode.should.be.equal(200); should.not.exist(error); @@ -167,11 +174,11 @@ describe('Bugs', function() { //Check queue state before pop - checkState(transID, 'Pending', function() { + checkState(transID, 'Pending', function () { //Pop - popQueue(function() { + popQueue(function () { //Check queue state after pop - checkState(transID, 'Delivered', function() { + checkState(transID, 'Delivered', function () { done(); }); }); @@ -180,7 +187,7 @@ describe('Bugs', function() { function popQueue(cb) { - utils.pop(QUEUE_ID, function(error, response, data) { + utils.pop(QUEUE_ID, function (error, response, data) { should.not.exist(error); response.statusCode.should.be.equal(200); @@ -197,7 +204,7 @@ describe('Bugs', function() { function checkState(id, expectedState, cb) { - utils.getTransState(id, expectedState, function(error, response, data) { + utils.getTransState(id, expectedState, function (error, response, data) { should.not.exist(error); response.statusCode.should.be.equal(200); diff --git a/test/unit/callbackTest.js b/test/unit/callbackTest.js index 496fe72..25691c8 100644 --- a/test/unit/callbackTest.js +++ b/test/unit/callbackTest.js @@ -12,23 +12,22 @@ var PAYLOAD = 'TEST MESSAGE'; var QUEUES = ['q1', 'q2']; - function createServer(timeOut, onConnected, cb) { var messages = []; - setTimeout(function() { + setTimeout(function () { cb(null, messages); }, timeOut); - return http.createServer(function(req, res) { + return http.createServer(function (req, res) { var content = '', headers = req.headers, method = req.method; - req.on('data', function(chunk) { + req.on('data', function (chunk) { content += chunk; }); - req.on('end', function() { + req.on('end', function () { res.writeHead(200, headers); res.end(content); @@ -39,7 +38,7 @@ function createServer(timeOut, onConnected, cb) { }).listen(CALLBACK_PORT, onConnected); }; -describe('Callback Test', function() { +describe('Callback Test', function () { var id, srv, trans; @@ -56,22 +55,25 @@ describe('Callback Test', function() { } }; - before(function(done){ + before(function (done) { agent.start(done); }); - after(function(done) { - utils.cleanBBDD(function() { + after(function (done) { + utils.cleanBBDD(function () { agent.stop(done); }); }); - beforeEach(function(done) { + beforeEach(function (done) { - trans = utils.createTransaction(PAYLOAD, 'H', [ { 'id': QUEUES[0] },{ 'id': QUEUES[1] } ], null, CALLBACK); + trans = utils.createTransaction(PAYLOAD, 'H', [ + { 'id': QUEUES[0] }, + { 'id': QUEUES[1] } + ], null, CALLBACK); - utils.cleanBBDD(function() { - utils.pushTransaction(trans, function(error, response, data) { + utils.cleanBBDD(function () { + utils.pushTransaction(trans, function (error, response, data) { response.statusCode.should.be.equal(200); should.not.exist(error); @@ -84,18 +86,18 @@ describe('Callback Test', function() { }); }); - afterEach(function(done) { + afterEach(function (done) { srv.close(); utils.cleanBBDD(done); }); - it('Callback should be called on pop', function(done) { + it('Callback should be called on pop', function (done) { this.timeout(TIMEOUT * 2); - var pop = function() { + var pop = function () { for (var i = 0; i < QUEUES.length; i++) { - utils.pop(QUEUES[i], function(error, response, data) { + utils.pop(QUEUES[i], function (error, response, data) { data.should.have.property('ok', true); data.should.have.property('data'); @@ -108,18 +110,18 @@ describe('Callback Test', function() { } }; - srv = createServer(TIMEOUT, pop, function(err, messages) { + srv = createServer(TIMEOUT, pop, function (err, messages) { checkReceivedMessages(messages); done(); }); }); - it('Callback should not be called on peek', function(done) { + it('Callback should not be called on peek', function (done) { this.timeout(TIMEOUT * 2); - var peek = function() { + var peek = function () { for (var i = 0; i < QUEUES.length; i++) { - utils.peek(QUEUES[i], function(error, response, data) { + utils.peek(QUEUES[i], function (error, response, data) { data.should.have.property('ok', true); data.should.have.property('data'); @@ -132,19 +134,19 @@ describe('Callback Test', function() { } }; - srv = createServer(TIMEOUT, peek, function(err, messages) { + srv = createServer(TIMEOUT, peek, function (err, messages) { messages.length.should.be.equal(0); done(); }); }); - it('Callback should be called on subscription', function(done) { + it('Callback should be called on subscription', function (done) { this.timeout(TIMEOUT * 2); - var subscribe = function() { + var subscribe = function () { for (var i = 0; i < QUEUES.length; i++) { - utils.subscribe(1, QUEUES[i], function(error, messages) { + utils.subscribe(1, QUEUES[i], function (error, messages) { should.not.exist(error); messages.length.should.be.equal(1); @@ -158,7 +160,7 @@ describe('Callback Test', function() { } }; - srv = createServer(TIMEOUT, subscribe, function(err, messages) { + srv = createServer(TIMEOUT, subscribe, function (err, messages) { checkReceivedMessages(messages); //FIXME: Maybe a transaction should be inserted to unlock the blocking pop done(); @@ -166,39 +168,42 @@ describe('Callback Test', function() { }); }); -describe('Callback test on blocked request', function() { +describe('Callback test on blocked request', function () { var id, srv; - before(function(done){ + before(function (done) { agent.start(done); }); - after(function(done) { + after(function (done) { agent.stop(done); }); - afterEach(function(done) { + afterEach(function (done) { srv.close(); utils.cleanBBDD(done); }); - it('Callback should be called only once', function(done) { + it('Callback should be called only once', function (done) { this.timeout(5000); //Pop queue - var pop = function() { - var req = utils.popTimeout(QUEUES[0], 2000, function() { }); + var pop = function () { + var req = utils.popTimeout(QUEUES[0], 2000, function () { + }); //Timeout is required to ensure that the petition is received by PopBox - setTimeout(function() { + setTimeout(function () { //Cancel petition req.abort(); - var trans = utils.createTransaction(PAYLOAD, 'H', [ { 'id': QUEUES[0] } ], null, CALLBACK); + var trans = utils.createTransaction(PAYLOAD, 'H', [ + { 'id': QUEUES[0] } + ], null, CALLBACK); - utils.pushTransaction(trans, function(error, response, data) { + utils.pushTransaction(trans, function (error, response, data) { response.statusCode.should.be.equal(200); should.not.exist(error); @@ -206,7 +211,7 @@ describe('Callback test on blocked request', function() { data.should.have.property('data'); id = data.data; - utils.popTimeout(QUEUES[0], 1, function(error2P, response2P, data2P) { + utils.popTimeout(QUEUES[0], 1, function (error2P, response2P, data2P) { should.not.exist(error2P); @@ -226,7 +231,7 @@ describe('Callback test on blocked request', function() { }, 500); }; - srv = createServer(TIMEOUT, pop, function(err, messages) { + srv = createServer(TIMEOUT, pop, function (err, messages) { messages.length.should.be.equal(1); diff --git a/test/unit/groupsTest.js b/test/unit/groupsTest.js index b1de0b5..5c15b2c 100644 --- a/test/unit/groupsTest.js +++ b/test/unit/groupsTest.js @@ -205,7 +205,9 @@ describe('Groups', function () { it('should publish to all the inboxes associated to the group and in the selected queues', function (done) { var newQueue = 'C2'; - publish.json.queue = [ { id: newQueue } ]; + publish.json.queue = [ + { id: newQueue } + ]; request(publish, function (error, response, body) { response.statusCode.should.equal(200); diff --git a/test/unit/inboxTest.js b/test/unit/inboxTest.js index 1e54a67..dcf6ffc 100755 --- a/test/unit/inboxTest.js +++ b/test/unit/inboxTest.js @@ -4,10 +4,10 @@ var http = require('http'); var utils = require('./../utils'); var agent = require('../../.'); -describe('Inbox', function() { +describe('Inbox', function () { - var insertTrans = function(trans, cb) { - utils.pushTransaction(trans, function(error, response, data) { + var insertTrans = function (trans, cb) { + utils.pushTransaction(trans, function (error, response, data) { should.not.exist(error); response.statusCode.should.be.equal(200); @@ -17,29 +17,32 @@ describe('Inbox', function() { }); } - beforeEach(function(done) { + beforeEach(function (done) { utils.cleanBBDD(done); }); - before(function(done){ - agent.start(done); + before(function (done) { + agent.start(done); }); - after(function(done) { - utils.cleanBBDD(function() { - agent.stop(done); - } ); + after(function (done) { + utils.cleanBBDD(function () { + agent.stop(done); + }); }); - it('Should return all the transactions', function(done) { + it('Should return all the transactions', function (done) { var MESSAGE_INDEX = 'Test ', N_TRANS = 2, - QUEUES = [ { 'id': 'q1' }, { 'id': 'q2' }], + QUEUES = [ + { 'id': 'q1' }, + { 'id': 'q2' } + ], insertTransFuncs = [], popQueueAndTestFuncs = []; - var popQueueAndTest = function(queue, cb) { - utils.pop(queue, function(error, response, data) { + var popQueueAndTest = function (queue, cb) { + utils.pop(queue, function (error, response, data) { should.not.exist(error); @@ -67,15 +70,15 @@ describe('Inbox', function() { //Insert two transactions in the queues async.series(insertTransFuncs, - function() { + function () { //Pop queues once the transactions have been pushed. Queues are tested to have the correct content async.parallel(popQueueAndTestFuncs, done); }); }); - it('Should return the high priority transaction', function(done) { + it('Should return the high priority transaction', function (done) { - var QUEUE = { 'id': 'q1' }, insertTransFuncs = []; + var QUEUE = { 'id': 'q1' }, insertTransFuncs = []; var transLow = utils.createTransaction('Low Priority', 'L', [ QUEUE ]); var transHigh = utils.createTransaction('High Priority', 'H', [ QUEUE ]); @@ -85,30 +88,30 @@ describe('Inbox', function() { async.parallel(insertTransFuncs, - function() { - utils.pop(QUEUE.id, 1, function(error, response, data) { - should.not.exist(error); + function () { + utils.pop(QUEUE.id, 1, function (error, response, data) { + should.not.exist(error); - data.should.not.have.property('error'); - data.should.have.property('ok'); - data.should.have.property('data'); - data.data.length.should.be.equal(1); - (data.data.pop()).should.be.equal('High Priority'); + data.should.not.have.property('error'); + data.should.have.property('ok'); + data.should.have.property('data'); + data.data.length.should.be.equal(1); + (data.data.pop()).should.be.equal('High Priority'); - done(); + done(); + }); }); - }); }); - it('Should return empty message - Transaction is expired', function(done) { + it('Should return empty message - Transaction is expired', function (done) { this.timeout(10000); - var QUEUE = { 'id': 'q1' }, insertTransFuncs = [], id; + var QUEUE = { 'id': 'q1' }, insertTransFuncs = [], id; var trans = utils.createTransaction('Low Priority', 'L', [ QUEUE ]); trans.expirationDate = Math.round(new Date().getTime() / 1000) - 5; - utils.pushTransaction(trans, function(error, response, data) { + utils.pushTransaction(trans, function (error, response, data) { should.not.exist(error); response.statusCode.should.be.equal(200); @@ -116,7 +119,7 @@ describe('Inbox', function() { id = data.data; - utils.pop(QUEUE.id, function(error, response, data) { + utils.pop(QUEUE.id, function (error, response, data) { should.not.exist(error); response.statusCode.should.be.equal(200); @@ -126,7 +129,7 @@ describe('Inbox', function() { if (data.transactions.length === 1) { //Garbage collector is disabled data.transactions.should.include(id); - data.data.length.should.be.equal(1); + data.data.length.should.be.equal(1); should.not.exist(data.data.pop()); } else { //Garbage collection is enabled data.transactions.length.should.be.equal(0); @@ -140,25 +143,26 @@ describe('Inbox', function() { }); }); - it('Transaction should be popped on the second pop', function(done) { + it('Transaction should be popped on the second pop', function (done) { this.timeout(5000); - var QUEUE = { 'id': 'q1' }; + var QUEUE = { 'id': 'q1' }; var MESSAGE = 'LOW PRIORITY MESSAGE!'; var trans = utils.createTransaction(MESSAGE, 'L', [ QUEUE ]); //Pop queue q0 - var req = utils.popTimeout(QUEUE.id, 2000, function() { }); + var req = utils.popTimeout(QUEUE.id, 2000, function () { + }); //Timeout is required to ensure that the petition is received by PopBox - setTimeout(function() { + setTimeout(function () { //Cancel petition req.abort(); //Insert the transaction when pop finish - insertTrans(trans, function(err, id) { + insertTrans(trans, function (err, id) { - utils.popTimeout(QUEUE.id, 1, function(error2P, response2P, data2P) { + utils.popTimeout(QUEUE.id, 1, function (error2P, response2P, data2P) { should.not.exist(error2P); @@ -179,17 +183,17 @@ describe('Inbox', function() { }, 500); }); - var testTimeOut = function(timeToInsert, timeToWait, done) { + var testTimeOut = function (timeToInsert, timeToWait, done) { 'use strict'; var MESSAGE = 'Test timeout'; - var QUEUE = { 'id': 'q1' } + var QUEUE = { 'id': 'q1' } var trans = utils.createTransaction('Test timeout', 'L', [ QUEUE ]); async.parallel([ - function(cb) { - utils.popTimeout(QUEUE.id, timeToWait, function(error, response, data) { + function (cb) { + utils.popTimeout(QUEUE.id, timeToWait, function (error, response, data) { should.not.exist(error); data.should.not.have.property('error'); @@ -207,20 +211,20 @@ describe('Inbox', function() { }); }, - function(cb) { - setTimeout(function() { + function (cb) { + setTimeout(function () { insertTrans(trans, cb); }, timeToInsert * 1000); } ], done); }; - it('Should return empty data (timeout)', function(done) { + it('Should return empty data (timeout)', function (done) { this.timeout(5000); //Mocha timeout testTimeOut(3, 1, done); }); - it('Should not return empty data (timeout)', function(done) { + it('Should not return empty data (timeout)', function (done) { this.timeout(5000); //Mocha timeout testTimeOut(1, 3, done); }); diff --git a/test/unit/invalidContent.js b/test/unit/invalidContent.js index 8f8d3d7..3d8e034 100644 --- a/test/unit/invalidContent.js +++ b/test/unit/invalidContent.js @@ -3,23 +3,23 @@ var async = require('async'); var utils = require('./../utils.js'); var agent = require('../../.'); -describe('Invalid Data in JSON', function() { +describe('Invalid Data in JSON', function () { - before(function(done){ - agent.start(done); + before(function (done) { + agent.start(done); }); - after(function(done) { - utils.cleanBBDD(function() { + after(function (done) { + utils.cleanBBDD(function () { agent.stop(done); }); }); - var executeTest = function(trans, expectedErrors, done) { + var executeTest = function (trans, expectedErrors, done) { 'use strict'; - utils.pushTransaction(trans, function(error, response, data) { + utils.pushTransaction(trans, function (error, response, data) { response.statusCode.should.be.equal(400); should.not.exist(error); @@ -34,45 +34,59 @@ describe('Invalid Data in JSON', function() { }); } - it('Invalid Priority', function(done) { - var trans = utils.createTransaction('Message', 'M', [{ 'id': 'q1' }, { 'id': 'q2' }]); + it('Invalid Priority', function (done) { + var trans = utils.createTransaction('Message', 'M', [ + { 'id': 'q1' }, + { 'id': 'q2' } + ]); executeTest(trans, ['invalid priority'], done); }); - it('Undefined Priority', function(done) { - var trans = utils.createTransaction('Message', 'H', [{ 'id': 'q1' }, { 'id': 'q2' }]); + it('Undefined Priority', function (done) { + var trans = utils.createTransaction('Message', 'H', [ + { 'id': 'q1' }, + { 'id': 'q2' } + ]); delete trans.priority; executeTest(trans, ['undefined priority'], done); }); - it('Undefined Priority and Payload', function(done) { - var trans = utils.createTransaction('Message', 'H', [{ 'id': 'q1' }, { 'id': 'q2' }]); + it('Undefined Priority and Payload', function (done) { + var trans = utils.createTransaction('Message', 'H', [ + { 'id': 'q1' }, + { 'id': 'q2' } + ]); delete trans.payload delete trans.priority; executeTest(trans, ['undefined priority', 'undefined payload'], done); }); - it('Invalid queue', function(done) { + it('Invalid queue', function (done) { var trans = utils.createTransaction('Message', 'H', { 'id': 'q1' }); executeTest(trans, ['invalid queue type'], done); }); - it('Undefined queue', function(done) { - var trans = utils.createTransaction('Message', 'H', [{ 'id': 'q1' }]); + it('Undefined queue', function (done) { + var trans = utils.createTransaction('Message', 'H', [ + { 'id': 'q1' } + ]); delete trans.queue; executeTest(trans, ['undefined queue'], done); }); - it('Invalid Queue Element', function(done) { + it('Invalid Queue Element', function (done) { - var trans = utils.createTransaction('Message', 'H', [{ 'identifier': 'q1' }, { 'id': 'q2' }]); + var trans = utils.createTransaction('Message', 'H', [ + { 'identifier': 'q1' }, + { 'id': 'q2' } + ]); executeTest(trans, ['invalid queue element'], done); }); - it('too many queues', function(done) { + it('too many queues', function (done) { var queues = []; - for (var i = 0; i < 10001; i++){ + for (var i = 0; i < 10001; i++) { queues.push({id: 'q' + i}); } @@ -80,31 +94,42 @@ describe('Invalid Data in JSON', function() { executeTest(trans, ['too many queues: maximum 10000'], done); }); - it('Undefined Payload', function(done) { - var trans = utils.createTransaction('Message', 'H', [{ 'id': 'q1' }, { 'id': 'q2' }]); + it('Undefined Payload', function (done) { + var trans = utils.createTransaction('Message', 'H', [ + { 'id': 'q1' }, + { 'id': 'q2' } + ]); delete trans.payload; executeTest(trans, ['undefined payload'], done); }); - it('Payload is too big', function(done) { + it('Payload is too big', function (done) { var payload = ''; - while(payload.length < 1024 * 1024 + 5) { + while (payload.length < 1024 * 1024 + 5) { payload += 'a'; } - var trans = utils.createTransaction(payload, 'H', [{ 'id': 'q1' }, { 'id': 'q2' }]); + var trans = utils.createTransaction(payload, 'H', [ + { 'id': 'q1' }, + { 'id': 'q2' } + ]); executeTest(trans, ['payload greater than 1048576'], done); }); - it('Invalid Expiration Date (it isn\'t a number)', function(done) { - var trans = utils.createTransaction('MSG', 'H', [{ 'id': 'q1' }, { 'id': 'q2' }], 'tef', 'http://foo.bar'); + it('Invalid Expiration Date (it isn\'t a number)', function (done) { + var trans = utils.createTransaction('MSG', 'H', [ + { 'id': 'q1' }, + { 'id': 'q2' } + ], 'tef', 'http://foo.bar'); executeTest(trans, ['expirationDate is not a number'], done); }); - it('Invalid Expiration Date (out of range)', function(done) { + it('Invalid Expiration Date (out of range)', function (done) { var expDate = 2147483647 + 5000; - var trans = utils.createTransaction('MSG', 'H', [{ 'id': 'q1' }], expDate, 'http://foo.bar'); + var trans = utils.createTransaction('MSG', 'H', [ + { 'id': 'q1' } + ], expDate, 'http://foo.bar'); executeTest(trans, ['expirationDate out of range'], done); }); }); diff --git a/test/unit/peekTest.js b/test/unit/peekTest.js index adbc696..117e782 100644 --- a/test/unit/peekTest.js +++ b/test/unit/peekTest.js @@ -8,19 +8,19 @@ var N_TRANS = 5; var QUEUE_NAME = 'peekQueue'; var MESSAGE_INDEX = 'Message '; -var checkTrans = function(ids, transactionsReceived) { +var checkTrans = function (ids, transactionsReceived) { 'use strict' transactionsReceived.length.should.be.equal(ids.length); - for (var i = 0; i < ids.length; i++){ + for (var i = 0; i < ids.length; i++) { transactionsReceived.should.include(ids[i]); } } -var retrieveAllTranstactions = function(ids, done) { +var retrieveAllTranstactions = function (ids, done) { 'use strict'; - utils.peek(QUEUE_NAME, function(error, response, data) { + utils.peek(QUEUE_NAME, function (error, response, data) { should.not.exist(error); response.statusCode.should.be.equal(200); @@ -35,7 +35,7 @@ var retrieveAllTranstactions = function(ids, done) { for (var i = 0; i < N_TRANS; i++) { data.data.should.include(MESSAGE_INDEX + i); - utils.getTransState(ids[i], 'Pending', function(error, response, data) { + utils.getTransState(ids[i], 'Pending', function (error, response, data) { should.not.exist(error); data.should.have.property('queues'); @@ -51,10 +51,10 @@ var retrieveAllTranstactions = function(ids, done) { }); }; -var retrieveSomeTransactions = function(ids, done) { +var retrieveSomeTransactions = function (ids, done) { 'use strict'; - utils.peek(QUEUE_NAME, function(error, response, data) { + utils.peek(QUEUE_NAME, function (error, response, data) { should.not.exist(error); response.statusCode.should.be.equal(200); @@ -73,9 +73,9 @@ var retrieveSomeTransactions = function(ids, done) { }); }; -var afterAll = function(done) { +var afterAll = function (done) { - utils.getQueueState(QUEUE_NAME, function(error, response, data) { + utils.getQueueState(QUEUE_NAME, function (error, response, data) { //Test that pop date hasn't be modified should.not.exist(data.lastPop); //Test that the queue has the 5 transactions @@ -86,20 +86,22 @@ var afterAll = function(done) { }); }; -describe('Peek from High Priority Queue', function() { +describe('Peek from High Priority Queue', function () { var ids = new Array(N_TRANS); - before(function(done) { + before(function (done) { - agent.start(function() { - utils.cleanBBDD(function(){ + agent.start(function () { + utils.cleanBBDD(function () { var completed = 0; for (var i = 0; i < N_TRANS; i++) { - var trans = utils.createTransaction(MESSAGE_INDEX + i, 'H', [{ 'id': QUEUE_NAME }]); - utils.pushTransaction(trans, function(err, response, data) { + var trans = utils.createTransaction(MESSAGE_INDEX + i, 'H', [ + { 'id': QUEUE_NAME } + ]); + utils.pushTransaction(trans, function (err, response, data) { should.not.exist(err); data.should.have.property('data'); @@ -115,19 +117,19 @@ describe('Peek from High Priority Queue', function() { }); }); - after(function(done) { - afterAll(function() { + after(function (done) { + afterAll(function () { agent.stop(done); }); }); it('Should retrieve all the messages and trans' + - ' state should not change', function(done) { + ' state should not change', function (done) { retrieveAllTranstactions(ids, done); }); - it('Should retrieve 3 messages', function(done) { + it('Should retrieve 3 messages', function (done) { var idsToRetrive = []; for (var i = 0; i < 3; i++) { idsToRetrive.push(ids[i]); @@ -138,20 +140,22 @@ describe('Peek from High Priority Queue', function() { }); -describe('Peek from Low Priority Queue', function() { +describe('Peek from Low Priority Queue', function () { var ids = new Array(N_TRANS); - before(function(done) { + before(function (done) { - agent.start(function() { - utils.cleanBBDD(function() { + agent.start(function () { + utils.cleanBBDD(function () { var completed = 0; for (var i = 0; i < N_TRANS; i++) { - var trans = utils.createTransaction(MESSAGE_INDEX + i, 'L', [{ 'id': QUEUE_NAME }]); - utils.pushTransaction(trans, function(err, response, data) { + var trans = utils.createTransaction(MESSAGE_INDEX + i, 'L', [ + { 'id': QUEUE_NAME } + ]); + utils.pushTransaction(trans, function (err, response, data) { data.should.have.property('data'); ids[completed] = data.data; @@ -166,18 +170,18 @@ describe('Peek from Low Priority Queue', function() { }); }); - after(function(done) { - afterAll(function() { + after(function (done) { + afterAll(function () { agent.stop(done); }); }); it('Should retrieve all the messages and trans' + - ' state should not change', function(done) { + ' state should not change', function (done) { retrieveAllTranstactions(ids, done); }); - it('Should retrieve 4 messages', function(done) { + it('Should retrieve 4 messages', function (done) { var idsToRetrive = []; for (var i = 0; i < 4; i++) { idsToRetrive.push(ids[i]); @@ -188,21 +192,21 @@ describe('Peek from Low Priority Queue', function() { }); -describe('Peek from High and Low Priority Queue', function() { +describe('Peek from High and Low Priority Queue', function () { var ids = []; var idsH = []; var idsL = []; - before(function(done) { + before(function (done) { - agent.start(function() { - utils.cleanBBDD(function() { + agent.start(function () { + utils.cleanBBDD(function () { var pushTransFuncs = []; - var pushTrans = function(trans, cb) { - utils.pushTransaction(trans, function(err, response, data) { + var pushTrans = function (trans, cb) { + utils.pushTransaction(trans, function (err, response, data) { data.should.have.property('data'); ids.push(data.data); @@ -219,7 +223,9 @@ describe('Peek from High and Low Priority Queue', function() { } for (var i = 0; i < N_TRANS; i++) { - var trans = utils.createTransaction(MESSAGE_INDEX + i, (i % 2 === 0) ? 'H' : 'L', [{ 'id': QUEUE_NAME }]); + var trans = utils.createTransaction(MESSAGE_INDEX + i, (i % 2 === 0) ? 'H' : 'L', [ + { 'id': QUEUE_NAME } + ]); pushTransFuncs.push(pushTrans.bind({}, trans)); } @@ -228,22 +234,22 @@ describe('Peek from High and Low Priority Queue', function() { }); }); - after(function(done) { - afterAll(function() { + after(function (done) { + afterAll(function () { agent.stop(done); }); }); it('Should retrieve all the messages and trans' + - ' state should not change', function(done) { + ' state should not change', function (done) { retrieveAllTranstactions(ids, done); }); - it('Should retrieve all the messages with high priority', function(done) { + it('Should retrieve all the messages with high priority', function (done) { var N_PETS = 3; - utils.peek(QUEUE_NAME, N_PETS, function(error, response, data) { + utils.peek(QUEUE_NAME, N_PETS, function (error, response, data) { response.statusCode.should.be.equal(200); data.should.have.property('data'); @@ -261,11 +267,11 @@ describe('Peek from High and Low Priority Queue', function() { }); it('Should retrieve all the messages with high priority' + - ' and some with low priority', function(done) { + ' and some with low priority', function (done) { var N_PETS = 4; - utils.peek(QUEUE_NAME, N_PETS, function(error, response, data) { + utils.peek(QUEUE_NAME, N_PETS, function (error, response, data) { response.statusCode.should.be.equal(200); data.should.have.property('data'); @@ -274,7 +280,7 @@ describe('Peek from High and Low Priority Queue', function() { data.should.have.property('transactions'); var idsToCheck = idsH, j = 0; - while(idsToCheck.length !== N_PETS) { + while (idsToCheck.length !== N_PETS) { idsToCheck.push(idsL[j++]); } @@ -290,11 +296,11 @@ describe('Peek from High and Low Priority Queue', function() { }); it('Should retrieve all the messages even if max is higher' + - ' that the number of transactions in the queue', function(done) { + ' that the number of transactions in the queue', function (done) { var N_PETS = 8; - utils.peek(QUEUE_NAME, N_PETS, function(error, response, data) { + utils.peek(QUEUE_NAME, N_PETS, function (error, response, data) { response.statusCode.should.be.equal(200); data.should.have.property('data'); @@ -313,23 +319,23 @@ describe('Peek from High and Low Priority Queue', function() { }); }); -describe('Peek - Generic tests', function() { +describe('Peek - Generic tests', function () { - before(function(done) { - agent.start(function() { + before(function (done) { + agent.start(function () { utils.cleanBBDD(done); }); }); - after(function(done) { + after(function (done) { agent.stop(done); }); - it('Should return an empty response immediately when the queue is empty', function(done) { + it('Should return an empty response immediately when the queue is empty', function (done) { this.timeout(1000); - utils.peek(QUEUE_NAME, function(error, response, data) { + utils.peek(QUEUE_NAME, function (error, response, data) { response.statusCode.should.be.equal(200); data.should.have.property('data'); data.data.length.should.be.equal(0); @@ -338,13 +344,13 @@ describe('Peek - Generic tests', function() { }); }); - it('Should return empty message - Transaction is expired', function(done) { + it('Should return empty message - Transaction is expired', function (done) { - var QUEUE = { 'id': 'q1' }, insertTransFuncs = [], id; + var QUEUE = { 'id': 'q1' }, insertTransFuncs = [], id; var trans = utils.createTransaction('Low Priority', 'L', [ QUEUE ]); trans.expirationDate = Math.round(new Date().getTime() / 1000) - 5; - utils.pushTransaction(trans, function(error, response, data) { + utils.pushTransaction(trans, function (error, response, data) { should.not.exist(error); response.statusCode.should.be.equal(200); @@ -352,7 +358,7 @@ describe('Peek - Generic tests', function() { id = data.data; - utils.peek(QUEUE.id, function(error, response, data) { + utils.peek(QUEUE.id, function (error, response, data) { should.not.exist(error); response.statusCode.should.be.equal(200); @@ -362,7 +368,7 @@ describe('Peek - Generic tests', function() { data.should.have.property('data'); if (data.transactions.length === 1) { //Garbage collector is disabled data.transactions.should.include(id); - data.data.length.should.be.equal(1); + data.data.length.should.be.equal(1); should.not.exist(data.data.pop()); } else { //Garbage collector is enabled data.transactions.length.should.be.equal(0); diff --git a/test/unit/provisionTest.js b/test/unit/provisionTest.js index 853b256..014781e 100644 --- a/test/unit/provisionTest.js +++ b/test/unit/provisionTest.js @@ -4,30 +4,33 @@ var utils = require('./../utils.js'); var agent = require('../../.'); -describe('Provision', function() { +describe('Provision', function () { var id; var payload = "{\"spanish\": \"prueba1\", \"english\": \"test1\", \"to\": \"Mr Lopez\"}"; var callback = 'http://foo.bar'; var priority = 'H'; - var queues = [ { 'id': 'q1' }, { 'id': 'q2' } ] + var queues = [ + { 'id': 'q1' }, + { 'id': 'q2' } + ] - before(function(done){ + before(function (done) { agent.start(done); }); - after(function(done) { - utils.cleanBBDD(function() { - agent.stop(done); - }); + after(function (done) { + utils.cleanBBDD(function () { + agent.stop(done); }); + }); - beforeEach(function(done) { + beforeEach(function (done) { - var trans = utils.createTransaction(payload, priority, queues, Math.round(new Date().getTime() / 1000 + 2), + var trans = utils.createTransaction(payload, priority, queues, Math.round(new Date().getTime() / 1000 + 2), callback); - utils.pushTransaction(trans, function(error, response, data) { + utils.pushTransaction(trans, function (error, response, data) { response.statusCode.should.be.equal(200); should.not.exist(error); @@ -40,26 +43,26 @@ describe('Provision', function() { }); }); - afterEach(function(done) { + afterEach(function (done) { utils.cleanBBDD(done); }); - it('Should return an empty response for expired transactions', function(done) { + it('Should return an empty response for expired transactions', function (done) { this.timeout(10000); //Mocha timeout //Transaction expires in two seconds, so in three seconds it will be expired - setTimeout(function() { - utils.getTransState(id, function(error, response, data) { + setTimeout(function () { + utils.getTransState(id, function (error, response, data) { data.should.eql({}); done(); }); }, 5000); }); - it('should retrieve the original transation', function(done) { + it('should retrieve the original transation', function (done) { - utils.getTransState(id, function(error, response, data) { + utils.getTransState(id, function (error, response, data) { data.should.have.property('payload'); data.should.have.property('callback'); data.should.have.property('priority'); @@ -72,17 +75,17 @@ describe('Provision', function() { }); }); - it('should retrieve an empty response for an non-existent transaction', function(done) { + it('should retrieve an empty response for an non-existent transaction', function (done) { - utils.getTransState('fake_trans', function(error, response, data) { + utils.getTransState('fake_trans', function (error, response, data) { data.should.eql({}); done(); }); }); - it('transaction should be in two queues with \'Pending\' state', function(done) { + it('transaction should be in two queues with \'Pending\' state', function (done) { - utils.getTransState(id, 'Pending', function(error, response, data) { + utils.getTransState(id, 'Pending', function (error, response, data) { data.should.have.property('queues'); diff --git a/test/unit/putTest.js b/test/unit/putTest.js index 8c59faf..e58b448 100644 --- a/test/unit/putTest.js +++ b/test/unit/putTest.js @@ -3,17 +3,16 @@ var async = require('async'); var utils = require('./../utils'); var agent = require('../../.'); -describe('PUT', function() { +describe('PUT', function () { var id, trans; - var modifyTransAndCheckStatus = function(modifiedData, errors, expectedPayload, expectedCallback, - expectedTimeOut, done) { + var modifyTransAndCheckStatus = function (modifiedData, errors, expectedPayload, expectedCallback, expectedTimeOut, done) { async.series([ - function(callback) { - utils.putTransaction(id, modifiedData, function(error, response, data) { + function (callback) { + utils.putTransaction(id, modifiedData, function (error, response, data) { should.not.exist(error); @@ -29,9 +28,9 @@ describe('PUT', function() { }); }, - function(callback) { + function (callback) { - utils.getTransState(id, function(error, response, data) { + utils.getTransState(id, function (error, response, data) { response.statusCode.should.be.equal(200); data.should.have.property('payload'); @@ -49,14 +48,17 @@ describe('PUT', function() { ], done); } - beforeEach(function(done) { + beforeEach(function (done) { var payload = "{\"spanish\": \"prueba1\", \"english\":'\"test1\", \"to\": \"Mr Lopez\"}"; - trans = utils.createTransaction(payload, 'H', [ { 'id': 'q1' }, { 'id': 'q2' } ], + trans = utils.createTransaction(payload, 'H', [ + { 'id': 'q1' }, + { 'id': 'q2' } + ], Math.round(new Date().getTime() / 1000 + 2), 'http://foo.bar'); - utils.pushTransaction(trans, function(error, response, data) { + utils.pushTransaction(trans, function (error, response, data) { should.not.exist(error); data.should.have.property('data'); id = data.data; @@ -64,20 +66,20 @@ describe('PUT', function() { }); }); - before(function(done){ + before(function (done) { agent.start(done); }); - after(function(done) { - utils.cleanBBDD(function() { + after(function (done) { + utils.cleanBBDD(function () { agent.stop(done); }); }); - it('should change payload, callback and expirationDate', function(done) { + it('should change payload, callback and expirationDate', function (done) { var modifiedData = { - 'payload': 'MESSAGE1', + 'payload': 'MESSAGE1', 'callback': 'www.fi.upm.es', 'expirationDate': 1447483646 }; @@ -87,11 +89,11 @@ describe('PUT', function() { }); - it('should not change priority', function(done) { + it('should not change priority', function (done) { var modifiedData = { - 'payload': 'MESSAGE2', + 'payload': 'MESSAGE2', 'priority': 'L', 'expirationDate': 1447483646 }; diff --git a/test/unit/queueState.js b/test/unit/queueState.js index 82ba7a4..ca60d2c 100644 --- a/test/unit/queueState.js +++ b/test/unit/queueState.js @@ -5,8 +5,8 @@ var agent = require('../../.'); var queueID = 'q1'; -var checkState = function(expectedState, cb) { - utils.getQueueState('q1', function(err, response, data) { +var checkState = function (expectedState, cb) { + utils.getQueueState('q1', function (err, response, data) { should.not.exist(err); response.statusCode.should.be.equal(200); @@ -19,38 +19,40 @@ var checkState = function(expectedState, cb) { }); } -var pushTrans = function() { - var trans = utils.createTransaction('MESSAGE', 'L', [ {id: queueID} ]); - utils.pushTransaction(trans, function(err, response, data) { +var pushTrans = function () { + var trans = utils.createTransaction('MESSAGE', 'L', [ + {id: queueID} + ]); + utils.pushTransaction(trans, function (err, response, data) { should.not.exist(err); response.statusCode.should.be.equal(200); }); } -describe('Queue State', function() { +describe('Queue State', function () { - before(function(done){ + before(function (done) { agent.start(done); }); - after(function(done) { - utils.cleanBBDD(function() { + after(function (done) { + utils.cleanBBDD(function () { agent.stop(done); }); }); - beforeEach(function(done) { + beforeEach(function (done) { utils.cleanBBDD(done); }); - it ('Blocked is false when subscription or pop operations have not been called', function(done) { + it('Blocked is false when subscription or pop operations have not been called', function (done) { checkState(false, done); }); - it('Blocked is true when pop operations is being processed and false when is completed (trans is pushed)', function(done) { + it('Blocked is true when pop operations is being processed and false when is completed (trans is pushed)', function (done) { this.timeout(5000); - utils.pop(queueID, function(err, response, data) { + utils.pop(queueID, function (err, response, data) { should.not.exist(err); response.statusCode.should.be.equal(200); @@ -60,17 +62,17 @@ describe('Queue State', function() { checkState(false, done); }); - setTimeout(function() { + setTimeout(function () { checkState(true, pushTrans); }, 1000); }); - it('Blocked is true until the last pop ends', function(done) { + it('Blocked is true until the last pop ends', function (done) { this.timeout(5000); var firstPop = true; - var checkPop = function(err, response, data) { + var checkPop = function (err, response, data) { should.not.exist(err); response.statusCode.should.be.equal(200); @@ -92,15 +94,15 @@ describe('Queue State', function() { utils.pop(queueID, checkPop); utils.pop(queueID, checkPop); - setTimeout(function() { + setTimeout(function () { checkState(true, pushTrans); }, 1000) }); - it('Blocked is true when pop operations is being processed and false when is completed (timeout)', function(done) { + it('Blocked is true when pop operations is being processed and false when is completed (timeout)', function (done) { this.timeout(5000); - utils.popTimeout(queueID, 2, function(err, response, data) { + utils.popTimeout(queueID, 2, function (err, response, data) { should.not.exist(err); response.statusCode.should.be.equal(200); @@ -113,10 +115,10 @@ describe('Queue State', function() { setTimeout(checkState.bind({}, true), 1000); }); - it('Blocked on subscription and unblocked when subscription ends', function(done) { + it('Blocked on subscription and unblocked when subscription ends', function (done) { this.timeout(5000); - utils.subscribe(1, queueID, function(err, messages) { + utils.subscribe(1, queueID, function (err, messages) { should.not.exist(err); var msg = messages.pop(); @@ -127,18 +129,18 @@ describe('Queue State', function() { setTimeout(checkState.bind({}, false, done), 100); }); - setTimeout(function() { + setTimeout(function () { checkState(true, pushTrans); }, 1000); }); - it('Blocked until the last subscription ends', function(done) { + it('Blocked until the last subscription ends', function (done) { this.timeout(5000); var firstSubscription = true; - var checkSubscription = function(err, messages) { + var checkSubscription = function (err, messages) { should.not.exist(err); var msg = messages.pop(); @@ -160,7 +162,7 @@ describe('Queue State', function() { utils.subscribe(1, queueID, checkSubscription); utils.subscribe(1, queueID, checkSubscription); - setTimeout(function() { + setTimeout(function () { checkState(true, pushTrans); }, 1000) }); diff --git a/test/unit/secureQueues.js b/test/unit/secureQueues.js index 4684989..c23402a 100644 --- a/test/unit/secureQueues.js +++ b/test/unit/secureQueues.js @@ -42,15 +42,15 @@ var httpReq = function (options, content, cb) { delete options.headers['content-type']; } - var req = https.request(options, function(res) { + var req = https.request(options, function (res) { var content = ''; - res.on('data', function(chunk) { + res.on('data', function (chunk) { content += chunk; }); - res.on('end', function() { + res.on('end', function () { cb(null, res, content); }); }); @@ -62,50 +62,50 @@ var httpReq = function (options, content, cb) { req.end(); } -var postQueue = function(content, cb) { +var postQueue = function (content, cb) { var options = getOptions('POST', '/queue'); httpReq(options, content, cb); } -var pushTrans = function(trans, cb) { +var pushTrans = function (trans, cb) { var options = getOptions('POST', '/trans/'); httpReq(options, trans, cb); } -var get = function(queue, username, password, cb) { +var get = function (queue, username, password, cb) { var options = getOptions('GET', '/queue/' + queue, username, password); httpReq(options, cb); }; -var peek = function(queue, username, password, cb) { +var peek = function (queue, username, password, cb) { var options = getOptions('GET', '/queue/' + queue + '/peek', username, password); httpReq(options, cb); } -var pop = function(queue, username, password, cb) { +var pop = function (queue, username, password, cb) { var options = getOptions('POST', '/queue/' + queue + '/pop', username, password); httpReq(options, cb); } -var subscribe = function(nPets, queue, username, password, cb) { +var subscribe = function (nPets, queue, username, password, cb) { 'use strict'; var options = getOptions('POST', '/queue/' + queue + '/subscribe', username, password); delete options.headers['content-type']; - var req = https.request(options, function(res) { + var req = https.request(options, function (res) { var messages = []; res.setEncoding('utf8'); var content = ''; - res.on('data', function(chunk) { + res.on('data', function (chunk) { try { messages.push(JSON.parse(String(chunk))); - if (messages.length === nPets){ + if (messages.length === nPets) { req.abort(); } @@ -114,7 +114,7 @@ var subscribe = function(nPets, queue, username, password, cb) { } }); - res.on('end', function() { + res.on('end', function () { if (messages.length > 0) { cb(null, messages); } else { @@ -126,32 +126,34 @@ var subscribe = function(nPets, queue, username, password, cb) { req.end(); }; -describe('Secure Queues - GET', function() { +describe('Secure Queues - GET', function () { - before(function(done){ + before(function (done) { agent.start(done); }); - after(function(done) { - utils.cleanBBDD(function() { + after(function (done) { + utils.cleanBBDD(function () { agent.stop(done); }); }); - beforeEach(function(done) { - utils.cleanBBDD(function() { + beforeEach(function (done) { + utils.cleanBBDD(function () { //Create Queue var queue = { queue: QUEUE_ID, user: USERNAME, password: PASSWORD }; - postQueue(queue, function(err, res, data) { + postQueue(queue, function (err, res, data) { res.statusCode.should.be.equal(200); var data = JSON.parse(data); data.should.have.property('ok', true); //Feed the queue - var trans = utils.createTransaction(MESSAGE, 'L', [ {id: QUEUE_ID} ]); - pushTrans(trans, function(err, res, data) { + var trans = utils.createTransaction(MESSAGE, 'L', [ + {id: QUEUE_ID} + ]); + pushTrans(trans, function (err, res, data) { res.statusCode.should.be.equal(200); @@ -164,9 +166,9 @@ describe('Secure Queues - GET', function() { }); }); - it('Error is returned when an existing queue is recreated', function(done) { + it('Error is returned when an existing queue is recreated', function (done) { var queue = { queue: QUEUE_ID, user: 'usename2', password: 'password2' }; - postQueue(queue, function(err, res, data) { + postQueue(queue, function (err, res, data) { res.statusCode.should.be.equal(403); @@ -178,9 +180,9 @@ describe('Secure Queues - GET', function() { }) }); - it('GET non-existent secure queue', function(done) { + it('GET non-existent secure queue', function (done) { - get('newQueue', USERNAME, PASSWORD, function(err, res, data) { + get('newQueue', USERNAME, PASSWORD, function (err, res, data) { res.statusCode.should.be.equal(500); data.should.be.equal('ERROR: Secure Queue does not exist'); @@ -190,9 +192,9 @@ describe('Secure Queues - GET', function() { }); - it('GET queue - correct credentials', function(done) { + it('GET queue - correct credentials', function (done) { - get(QUEUE_ID, USERNAME, PASSWORD, function(err, res, data) { + get(QUEUE_ID, USERNAME, PASSWORD, function (err, res, data) { res.statusCode.should.be.equal(200); @@ -203,9 +205,9 @@ describe('Secure Queues - GET', function() { }); }); - it('GET queue - invalid pass', function(done) { + it('GET queue - invalid pass', function (done) { - get(QUEUE_ID, USERNAME, 'invalid' , function(err, res, data) { + get(QUEUE_ID, USERNAME, 'invalid', function (err, res, data) { res.statusCode.should.be.equal(401); data.should.be.equal('Unauthorized'); @@ -214,10 +216,10 @@ describe('Secure Queues - GET', function() { }); }); - it('GET queue - invalid username', function(done) { + it('GET queue - invalid username', function (done) { var user = 'invalid'; - get(QUEUE_ID, user, PASSWORD, function(err, res, data) { + get(QUEUE_ID, user, PASSWORD, function (err, res, data) { res.statusCode.should.be.equal(401); data.should.be.equal('Unauthorized'); @@ -226,9 +228,9 @@ describe('Secure Queues - GET', function() { }); }); - it ('PEEK non-existent secure queue', function(done) { + it('PEEK non-existent secure queue', function (done) { - peek('newQueue', USERNAME, PASSWORD, function(err, res, data) { + peek('newQueue', USERNAME, PASSWORD, function (err, res, data) { res.statusCode.should.be.equal(500); data.should.be.equal('ERROR: Secure Queue does not exist'); @@ -237,9 +239,9 @@ describe('Secure Queues - GET', function() { }); }); - it('PEEK queue - correct credentials', function(done) { + it('PEEK queue - correct credentials', function (done) { - peek(QUEUE_ID, USERNAME, PASSWORD, function(err, res, data) { + peek(QUEUE_ID, USERNAME, PASSWORD, function (err, res, data) { res.statusCode.should.be.equal(200); @@ -257,9 +259,9 @@ describe('Secure Queues - GET', function() { }); }); - it('PEEK queue - invalid pass', function(done) { + it('PEEK queue - invalid pass', function (done) { - peek(QUEUE_ID, USERNAME, 'invalid' , function(err, res, data) { + peek(QUEUE_ID, USERNAME, 'invalid', function (err, res, data) { res.statusCode.should.be.equal(401); data.should.be.equal('Unauthorized'); @@ -268,10 +270,10 @@ describe('Secure Queues - GET', function() { }); }); - it('PEEK queue - invalid username', function(done) { + it('PEEK queue - invalid username', function (done) { var user = 'invalid'; - peek(QUEUE_ID, user, PASSWORD, function(err, res, data) { + peek(QUEUE_ID, user, PASSWORD, function (err, res, data) { res.statusCode.should.be.equal(401); data.should.be.equal('Unauthorized'); @@ -280,9 +282,9 @@ describe('Secure Queues - GET', function() { }); }); - it ('POP non-existent secure queue', function(done) { + it('POP non-existent secure queue', function (done) { - pop('newQueue', USERNAME, PASSWORD, function(err, res, data) { + pop('newQueue', USERNAME, PASSWORD, function (err, res, data) { res.statusCode.should.be.equal(500); data.should.be.equal('ERROR: Secure Queue does not exist'); @@ -291,9 +293,9 @@ describe('Secure Queues - GET', function() { }); }); - it('POP queue - correct credentials', function(done) { + it('POP queue - correct credentials', function (done) { - pop(QUEUE_ID, USERNAME, PASSWORD, function(err, res, data) { + pop(QUEUE_ID, USERNAME, PASSWORD, function (err, res, data) { res.statusCode.should.be.equal(200); @@ -311,29 +313,29 @@ describe('Secure Queues - GET', function() { }); }); - it('POP queue - admin credentials', function(done) { + it('POP queue - admin credentials', function (done) { - pop(QUEUE_ID, "popbox", "itscool", function(err, res, data) { + pop(QUEUE_ID, "popbox", "itscool", function (err, res, data) { - res.statusCode.should.be.equal(200); + res.statusCode.should.be.equal(200); - var data = JSON.parse(data); - data.should.have.property('ok', true); + var data = JSON.parse(data); + data.should.have.property('ok', true); - data.should.have.property('data'); - data.data.should.include(MESSAGE); - data.data.length.should.be.equal(1); + data.should.have.property('data'); + data.data.should.include(MESSAGE); + data.data.length.should.be.equal(1); - data.transactions.should.include(transID); - data.transactions.length.should.be.equal(1); + data.transactions.should.include(transID); + data.transactions.length.should.be.equal(1); - done(); - }); + done(); }); + }); - it('POP queue - invalid pass', function(done) { + it('POP queue - invalid pass', function (done) { - pop(QUEUE_ID, USERNAME, 'invalid' , function(err, res, data) { + pop(QUEUE_ID, USERNAME, 'invalid', function (err, res, data) { res.statusCode.should.be.equal(401); data.should.be.equal('Unauthorized'); @@ -342,10 +344,10 @@ describe('Secure Queues - GET', function() { }); }); - it('POP queue - invalid username', function(done) { + it('POP queue - invalid username', function (done) { var user = 'invalid'; - pop(QUEUE_ID, user, PASSWORD, function(err, res, data) { + pop(QUEUE_ID, user, PASSWORD, function (err, res, data) { res.statusCode.should.be.equal(401); data.should.be.equal('Unauthorized'); @@ -354,9 +356,9 @@ describe('Secure Queues - GET', function() { }); }); - it ('SUBSCRIBE non-existent secure queue', function(done) { + it('SUBSCRIBE non-existent secure queue', function (done) { - subscribe(1, 'newQueue', USERNAME, PASSWORD, function(err, res, data) { + subscribe(1, 'newQueue', USERNAME, PASSWORD, function (err, res, data) { res.statusCode.should.be.equal(500); data.should.be.equal('ERROR: Secure Queue does not exist'); @@ -365,9 +367,9 @@ describe('Secure Queues - GET', function() { }); }); - it('SUBSCRIBE queue - correct credentials', function(done) { + it('SUBSCRIBE queue - correct credentials', function (done) { - subscribe(1, QUEUE_ID, USERNAME, PASSWORD, function(err, messages) { + subscribe(1, QUEUE_ID, USERNAME, PASSWORD, function (err, messages) { var message = messages.pop(); message.should.have.property('ok', true); @@ -382,27 +384,27 @@ describe('Secure Queues - GET', function() { done(); }); }); - it('SUBSCRIBE queue - admin credentials', function(done) { + it('SUBSCRIBE queue - admin credentials', function (done) { - subscribe(1, QUEUE_ID, "popbox", "itscool", function(err, messages) { + subscribe(1, QUEUE_ID, "popbox", "itscool", function (err, messages) { - var message = messages.pop(); - message.should.have.property('ok', true); + var message = messages.pop(); + message.should.have.property('ok', true); - message.should.have.property('data'); - message.data.should.include(MESSAGE); - message.data.length.should.be.equal(1); + message.should.have.property('data'); + message.data.should.include(MESSAGE); + message.data.length.should.be.equal(1); - message.transactions.should.include(transID); - message.transactions.length.should.be.equal(1); + message.transactions.should.include(transID); + message.transactions.length.should.be.equal(1); - done(); - }); + done(); }); + }); - it('SUBSCRIBE queue - invalid pass', function(done) { + it('SUBSCRIBE queue - invalid pass', function (done) { - subscribe(1, QUEUE_ID, USERNAME, 'invalid' , function(err, res, data) { + subscribe(1, QUEUE_ID, USERNAME, 'invalid', function (err, res, data) { res.statusCode.should.be.equal(401); data.should.be.equal('Unauthorized'); @@ -411,10 +413,10 @@ describe('Secure Queues - GET', function() { }); }); - it('SUBSCRIBE queue - invalid username', function(done) { + it('SUBSCRIBE queue - invalid username', function (done) { var user = 'invalid'; - subscribe(1, QUEUE_ID, user, PASSWORD, function(err, res, data) { + subscribe(1, QUEUE_ID, user, PASSWORD, function (err, res, data) { res.statusCode.should.be.equal(401); data.should.be.equal('Unauthorized'); diff --git a/test/unit/subscriptionTest.js b/test/unit/subscriptionTest.js index a642792..8dd86c2 100644 --- a/test/unit/subscriptionTest.js +++ b/test/unit/subscriptionTest.js @@ -3,11 +3,13 @@ var http = require('http'); var utils = require('./../utils.js'); var agent = require('../../.'); -var pushTransaction = function(queue, message, cb) { +var pushTransaction = function (queue, message, cb) { 'use strict'; - var transaction = utils.createTransaction(message, 'H', [{'id': queue}]); - utils.pushTransaction(transaction, function(error, response, data) { + var transaction = utils.createTransaction(message, 'H', [ + {'id': queue} + ]); + utils.pushTransaction(transaction, function (error, response, data) { should.not.exist(error); response.statusCode.should.be.equal(200); @@ -20,7 +22,7 @@ var pushTransaction = function(queue, message, cb) { function checkState(id, payload, queueID, expectedState, cb) { 'use strict'; - utils.getTransState(id, expectedState, function(error, response, data) { + utils.getTransState(id, expectedState, function (error, response, data) { should.not.exist(error); response.statusCode.should.be.equal(200); @@ -39,40 +41,40 @@ function checkState(id, payload, queueID, expectedState, cb) { }); }; -describe('Subscription Test', function() { +describe('Subscription Test', function () { - beforeEach(function(done) { + beforeEach(function (done) { utils.cleanBBDD(done); }); - before(function(done){ + before(function (done) { agent.start(done); }); - after(function(done) { - utils.cleanBBDD(function() { + after(function (done) { + utils.cleanBBDD(function () { agent.stop(done); }); }); - var normalSubscription = function(subscriber, done) { + var normalSubscription = function (subscriber, done) { var QUEUE_ID = 'subsQ', MESSAGE_PREFIX = 'message', N_PETS = 3, transactionIDList = []; //Subscribe to the queue - subscriber(N_PETS, QUEUE_ID, function(err, messages) { + subscriber(N_PETS, QUEUE_ID, function (err, messages) { var interval; should.not.exist(err); - var payloads = messages.map(function(msg) { + var payloads = messages.map(function (msg) { return msg && msg.data[0]; }); - var transactions = messages.map(function(msg) { + var transactions = messages.map(function (msg) { return msg && msg.transactions[0]; }); @@ -81,7 +83,7 @@ describe('Subscription Test', function() { } //It's necessary wait request to finish to check returned transactions - var testTransactionList = function() { + var testTransactionList = function () { if (transactionIDList.length === N_PETS) { clearInterval(interval); @@ -101,20 +103,20 @@ describe('Subscription Test', function() { //Insert transactions for (var i = 0; i < N_PETS; i++) { - pushTransaction(QUEUE_ID, MESSAGE_PREFIX + i, function(err, data) { + pushTransaction(QUEUE_ID, MESSAGE_PREFIX + i, function (err, data) { transactionIDList.push(data); }) } }; - var repush = function(subscriber, done) { + var repush = function (subscriber, done) { var QUEUE_ID = 'subsQ', MESSAGE = 'message', MESSAGE_PENDING = 'busy', transactionID, transactionIDPending; //Subscribe to the queue - subscriber(1, QUEUE_ID, function(err, messages) { + subscriber(1, QUEUE_ID, function (err, messages) { should.not.exist(err); @@ -127,15 +129,15 @@ describe('Subscription Test', function() { message['transactions'].should.include(transactionID); //Insert a new transaction - pushTransaction(QUEUE_ID, MESSAGE_PENDING, function(err, data) { + pushTransaction(QUEUE_ID, MESSAGE_PENDING, function (err, data) { transactionIDPending = data; //Check if the transaction is still queued //Timeout is needed because transaction needs to be repushed into the queue - setTimeout(function() { - checkState(transactionIDPending, MESSAGE_PENDING, QUEUE_ID, 'Pending', function() { - subscriber(1, QUEUE_ID, function(err, messages) { + setTimeout(function () { + checkState(transactionIDPending, MESSAGE_PENDING, QUEUE_ID, 'Pending', function () { + subscriber(1, QUEUE_ID, function (err, messages) { should.not.exist(err); var message = messages[0]; @@ -146,7 +148,7 @@ describe('Subscription Test', function() { message['transactions'].length.should.be.equal(1); message['transactions'].should.include(transactionIDPending); - checkState(transactionIDPending, MESSAGE_PENDING, QUEUE_ID, 'Delivered', function() { + checkState(transactionIDPending, MESSAGE_PENDING, QUEUE_ID, 'Delivered', function () { done(); }); }); @@ -156,33 +158,33 @@ describe('Subscription Test', function() { }); //Insert transaction - pushTransaction(QUEUE_ID, MESSAGE, function(err, data) { + pushTransaction(QUEUE_ID, MESSAGE, function (err, data) { transactionID = data; }); } - describe('HTTP', function() { + describe('HTTP', function () { - it('Should receive all transaction in less than two seconds', function(done) { + it('Should receive all transaction in less than two seconds', function (done) { normalSubscription(utils.subscribe, done); }); - it('When connection is closed, no transactions can be missed', function(done) { + it('When connection is closed, no transactions can be missed', function (done) { repush(utils.subscribe, done); }); }); - describe('Socket IO', function() { + describe('Socket IO', function () { - var subscriber = function(N_PETS, QUEUE_ID, cb) { + var subscriber = function (N_PETS, QUEUE_ID, cb) { var messages = []; var iosocket = require('socket.io-client').connect('http://localhost:3001', {'force new connection': true}); - iosocket.on('connect', function(data) { + iosocket.on('connect', function (data) { iosocket.emit('subscribe', QUEUE_ID); }); - iosocket.on('data', function(data) { + iosocket.on('data', function (data) { messages.push(data); if (messages.length === N_PETS) { iosocket.disconnect(); @@ -191,11 +193,11 @@ describe('Subscription Test', function() { }); } - it('Should receive all transaction in less than two seconds', function(done) { + it('Should receive all transaction in less than two seconds', function (done) { normalSubscription(subscriber, done); }); - it('When connection is closed, no transactions can be missed', function(done) { + it('When connection is closed, no transactions can be missed', function (done) { repush(subscriber, done); }); diff --git a/utils/ack.js b/utils/ack.js index 2cdf1ee..1f31692 100644 --- a/utils/ack.js +++ b/utils/ack.js @@ -12,31 +12,30 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 3001, parseInt) + .option('-P, --port [number]', 'port, 3001 by default', 3001, parseInt) .option('-Q, --queue [id]', 'queue', "Q1") .option('-T, --trans [list]', 'list of transactions separated by comma', list) .option('-X, --secure', 'use HTTPS', false) .parse(process.argv); -url = util.format('%s://%s:%d/queue/%s/ack', program.secure?'https':'http', program.host, program.port, program.queue); +url = util.format('%s://%s:%d/queue/%s/ack', program.secure ? 'https' : 'http', program.host, program.port, program.queue); trans = { - 'transactions': program.trans + 'transactions': program.trans }; console.log('url\n', url); console.log('trans\n', trans); -request.post({url : url, json: trans}, function(err, res, body) { - if(err) { - console.log('error\n', err); - } - else { - console.log('statusCode\n', res.statusCode); - console.log('headers\n', res.headers); - console.log('body\n', body); +request.post({url: url, json: trans}, function (err, res, body) { + if (err) { + console.log('error\n', err); + } else { + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body\n', body); } }); function range(val) { - return val.split('..').map(Number); + return val.split('..').map(Number); } function list(val) { - return val.split(','); + return val.split(','); } diff --git a/utils/createSecure.js b/utils/createSecure.js index b7f53f8..b65cf49 100755 --- a/utils/createSecure.js +++ b/utils/createSecure.js @@ -12,31 +12,31 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 3002, parseInt) + .option('-P, --port [number]', 'port, 3002 by default', 3002, parseInt) .option('-Q, --queue [id]', 'queue', "Q1") - .option('-U, --user [id:passwd]', 'username','popbox:itscool') + .option('-U, --user [id:passwd]', 'username', 'popbox:itscool') .parse(process.argv); url = util.format('https://%s:%d/queue', program.host, program.port); data = { - queue: program.queue, - user: program.user.split(":")[0], - password: program.user.split(":")[1] + queue: program.queue, + user: program.user.split(":")[0], + password: program.user.split(":")[1] }; console.log('url\n', url); console.log('data\n', data); -request.post({url : url, json: data}, function(err, res, body) { - if(err) { - console.log('error\n', err); +request.post({url: url, json: data}, function (err, res, body) { + if (err) { + console.log('error\n', err); } else { - console.log('statusCode\n', res.statusCode); - console.log('headers\n', res.headers); - console.log('body\n', body); + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body\n', body); } }); function range(val) { - return val.split('..').map(Number); + return val.split('..').map(Number); } function list(val) { - return val.split(','); + return val.split(','); } diff --git a/utils/group.js b/utils/group.js index d69b578..2502891 100755 --- a/utils/group.js +++ b/utils/group.js @@ -12,30 +12,30 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 3001, parseInt) + .option('-P, --port [number]', 'port, 3001 by default', 3001, parseInt) .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) .option('-G, --group [id]', 'group to be created', ["G1"]) .option('-X, --secure', 'use HTTPS', false) .parse(process.argv); -url = util.format('%s://%s:%d/group', program.secure?'https':'http', program.host, program.port); +url = util.format('%s://%s:%d/group', program.secure ? 'https' : 'http', program.host, program.port); trans = { - 'name': program.group, - 'queues': program.queues}; + 'name': program.group, + 'queues': program.queues}; console.log('url\n', url); console.log('data\n', trans); -request.post({url : url, json: trans}, function(err, res, body) { - if(err) { - console.log('error\n', err); +request.post({url: url, json: trans}, function (err, res, body) { + if (err) { + console.log('error\n', err); } else { - console.log('statusCode\n', res.statusCode); - console.log('headers\n', res.headers); - console.log('body\n', body); + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body\n', body); } }); function range(val) { - return val.split('..').map(Number); + return val.split('..').map(Number); } function list(val) { - return val.split(','); + return val.split(','); } diff --git a/utils/pop.js b/utils/pop.js index c975968..391a70c 100755 --- a/utils/pop.js +++ b/utils/pop.js @@ -17,53 +17,53 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 3001, parseInt) + .option('-P, --port [number]', 'port, 3001 by default', 3001, parseInt) .option('-Q, --queue [id]', 'queue', "Q1") .option('-R, --reliable', 'reliable extraction', false) .option('-S, --subscribe', 'subscribe', false) .option('-T, --timeout [secs]', 'timeout') .option('-A, --timeoutACK [secs', 'ACK timeout') - .option('-U, --user [id:passwd]', 'username','popbox:itscool') + .option('-U, --user [id:passwd]', 'username', 'popbox:itscool') .option('-X, --secure', 'use HTTPS', false) .parse(process.argv); action = program.subscribe ? 'subscribe' : 'pop'; protocol = http; if (program.reliable) { - action += 'rel'; + action += 'rel'; } path = util.format('/queue/%s/%s', program.queue, action); if (program.timeout) { - query = { timeout: program.timeout} + query = { timeout: program.timeout} } if (program.timeoutACK) { - query = query || {}; - query.timeoutACK = program.timeoutACK; + query = query || {}; + query.timeoutACK = program.timeoutACK; } -if(query){ - path += '?'+qs.stringify(query); +if (query) { + path += '?' + qs.stringify(query); } console.log('path\n', path); options = {method: 'POST', host: program.host, port: program.port, path: path}; -if(program.secure) { - protocol = https; - options.auth = program.user; +if (program.secure) { + protocol = https; + options.auth = program.user; } -protocol.request(options, function (res) { - console.log('statusCode\n', res.statusCode); - console.log('headers\n', res.headers); - console.log('body'); - res.setEncoding('utf8'); - res.on('data', function(data) { - console.log(data); - }); - res.on('err', function(err) { - console.err('error\n', err); - }); +protocol.request(options,function (res) { + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body'); + res.setEncoding('utf8'); + res.on('data', function (data) { + console.log(data); + }); + res.on('err', function (err) { + console.err('error\n', err); + }); }).end(); function range(val) { - return val.split('..').map(Number); + return val.split('..').map(Number); } function list(val) { - return val.split(','); + return val.split(','); } diff --git a/utils/provision.js b/utils/provision.js index b1ed62e..6c77b80 100755 --- a/utils/provision.js +++ b/utils/provision.js @@ -12,46 +12,46 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 3001, parseInt) - .option('-M, --message [text]', 'message','¡hola!\n') + .option('-P, --port [number]', 'port, 3001 by default', 3001, parseInt) + .option('-M, --message [text]', 'message', '¡hola!\n') .option('-Q, --queues [list]', 'list of queues separated by comma', list, ["Q1"]) - .option('-G, --groups [list]', 'list of groups separated by comma',list) + .option('-G, --groups [list]', 'list of groups separated by comma', list) .option('-C, --callback [url]', 'callback URL') .option('-E, --expiration [url]', 'expiration delay') .option('-X, --secure', 'use HTTPS', false) .parse(process.argv); -url = util.format('%s://%s:%d/trans', program.secure?'https':'http', program.host, program.port); +url = util.format('%s://%s:%d/trans', program.secure ? 'https' : 'http', program.host, program.port); trans = { - 'payload': program.message, - 'priority': 'H', - 'queue': []}; -if(program.expiration) { - trans.expirationDelay = program.expiration; + 'payload': program.message, + 'priority': 'H', + 'queue': []}; +if (program.expiration) { + trans.expirationDelay = program.expiration; } -if(program.groups) { - trans.groups = program.groups; +if (program.groups) { + trans.groups = program.groups; } -if(program.callback) { - trans.callback = program.callback; +if (program.callback) { + trans.callback = program.callback; } -for(i = 0; i < program.queues.length; i++) { - trans.queue.push({id: program.queues[i]}); +for (i = 0; i < program.queues.length; i++) { + trans.queue.push({id: program.queues[i]}); } console.log('url\n', url); console.log('trans\n', trans); -request.post({url : url, json: trans}, function(err, res, body) { - if(err) { - console.log('error\n', err); +request.post({url: url, json: trans}, function (err, res, body) { + if (err) { + console.log('error\n', err); } else { - console.log('statusCode\n', res.statusCode); - console.log('headers\n', res.headers); - console.log('body\n', body); + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body\n', body); } }); function range(val) { - return val.split('..').map(Number); + return val.split('..').map(Number); } function list(val) { - return val.split(','); + return val.split(','); } diff --git a/utils/trans_info.js b/utils/trans_info.js index b3c3de3..ba5a15d 100755 --- a/utils/trans_info.js +++ b/utils/trans_info.js @@ -12,31 +12,32 @@ var program = require('commander'), program .version('0.0.1') .option('-H, --host [hostname]', 'host, \'localhost\' by default', 'localhost') - .option('-P, --port [number]', 'port, 5001 by default', 3001, parseInt) + .option('-P, --port [number]', 'port, 3001 by default', 3001, parseInt) .option('-T, --trans [id]', 'transaction') .option('-X, --secure', 'use HTTPS', false) .parse(process.argv); url = util.format('%s://%s:%d/trans/%s', program.secure ? 'https' : 'http', program.host, program.port, program.trans); reqAux(url, function () { - reqAux(url + '/state', function(){}); + reqAux(url + '/state', function () { + }); }); function reqAux(url, done) { - console.log('url\n', url); - request.get({url: url, headers: {'Accept': 'application/json'}}, function (err, res, body) { - if (err) { - console.log('error\n', err); - } - else { - console.log('statusCode\n', res.statusCode); - console.log('headers\n', res.headers); - console.log('body\n', body); - } - done(err); - }); + console.log('url\n', url); + request.get({url: url, headers: {'Accept': 'application/json'}}, function (err, res, body) { + if (err) { + console.log('error\n', err); + } + else { + console.log('statusCode\n', res.statusCode); + console.log('headers\n', res.headers); + console.log('body\n', body); + } + done(err); + }); } function range(val) { - return val.split('..').map(Number); + return val.split('..').map(Number); } function list(val) { - return val.split(','); + return val.split(','); }