ascoltatori
Version:
The pub/sub library for node backed by Redis, MongoDB, AMQP (RabbitMQ), ZeroMQ, Kafka, MQTT (Mosquitto) or just plain node!
115 lines (92 loc) • 2.41 kB
JavaScript
var steed = require('steed')();
describeAscoltatore("MQTT", function() {
afterEach(function(done) {
this.instance.close(function() {
done();
});
delete this.instance;
});
it("should sync two instances", function(done) {
var other = new ascoltatori.MQTTAscoltatore(MQTTSettings());
var that = this;
steed.series([
function(cb) {
other.on("ready", cb);
},
function(cb) {
that.instance.subscribe("hello", wrap(done), cb);
},
function(cb) {
other.publish("hello", null, cb);
},
function(cb) {
other.close(cb);
}
]);
});
it("should publish with options", function(done) {
var that = this;
mqttServer.once('published', function(packet) {
expect(packet.qos).to.eql(0);
expect(packet.retain).to.eql(true);
done();
});
that.instance.publish("hello/123", "42", { qos: 0, retain: true });
});
});
describe("MQTT Reconnect Test", function() {
it("should re-subscribe to topics", function(done) {
this.timeout(3000); // Set the test timeout to 3s
var that = this;
var mosca = require("mosca");
var msgReceived = false;
var moscaOpts = {
port: 6884,
stats: false,
logger: {
level: "fatal"
}
};
var clientOpts = {
json: false,
mqtt: require("mqtt"),
host: "127.0.0.1",
port: 6884
};
var mqttTestServer = new mosca.Server(moscaOpts);
var newClient = new ascoltatori.MQTTAscoltatore(clientOpts);
steed.series([
function(cb) {
newClient.once('ready',cb);
},
function(cb) {
// Subscribe to topic for test
newClient.subscribe('reconnect/test', function() {
newClient.emit('success');
}, cb);
},
// Stop the MQTT server
function(cb) {
mqttTestServer.close(cb);
},
// Start the MQTT server
function(cb) {
mqttTestServer = new mosca.Server(moscaOpts, cb);
},
// Setup listener and send message
function(cb) {
newClient.once('success', function() {
msgReceived = true;
cb();
});
newClient.once('ready', function(){
newClient.publish('reconnect/test', 'blah');
});
},
], function() {
if (msgReceived) {
done();
}
});
});
});