Skip to content

Commit

Permalink
Fix bug in MQTT over Websockets connection error
Browse files Browse the repository at this point in the history
  • Loading branch information
pierreca committed Mar 11, 2017
1 parent b5425f6 commit 68cf52d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 7 deletions.
2 changes: 1 addition & 1 deletion device/transport/mqtt/lib/mqtt-translate-error.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ var translateError = function translateError(mqttError) {

/* Codes_SRS_NODE_DEVICE_MQTT_ERRORS_18_011: [** `translateError` shall return an `Error` if none of the other string rules match **]** */
else {
err = new Error('mqtt.js returned ' + mqttError.message + ' error');
err = mqttError;
}

err.transportError = mqttError;
Expand Down
2 changes: 1 addition & 1 deletion device/transport/mqtt/lib/mqtt_base.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ MqttBase.prototype.connect = function (config, done) {
var self = this;

var errCallback = function (error) {
var err = error || new errors.NotConnectedError(null, 'Unable to establish a connection');
var err = error || new errors.NotConnectedError('Unable to establish a connection');
self.client.removeListener('close', errCallback);
self.client.removeListener('offline', errCallback);
self.client.removeListener('disconnect', errCallback);
Expand Down
17 changes: 12 additions & 5 deletions e2etests/test/authentication.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ var pem = require('pem');

var UnauthorizedError = require('azure-iot-common').errors.UnauthorizedError;
var DeviceNotFoundError = require('azure-iot-common').errors.DeviceNotFoundError;
var NotConnectedError = require('azure-iot-common').errors.NotConnectedError;
var Message = require('azure-iot-common').Message;
var Registry = require('azure-iothub').Registry;
var ServiceConnectionString = require('azure-iothub').ConnectionString;
Expand Down Expand Up @@ -54,8 +55,11 @@ module.exports = function authentication_tests(hubConnectionString) {
var invalidConnectionString = DeviceConnectionString.createWithSharedAccessKey(hostName, testDeviceId, invalidPrimaryKey);
var deviceClient = DeviceClient.fromConnectionString(invalidConnectionString, Transport);
deviceClient.sendEvent(new Message('testMessage'), function(err) {
assert.instanceOf(err, UnauthorizedError);
testCallback();
if(err instanceof UnauthorizedError || err instanceof NotConnectedError) {
testCallback();
} else {
testCallback(err);
}
});
});
});
Expand All @@ -68,8 +72,11 @@ module.exports = function authentication_tests(hubConnectionString) {
var expiredSASToken = DeviceSAS.create(hostName, testDeviceId, testDeviceKey, yesterday).toString();
var deviceClient = DeviceClient.fromSharedAccessSignature(expiredSASToken, Transport);
deviceClient.sendEvent(new Message('testMessage'), function(err) {
assert.instanceOf(err, UnauthorizedError);
testCallback();
if(err instanceof UnauthorizedError || err instanceof NotConnectedError) {
testCallback();
} else {
testCallback(err);
}
});
});
});
Expand All @@ -88,7 +95,7 @@ module.exports = function authentication_tests(hubConnectionString) {
var connectionString = DeviceConnectionString.createWithSharedAccessKey(hostName, deviceIdConfig.id, testDeviceKey);
var deviceClient = DeviceClient.fromConnectionString(connectionString, Transport);
deviceClient.sendEvent(new Message('testMessage'), function(err) {
if (err instanceof UnauthorizedError || err instanceof DeviceNotFoundError) {
if (err instanceof UnauthorizedError || err instanceof DeviceNotFoundError || err instanceof NotConnectedError) {
// AMQP and MQTT translate to Unauthorized but HTTP to DeviceNotFound
testCallback();
} else {
Expand Down

0 comments on commit 68cf52d

Please sign in to comment.