diff --git a/src/settings.js b/src/settings.js index c006aef25..a61c76080 100644 --- a/src/settings.js +++ b/src/settings.js @@ -29,6 +29,9 @@ exports = module.exports = { getTlsConfig: getTlsConfig, setTlsConfig: setTlsConfig, + getUpdateConfig: getUpdateConfig, + setUpdateConfig: setUpdateConfig, + getDefaultSync: getDefaultSync, getAll: getAll, @@ -39,6 +42,7 @@ exports = module.exports = { DNS_CONFIG_KEY: 'dns_config', BACKUP_CONFIG_KEY: 'backup_config', TLS_CONFIG_KEY: 'tls_config', + UPDATE_CONFIG_KEY: 'update_config', events: new (require('events').EventEmitter)() }; @@ -323,6 +327,30 @@ function setBackupConfig(backupConfig, callback) { }); } +function getUpdateConfig(callback) { + assert.strictEqual(typeof callback, 'function'); + + settingsdb.get(exports.UPDATE_CONFIG_KEY, function (error, value) { + if (error && error.reason === DatabaseError.NOT_FOUND) return callback(null, gDefaults[exports.UPDATE_CONFIG_KEY]); + if (error) return callback(new SettingsError(SettingsError.INTERNAL_ERROR, error)); + + callback(null, JSON.parse(value)); // { prerelease } + }); +} + +function setUpdateConfig(updateConfig, callback) { + assert.strictEqual(typeof updateConfig, 'object'); + assert.strictEqual(typeof callback, 'function'); + + settingsdb.set(exports.UPDATE_CONFIG_KEY, JSON.stringify(updateConfig), function (error) { + if (error) return callback(new SettingsError(SettingsError.INTERNAL_ERROR, error)); + + exports.events.emit(exports.UPDATE_CONFIG_KEY, updateConfig); + + callback(null); + }); +} + function getDefaultSync(name) { assert.strictEqual(typeof name, 'string'); diff --git a/src/test/settings-test.js b/src/test/settings-test.js index 84702b367..1a08a7d05 100644 --- a/src/test/settings-test.js +++ b/src/test/settings-test.js @@ -123,10 +123,25 @@ describe('Settings', function () { }); it('can get backup config', function (done) { - settings.getBackupConfig(function (error, dnsConfig) { + settings.getBackupConfig(function (error, backupConfig) { expect(error).to.be(null); - expect(dnsConfig.provider).to.be('caas'); - expect(dnsConfig.token).to.be('TOKEN'); + expect(backupConfig.provider).to.be('caas'); + expect(backupConfig.token).to.be('TOKEN'); + done(); + }); + }); + + it('can set backup config', function (done) { + settings.setUpdateConfig({ prerelease: true }, function (error) { + expect(error).to.be(null); + done(); + }); + }); + + it('can get backup config', function (done) { + settings.getUpdateConfig(function (error, updateConfig) { + expect(error).to.be(null); + expect(updateConfig.prerelease).to.be(true); done(); }); });