From 96477873be9776fd9d99b452a3df68caadc694ab Mon Sep 17 00:00:00 2001 From: Pierre-Gilles Leymarie Date: Tue, 14 Apr 2020 11:05:59 +0200 Subject: [PATCH] Add MQTT topic to create device --- server/services/mqtt/lib/handler/handleGladysMessage.js | 6 ++++-- server/test/services/mqtt/lib/handleNewMessage.test.js | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/server/services/mqtt/lib/handler/handleGladysMessage.js b/server/services/mqtt/lib/handler/handleGladysMessage.js index 532e1e1b50..dde6ae50f9 100644 --- a/server/services/mqtt/lib/handler/handleGladysMessage.js +++ b/server/services/mqtt/lib/handler/handleGladysMessage.js @@ -11,8 +11,10 @@ const logger = require('../../../../utils/logger'); */ function handleGladysMessage(topic, message) { const parsedTopic = topic.split('/'); - // Topic = gladys/master/device/:device_external_id/feature/:device_feature_external_id/state - if (topic.startsWith('gladys/master/device/')) { + if (topic === 'gladys/master/device/create') { + this.gladys.event.emit(EVENTS.DEVICE.NEW, JSON.parse(message)); + } else if (topic.startsWith('gladys/master/device/')) { + // Topic = gladys/master/device/:device_external_id/feature/:device_feature_external_id/state if (!parsedTopic[5]) { throw new BadParameters('Device feature external_id is required'); } diff --git a/server/test/services/mqtt/lib/handleNewMessage.test.js b/server/test/services/mqtt/lib/handleNewMessage.test.js index 2806a0e007..2b5074836f 100644 --- a/server/test/services/mqtt/lib/handleNewMessage.test.js +++ b/server/test/services/mqtt/lib/handleNewMessage.test.js @@ -34,6 +34,12 @@ describe('Mqtt handle message', () => { assert.notCalled(gladys.event.emit); }); + it('should create device', () => { + mqttHandler.handleNewMessage('gladys/master/device/create', '{}'); + + assert.calledWith(gladys.event.emit, EVENTS.DEVICE.NEW, {}); + }); + it('should update device state', () => { mqttHandler.handleNewMessage( 'gladys/master/device/my_device_external_id/feature/my_feature_external_id/state',