diff --git a/lib/extension/bridge.js b/lib/extension/bridge.js index 76361e39..55103c85 100644 --- a/lib/extension/bridge.js +++ b/lib/extension/bridge.js @@ -117,11 +117,11 @@ class Bridge extends Extension { } const friendlyName = typeof message === 'object' ? message.friendly_name : message; - const ID = typeof message === 'object' && message.hasOwnProperty('ID') ? message.ID : null; + const ID = typeof message === 'object' && message.hasOwnProperty('id') ? message.id : null; const group = settings.addGroup(friendlyName, ID); this.zigbee.createGroup(group.ID); this.publishGroups(); - return utils.getResponse(message, {friendly_name: group.friendlyName, ID: group.ID}, null); + return utils.getResponse(message, {friendly_name: group.friendlyName, id: group.ID}, null); } async deviceRename(message) { @@ -202,11 +202,11 @@ class Bridge extends Extension { } changeEntityOptions(entityType, message) { - if (typeof message !== 'object' || !message.hasOwnProperty('ID') || !message.hasOwnProperty('options')) { + if (typeof message !== 'object' || !message.hasOwnProperty('id') || !message.hasOwnProperty('options')) { throw new Error(`Invalid payload`); } - const ID = message.ID; + const ID = message.id; const entity = this.getEntity(entityType, ID); settings.changeEntityOptions(ID, message.options); const cleanup = (o) => { @@ -215,7 +215,7 @@ class Bridge extends Extension { }; const oldOptions = cleanup(entity.settings); const newOptions = cleanup(settings.getEntity(ID)); - return utils.getResponse(message, {from: oldOptions, to: newOptions, ID}, null); + return utils.getResponse(message, {from: oldOptions, to: newOptions, id: ID}, null); } renameEntity(entityType, message) { @@ -247,7 +247,7 @@ class Bridge extends Extension { } async removeEntity(entityType, message) { - const ID = typeof message === 'object' ? message.ID : message.trim(); + const ID = typeof message === 'object' ? message.id : message.trim(); const entity = this.getEntity(entityType, ID); let ban = false; @@ -302,10 +302,10 @@ class Bridge extends Extension { if (entity.type === 'device') { this.publishDevices(); - return utils.getResponse(message, {ID, ban: ban, force: force}, null); + return utils.getResponse(message, {id: ID, ban: ban, force: force}, null); } else { this.publishGroups(); - return utils.getResponse(message, {ID, force: force}, null); + return utils.getResponse(message, {id: ID, force: force}, null); } } catch (error) { throw new Error( @@ -353,7 +353,7 @@ class Bridge extends Extension { friendly_name: resolved.name, definition: definitionPayload, power_source: device.powerSource, - software_build_ID: device.softwareBuildID, + software_build_id: device.softwareBuildID, date_code: device.dateCode, interviewing: device.interviewing, interview_completed: device.interviewCompleted, @@ -367,7 +367,7 @@ class Bridge extends Extension { const groups = this.zigbee.getGroups().map((group) => { const resolved = this.zigbee.resolveEntity(group); return { - ID: group.groupID, + id: group.groupID, friendly_name: resolved.name, members: group.members.map((m) => { return { diff --git a/lib/extension/configure.js b/lib/extension/configure.js index bc6c9261..79ebad71 100644 --- a/lib/extension/configure.js +++ b/lib/extension/configure.js @@ -63,7 +63,7 @@ class Configure extends Extension { this.configure(resolvedEntity, true); } else if (topic === this.topic) { message = utils.parseJSON(message, message); - const ID = typeof message === 'object' && message.hasOwnProperty('ID') ? message.ID : message; + const ID = typeof message === 'object' && message.hasOwnProperty('id') ? message.id : message; let error = null; const resolvedEntity = this.zigbee.resolveEntity(ID); @@ -79,7 +79,7 @@ class Configure extends Extension { } } - const response = utils.getResponse(message, {ID}, error); + const response = utils.getResponse(message, {id: ID}, error); await this.mqtt.publish(`bridge/response/device/configure`, JSON.stringify(response)); } } diff --git a/lib/extension/otaUpdate.js b/lib/extension/otaUpdate.js index a28f7472..0be29313 100644 --- a/lib/extension/otaUpdate.js +++ b/lib/extension/otaUpdate.js @@ -94,10 +94,10 @@ class OTAUpdate extends Extension { } message = utils.parseJSON(message, message); - const ID = typeof message === 'object' && message.hasOwnProperty('ID') ? message.ID : message; + const ID = typeof message === 'object' && message.hasOwnProperty('id') ? message.id : message; const resolvedEntity = this.zigbee.resolveEntity(ID); const type = topic.substring(topic.lastIndexOf('/') + 1); - const responseData = {ID}; + const responseData = {id: ID}; let error = null; if (!resolvedEntity || resolvedEntity.type !== 'device') { diff --git a/lib/util/utils.js b/lib/util/utils.js index e3c365a3..1d1f4a08 100644 --- a/lib/util/utils.js +++ b/lib/util/utils.js @@ -180,7 +180,7 @@ function toSnakeCase(value) { } return value; } else { - return value.replace(/\.?([A-Z])/g, (x, y) => '_' + y.toLowerCase()).replace(/^_/, '').replace('_i_d', '_ID'); + return value.replace(/\.?([A-Z])/g, (x, y) => '_' + y.toLowerCase()).replace(/^_/, '').replace('_i_d', '_id'); } } diff --git a/test/bridge.test.js b/test/bridge.test.js index 65c4cc1c..aa3dba5c 100644 --- a/test/bridge.test.js +++ b/test/bridge.test.js @@ -54,7 +54,7 @@ describe('Bridge', () => { it('Should publish devices on startup', async () => { expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/groups', - JSON.stringify([{"ID":1,"friendly_name":"group_1","members":[]},{"ID":15071,"friendly_name":"group_tradfri_remote","members":[]},{"ID":99,"friendly_name":99,"members":[]},{"ID":11,"friendly_name":"group_with_tradfri","members":[]},{"ID":2,"friendly_name":"group_2","members":[]}]), + JSON.stringify([{"id":1,"friendly_name":"group_1","members":[]},{"id":15071,"friendly_name":"group_tradfri_remote","members":[]},{"id":99,"friendly_name":99,"members":[]},{"id":11,"friendly_name":"group_with_tradfri","members":[]},{"id":2,"friendly_name":"group_2","members":[]}]), { retain: true, qos: 0 }, expect.any(Function) ); @@ -233,7 +233,7 @@ describe('Bridge', () => { expect(MQTT.publish).toHaveBeenCalledWith('zigbee2mqtt/bridge/devices', expect.any(String), expect.any(Object), expect.any(Function)); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/remove', - JSON.stringify({"data":{"ID": "bulb","ban":false,"force":false},"status":"ok"}), + JSON.stringify({"data":{"id": "bulb","ban":false,"force":false},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); expect(settings.get().ban).toStrictEqual([]); @@ -242,7 +242,7 @@ describe('Bridge', () => { it('Should allow to remove device by object ID', async () => { const device = zigbeeHerdsman.devices.bulb; MQTT.publish.mockClear(); - MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', JSON.stringify({ID: "bulb"})); + MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', JSON.stringify({id: "bulb"})); await flushPromises(); expect(device.removeFromNetwork).toHaveBeenCalledTimes(1); expect(device.removeFromDatabase).not.toHaveBeenCalled(); @@ -250,7 +250,7 @@ describe('Bridge', () => { expect(MQTT.publish).toHaveBeenCalledWith('zigbee2mqtt/bridge/devices', expect.any(String), expect.any(Object), expect.any(Function)); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/remove', - JSON.stringify({"data":{"ID": "bulb","ban":false,"force":false},"status":"ok"}), + JSON.stringify({"data":{"id": "bulb","ban":false,"force":false},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -258,7 +258,7 @@ describe('Bridge', () => { it('Should allow to force remove device', async () => { const device = zigbeeHerdsman.devices.bulb; MQTT.publish.mockClear(); - MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', JSON.stringify({ID: "bulb", force: true})); + MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', JSON.stringify({id: "bulb", force: true})); await flushPromises(); expect(device.removeFromDatabase).toHaveBeenCalledTimes(1); expect(device.removeFromNetwork).not.toHaveBeenCalled(); @@ -266,7 +266,7 @@ describe('Bridge', () => { expect(MQTT.publish).toHaveBeenCalledWith('zigbee2mqtt/bridge/devices', expect.any(String), expect.any(Object), expect.any(Function)); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/remove', - JSON.stringify({"data":{"ID": "bulb","ban":false,"force":true},"status":"ok"}), + JSON.stringify({"data":{"id": "bulb","ban":false,"force":true},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -274,14 +274,14 @@ describe('Bridge', () => { it('Should allow to ban device', async () => { const device = zigbeeHerdsman.devices.bulb; MQTT.publish.mockClear(); - MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', JSON.stringify({ID: "bulb", ban: true, force: true})); + MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', JSON.stringify({id: "bulb", ban: true, force: true})); await flushPromises(); expect(device.removeFromDatabase).toHaveBeenCalledTimes(1); expect(settings.getDevice('bulb')).toBeNull(); expect(MQTT.publish).toHaveBeenCalledWith('zigbee2mqtt/bridge/devices', expect.any(String), expect.any(Object), expect.any(Function)); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/remove', - JSON.stringify({"data":{"ID": "bulb","ban":true,"force":true},"status":"ok"}), + JSON.stringify({"data":{"id": "bulb","ban":true,"force":true},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); expect(settings.get().ban).toStrictEqual(["0x000b57fffec6a5b2"]); @@ -297,7 +297,7 @@ describe('Bridge', () => { expect(MQTT.publish).toHaveBeenCalledWith('zigbee2mqtt/bridge/groups', expect.any(String), expect.any(Object), expect.any(Function)); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/group/remove', - JSON.stringify({"data":{"ID": "group_1", "force": false},"status":"ok"}), + JSON.stringify({"data":{"id": "group_1", "force": false},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -305,14 +305,14 @@ describe('Bridge', () => { it('Should allow to force remove group', async () => { const group = zigbeeHerdsman.groups.group_1; MQTT.publish.mockClear(); - MQTT.events.message('zigbee2mqtt/bridge/request/group/remove', JSON.stringify({ID: "group_1", force: true})); + MQTT.events.message('zigbee2mqtt/bridge/request/group/remove', JSON.stringify({id: "group_1", force: true})); await flushPromises(); expect(group.removeFromDatabase).toHaveBeenCalledTimes(1); expect(settings.getGroup('group_1')).toBeNull(); expect(MQTT.publish).toHaveBeenCalledWith('zigbee2mqtt/bridge/groups', expect.any(String), expect.any(Object), expect.any(Function)); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/group/remove', - JSON.stringify({"data":{"ID": "group_1", "force": true},"status":"ok"}), + JSON.stringify({"data":{"id": "group_1", "force": true},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -320,7 +320,7 @@ describe('Bridge', () => { it('Should throw error on removing non-existing device', async () => { const device = zigbeeHerdsman.devices.bulb; MQTT.publish.mockClear(); - MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', JSON.stringify({ID: "non-existing-device"})); + MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', JSON.stringify({id: "non-existing-device"})); await flushPromises(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/remove', @@ -333,7 +333,7 @@ describe('Bridge', () => { const device = zigbeeHerdsman.devices.bulb; MQTT.publish.mockClear(); device.removeFromNetwork.mockImplementationOnce(() => {throw new Error('device timeout')}) - MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', JSON.stringify({ID: "bulb"})); + MQTT.events.message('zigbee2mqtt/bridge/request/device/remove', JSON.stringify({id: "bulb"})); await flushPromises(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/remove', @@ -421,12 +421,12 @@ describe('Bridge', () => { it('Should allow change device options', async () => { MQTT.publish.mockClear(); expect(settings.getDevice('bulb')).toStrictEqual({"ID": "0x000b57fffec6a5b2", "friendly_name": "bulb", "friendlyName": "bulb", "retain": true}); - MQTT.events.message('zigbee2mqtt/bridge/request/device/options', JSON.stringify({options: {retain: false, transition: 1}, ID: 'bulb'})); + MQTT.events.message('zigbee2mqtt/bridge/request/device/options', JSON.stringify({options: {retain: false, transition: 1}, id: 'bulb'})); await flushPromises(); expect(settings.getDevice('bulb')).toStrictEqual({"ID": "0x000b57fffec6a5b2", "friendly_name": "bulb", "friendlyName": "bulb", "retain": false, "transition": 1}); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/options', - JSON.stringify({"data":{"from":{"retain": true},"to":{"retain": false,"transition":1}, "ID":"bulb"},"status":"ok"}), + JSON.stringify({"data":{"from":{"retain": true},"to":{"retain": false,"transition":1}, "id":"bulb"},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -434,19 +434,19 @@ describe('Bridge', () => { it('Should allow change group options', async () => { MQTT.publish.mockClear(); expect(settings.getGroup('group_1')).toStrictEqual({"ID": 1, "devices": [], "friendly_name": "group_1", "retain": false, "friendlyName": "group_1", "optimistic": true}); - MQTT.events.message('zigbee2mqtt/bridge/request/group/options', JSON.stringify({options: {retain: true, transition: 1}, ID: 'group_1'})); + MQTT.events.message('zigbee2mqtt/bridge/request/group/options', JSON.stringify({options: {retain: true, transition: 1}, id: 'group_1'})); await flushPromises(); expect(settings.getGroup('group_1')).toStrictEqual({"ID": 1, "devices": [], "friendly_name": "group_1", "retain": true, "friendlyName": "group_1", "optimistic": true, "transition": 1}); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/group/options', - JSON.stringify({"data":{"from":{"optimistic": true,"retain": false},"to":{"optimistic": true,"retain": true,"transition":1}, "ID":"group_1"},"status":"ok"}), + JSON.stringify({"data":{"from":{"optimistic": true,"retain": false},"to":{"optimistic": true,"retain": true,"transition":1}, "id":"group_1"},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); }); it('Should throw error on invalid device change options payload', async () => { MQTT.publish.mockClear(); - MQTT.events.message('zigbee2mqtt/bridge/request/device/options', JSON.stringify({options_: {retain: true, transition: 1}, ID: 'bulb'})); + MQTT.events.message('zigbee2mqtt/bridge/request/device/options', JSON.stringify({options_: {retain: true, transition: 1}, id: 'bulb'})); await flushPromises(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/options', @@ -463,20 +463,20 @@ describe('Bridge', () => { expect(MQTT.publish).toHaveBeenCalledWith('zigbee2mqtt/bridge/groups', expect.any(String), expect.any(Object), expect.any(Function)); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/group/add', - JSON.stringify({"data":{"friendly_name":"group_193","ID": 3},"status":"ok"}), + JSON.stringify({"data":{"friendly_name":"group_193","id": 3},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); }); it('Should allow to add group with ID', async () => { MQTT.publish.mockClear(); - MQTT.events.message('zigbee2mqtt/bridge/request/group/add', JSON.stringify({friendly_name: "group_193", ID: 9})); + MQTT.events.message('zigbee2mqtt/bridge/request/group/add', JSON.stringify({friendly_name: "group_193", id: 9})); await flushPromises(); expect(settings.getGroup('group_193')).toStrictEqual({"ID": 9, "devices": [], "friendly_name": "group_193", "friendlyName": "group_193", "optimistic": true}); expect(MQTT.publish).toHaveBeenCalledWith('zigbee2mqtt/bridge/groups', expect.any(String), expect.any(Object), expect.any(Function)); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/group/add', - JSON.stringify({"data":{"friendly_name":"group_193","ID": 9},"status":"ok"}), + JSON.stringify({"data":{"friendly_name":"group_193","id": 9},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); }); diff --git a/test/configure.test.js b/test/configure.test.js index 95fe4b2c..746edcfd 100644 --- a/test/configure.test.js +++ b/test/configure.test.js @@ -99,38 +99,38 @@ describe('Configure', () => { expectRemoteConfigured(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/configure', - JSON.stringify({"data":{"ID": "remote"},"status":"ok"}), + JSON.stringify({"data":{"id": "remote"},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); }); it('Fail to configure via MQTT when device does not exist', async () => { - await MQTT.events.message('zigbee2mqtt/bridge/request/device/configure', JSON.stringify({ID: "not_existing_device"})); + await MQTT.events.message('zigbee2mqtt/bridge/request/device/configure', JSON.stringify({id: "not_existing_device"})); await flushPromises(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/configure', - JSON.stringify({"data":{"ID": "not_existing_device"},"status":"error","error": "Device 'not_existing_device' does not exist"}), + JSON.stringify({"data":{"id": "not_existing_device"},"status":"error","error": "Device 'not_existing_device' does not exist"}), {retain: false, qos: 0}, expect.any(Function) ); }); it('Fail to configure via MQTT when configure fails', async () => { zigbeeHerdsman.devices.remote.getEndpoint(1).bind.mockImplementationOnce(async () => {throw new Error('Bind timeout after 10s')}); - await MQTT.events.message('zigbee2mqtt/bridge/request/device/configure', JSON.stringify({ID: "remote"})); + await MQTT.events.message('zigbee2mqtt/bridge/request/device/configure', JSON.stringify({id: "remote"})); await flushPromises(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/configure', - JSON.stringify({"data":{"ID": "remote"},"status":"error","error": "Failed to configure (Bind timeout after 10s)"}), + JSON.stringify({"data":{"id": "remote"},"status":"error","error": "Failed to configure (Bind timeout after 10s)"}), {retain: false, qos: 0}, expect.any(Function) ); }); it('Fail to configure via MQTT when device has no configure', async () => { - await MQTT.events.message('zigbee2mqtt/bridge/request/device/configure', JSON.stringify({ID: "bulb", transaction: 20})); + await MQTT.events.message('zigbee2mqtt/bridge/request/device/configure', JSON.stringify({id: "bulb", transaction: 20})); await flushPromises(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/configure', - JSON.stringify({"data":{"ID": "bulb"},"status":"error","error": "Device 'bulb' cannot be configured","transaction":20}), + JSON.stringify({"data":{"id": "bulb"},"status":"error","error": "Device 'bulb' cannot be configured","transaction":20}), {retain: false, qos: 0}, expect.any(Function) ); }); diff --git a/test/otaUpdate.test.js b/test/otaUpdate.test.js index 8dc731fe..3de6813e 100644 --- a/test/otaUpdate.test.js +++ b/test/otaUpdate.test.js @@ -64,7 +64,7 @@ describe('OTA update', () => { expect(device.softwareBuildID).toBe(2); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/ota_update/update', - JSON.stringify({"data":{"ID": "bulb","from":{"software_build_ID":1,"date_code":"20190101"},"to":{"software_build_ID":2,"date_code":"20190102"}},"status":"ok"}), + JSON.stringify({"data":{"id": "bulb","from":{"software_build_id":1,"date_code":"20190101"},"to":{"software_build_id":2,"date_code":"20190102"}},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -80,11 +80,11 @@ describe('OTA update', () => { throw new Error('Update failed'); }); - MQTT.events.message('zigbee2mqtt/bridge/request/device/ota_update/update', JSON.stringify({ID: "bulb"})); + MQTT.events.message('zigbee2mqtt/bridge/request/device/ota_update/update', JSON.stringify({id: "bulb"})); await flushPromises(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/ota_update/update', - JSON.stringify({"data":{"ID": "bulb"},"status":"error","error":"Update of 'bulb' failed (Update failed)"}), + JSON.stringify({"data":{"id": "bulb"},"status":"error","error":"Update of 'bulb' failed (Update failed)"}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -101,7 +101,7 @@ describe('OTA update', () => { expect(mapped.ota.updateToLatest).toHaveBeenCalledTimes(0); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/ota_update/check', - JSON.stringify({"data":{"ID": "bulb","updateAvailable":false},"status":"ok"}), + JSON.stringify({"data":{"id": "bulb","updateAvailable":false},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); @@ -113,7 +113,7 @@ describe('OTA update', () => { expect(mapped.ota.updateToLatest).toHaveBeenCalledTimes(0); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/ota_update/check', - JSON.stringify({"data":{"ID": "bulb","updateAvailable":true},"status":"ok"}), + JSON.stringify({"data":{"id": "bulb","updateAvailable":true},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -130,7 +130,7 @@ describe('OTA update', () => { expect(mapped.ota.updateToLatest).toHaveBeenCalledTimes(0); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/ota_update/check', - JSON.stringify({"data":{"ID": "bulb"},"status":"error","error": `Failed to check if update available for 'bulb' (RF singals disturbed because of dogs barking)`}), + JSON.stringify({"data":{"id": "bulb"},"status":"error","error": `Failed to check if update available for 'bulb' (RF singals disturbed because of dogs barking)`}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -140,7 +140,7 @@ describe('OTA update', () => { await flushPromises(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/ota_update/check', - JSON.stringify({"data":{"ID": "not_existing_deviceooo"},"status":"error","error": `Device 'not_existing_deviceooo' does not exist`}), + JSON.stringify({"data":{"id": "not_existing_deviceooo"},"status":"error","error": `Device 'not_existing_deviceooo' does not exist`}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -150,7 +150,7 @@ describe('OTA update', () => { await flushPromises(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/ota_update/check', - JSON.stringify({"data":{"ID": "ZNLDP12LM"},"status":"error","error": `Device 'ZNLDP12LM' does not support OTA updates`}), + JSON.stringify({"data":{"id": "ZNLDP12LM"},"status":"error","error": `Device 'ZNLDP12LM' does not support OTA updates`}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -173,7 +173,7 @@ describe('OTA update', () => { await flushPromises(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/ota_update/check', - JSON.stringify({"data":{"ID": "bulb"},"status":"error","error": `Update or check for update already in progress for 'bulb'`}), + JSON.stringify({"data":{"id": "bulb"},"status":"error","error": `Update or check for update already in progress for 'bulb'`}), {retain: false, qos: 0}, expect.any(Function) ); }); @@ -190,7 +190,7 @@ describe('OTA update', () => { await flushPromises(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/response/device/ota_update/update', - JSON.stringify({"data":{"ID":"bulb","from":null,"to":null},"status":"ok"}), + JSON.stringify({"data":{"id":"bulb","from":null,"to":null},"status":"ok"}), {retain: false, qos: 0}, expect.any(Function) ); });