UNPKG

off-sqs-debearloper

Version:

Helper app that manages SQS and RabbitMQ transactions

139 lines (115 loc) 3.51 kB
var exec = require('exec'), AWS = require('aws-sdk'), OffSqs = require('../lib'), config = require('../lib/config'), myAwsConfigFile = require('../aws-config.json'), listQueues = require('../lib/listQueues'), queueSuffix = (Math.random() * (60 - 1) + 1).toFixed(0), queuesSystem = "test-SQS", queueName = queuesSystem + "-" + queueSuffix; if(config.env.development){ queuesSystem = "test-rabbit"; queueName = queuesSystem + "-" + queueSuffix; }; describe('🐗 Send from '+ queuesSystem, function(){ var queue = queueName, objectSend = {"huba": "LIN"}, objectReceived = {}; before(function(done){ var offSqs = new OffSqs(); offSqs.configure({ awsConfigFile: myAwsConfigFile }); offSqs.sender(queue, objectSend); var callback = function(message){ objectReceived = message done(); }; offSqs.receiver(queue, callback); }); //delete the queue after the test. after(function(done){ if(queuesSystem == "test-SQS"){ AWS.config.update(myAwsConfigFile); var sqs = new AWS.SQS(); listQueues(queueName).then(function(url){ sqs.deleteQueue({ QueueUrl: url }, function(err, data){ if(!err){ done(); }; }); }); }else{ done(); }; }); it('an array', function(done){ if(Array.isArray(objectReceived)){ done(); }; }); it('an array containing a string', function(done){ if(typeof objectReceived[0] === "string"){ done(); }; }); it('an array containing a string with JSON syntax', function(done){ if(typeof JSON.parse(objectReceived[0]) === "object"){ done(); }; }); }); describe('🐗 Send from '+ queuesSystem + " using two queues", function(){ var queue2 = queueName + "-2", objectSend2 = {"wild": "BOAR"}, objectReceived2 = {}, queue3 = queueName + "-3", objectSend3 = {"furcifer": "PARDALIS"}, objectReceived3 = {}; before(function(done){ var offSqs2 = new OffSqs(); offSqs2.configure({ awsConfigFile: myAwsConfigFile }); offSqs2.sender(queue2, objectSend2); var callback2 = function(message){ objectReceived2 = message done(); }; offSqs2.receiver(queue2, callback2); }); beforeEach(function(done){ var offSqs3 = new OffSqs(); offSqs3.configure({ awsConfigFile: myAwsConfigFile }); offSqs3.sender(queue3, objectSend3); var callback3 = function(message){ objectReceived3 = message done(); }; offSqs3.receiver(queue3, callback3); }); //delete the queue after the test. after(function(done){ if(queuesSystem == "test-SQS"){ AWS.config.update(myAwsConfigFile); var sqs = new AWS.SQS(); //REFACTOR !!!!!! listQueues(queueName+"-2").then(function(url){ sqs.deleteQueue({ QueueUrl: url }, function(err, data){ }); }); listQueues(queueName+"-3").then(function(url){ sqs.deleteQueue({ QueueUrl: url }, function(err, data){ if(!err){ done(); }; }); }); }else{ done(); }; }); it('messages come to their respective queues', function(done){ if(JSON.stringify(JSON.parse(objectReceived2)) === '{"wild":"BOAR"}' && JSON.stringify(JSON.parse(objectReceived3)) === '{"furcifer":"PARDALIS"}'){ done(); } }); });