off-sqs-debearloper
Version:
Helper app that manages SQS and RabbitMQ transactions
139 lines (115 loc) • 3.51 kB
JavaScript
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();
}
});
});