diff --git a/lib/util/settings.js b/lib/util/settings.js index ae9301ee3..db7f8b24d 100644 --- a/lib/util/settings.js +++ b/lib/util/settings.js @@ -1,4 +1,5 @@ const data = require('./data'); +const utils = require('./utils'); const file = data.joinPath('configuration.yaml'); const objectAssignDeep = require(`object-assign-deep`); const path = require('path'); @@ -287,11 +288,13 @@ function write() { function validate() { const validate = ajv.compile(schema); const valid = validate(_settings); + const postfixes = utils.getPostfixes(); // Verify that all friendly names are unique const names = []; const check = (name) => { if (names.includes(name)) throw new Error(`Duplicate friendly_name '${name}' found`); + if (postfixes.includes(name)) throw new Error(`Following friendly_name are not allowed: '${postfixes}'`); names.push(name); }; Object.values(_settingsWithDefaults.devices).forEach((d) => check(d.friendly_name)); diff --git a/test/settings.test.js b/test/settings.test.js index 12baf9828..688f36ac2 100644 --- a/test/settings.test.js +++ b/test/settings.test.js @@ -1,6 +1,7 @@ require('./stub/logger'); require('./stub/data'); const data = require('../lib/util/data.js'); +const utils = require('../lib/util/utils.js'); const settings = require('../lib/util/settings.js'); const fs = require('fs'); const configurationFile = data.joinPath('configuration.yaml'); @@ -511,6 +512,18 @@ describe('Settings', () => { }).toThrowError(`Duplicate friendly_name 'myname' found`); }); + it('Configuration shouldnt be valid when friendly_name is a postfix', async () => { + write(configurationFile, { + devices: {'0x0017880104e45519': {friendly_name: 'left', retain: false}}, + }); + + settings._reRead(); + + expect(() => { + settings.validate(); + }).toThrowError(`Following friendly_name are not allowed: '${utils.getPostfixes()}'`); + }); + it('Configuration shouldnt be valid when duplicate friendly_name are used', async () => { write(configurationFile, { devices: {