add settings.get/setDnsConfig

This commit is contained in:
Girish Ramakrishnan
2015-10-26 00:44:54 -07:00
parent e42538bf95
commit 3ca3dff767
2 changed files with 51 additions and 0 deletions
+33
View File
@@ -20,6 +20,9 @@ exports = module.exports = {
getDeveloperMode: getDeveloperMode,
setDeveloperMode: setDeveloperMode,
getDnsConfig: getDnsConfig,
setDnsConfig: setDnsConfig,
getDefaultSync: getDefaultSync,
getAll: getAll,
@@ -27,6 +30,7 @@ exports = module.exports = {
TIME_ZONE_KEY: 'time_zone',
CLOUDRON_NAME_KEY: 'cloudron_name',
DEVELOPER_MODE_KEY: 'developer_mode',
DNS_CREDENTIALS_KEY: 'dns_credentials',
events: new (require('events').EventEmitter)()
};
@@ -207,6 +211,35 @@ function setDeveloperMode(enabled, callback) {
});
}
function getDnsConfig(callback) {
assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.DNS_CREDENTIALS_KEY, function (error, value) {
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new SettingsError(SettingsError.NOT_FOUND));
if (error) return callback(new SettingsError(SettingsError.INTERNAL_ERROR, error));
callback(null, JSON.parse(value)); // accessKeyId, secretAccessKey, region
});
}
function setDnsConfig(dnsConfig, callback) {
assert.strictEqual(typeof dnsConfig, 'object');
assert.strictEqual(typeof callback, 'function');
var credentials = {
provider: dnsConfig.provider,
accessKeyId: dnsConfig.accessKeyId,
secretAccessKey: dnsConfig.secretAccessKey,
region: dnsConfig.region || 'us-east-1'
};
settingsdb.set(exports.DNS_CREDENTIALS_KEY, JSON.stringify(credentials), function (error) {
if (error) return callback(new SettingsError(SettingsError.INTERNAL_ERROR, error));
callback(null);
});
}
function getDefaultSync(name) {
assert.strictEqual(typeof name, 'string');
+18
View File
@@ -81,6 +81,24 @@ describe('Settings', function () {
});
});
it('can set dns config', function (done) {
settings.setDnsConfig({ provider: 'route53', accessKeyId: 'accessKeyId', secretAccessKey: 'secretAccessKey' }, function (error) {
expect(error).to.be(null);
done();
});
});
it('can get dns config', function (done) {
settings.getDnsConfig(function (error, dnsConfig) {
expect(error).to.be(null);
expect(dnsConfig.provider).to.be('route53');
expect(dnsConfig.accessKeyId).to.be('accessKeyId');
expect(dnsConfig.secretAccessKey).to.be('secretAccessKey');
expect(dnsConfig.region).to.be('us-east-1');
done();
});
});
it('can get all values', function (done) {
settings.getAll(function (error, allSettings) {
expect(error).to.be(null);