From db748a1333d8075b940b57fe6dcb27681399a91e Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Tue, 21 Jul 2020 21:14:39 +0200 Subject: [PATCH] Implement new api healthcheck. #3281 --- lib/extension/bridge.js | 5 +++++ test/bridge.test.js | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/extension/bridge.js b/lib/extension/bridge.js index 1658b2db8..7ecb29302 100644 --- a/lib/extension/bridge.js +++ b/lib/extension/bridge.js @@ -24,6 +24,7 @@ class Bridge extends Extension { 'config/elapsed': this.configElapsed.bind(this), 'config/log_level': this.configLogLevel.bind(this), 'touchlink/factory_reset': this.touchlinkFactoryReset.bind(this), + 'health_check': this.healthCheck.bind(this), }; } @@ -111,6 +112,10 @@ class Bridge extends Extension { return this.removeEntity('group', message); } + async healthCheck(message) { + return utils.getResponse(message, {healthy: true}, null); + } + async groupAdd(message) { if (typeof message === 'object' && !message.hasOwnProperty('friendly_name')) { throw new Error(`Invalid payload`); diff --git a/test/bridge.test.js b/test/bridge.test.js index a2a2e2c58..a4d1338c2 100644 --- a/test/bridge.test.js +++ b/test/bridge.test.js @@ -220,6 +220,17 @@ describe('Bridge', () => { await flushPromises(); }); + it('Should allow a healthcheck', async () => { + MQTT.publish.mockClear(); + MQTT.events.message('zigbee2mqtt/bridge/request/health_check', ''); + await flushPromises(); + expect(MQTT.publish).toHaveBeenCalledWith( + 'zigbee2mqtt/bridge/response/health_check', + JSON.stringify({"data":{"healthy": true},"status":"ok"}), + {retain: false, qos: 0}, expect.any(Function) + ); + }); + it('Should allow to remove device by string', async () => { const device = zigbeeHerdsman.devices.bulb; controller.state.state = {'0x000b57fffec6a5b3': {brightness: 100}};