diff --git a/dev/send-message.js b/dev/send-message.js index bbc6e024..f72f6faf 100644 --- a/dev/send-message.js +++ b/dev/send-message.js @@ -1,29 +1,30 @@ require('es6-promise').polyfill() -var config = require('../lib/config') -var plugins = require('../lib/plugins') +var config = require('../lib/settings-loader') +var sms = require('../lib/sms') var rand = Math.floor(Math.random() * 1e6) - +var db = config.connection var rec = { email: { subject: 'Test email ' + rand, body: 'This is a test email from lamassu-server' }, sms: { + toNumber: '666', body: '[Lamassu] This is a test sms ' + rand } } -var db = config.connection -config.loadConfig(db) +config.loadLatest(db) .then(function (config) { - plugins.configure(config) - plugins.sendMessage(rec) + sms.sendMessage(config, rec) .then(function () { console.log('Success.') + process.exit(0) }) .catch(function (err) { console.log(err.stack) + process.exit(1) }) }) diff --git a/lib/plugins/sms/mock-sms/mock-sms.js b/lib/plugins/sms/mock-sms/mock-sms.js index 797baa10..952fca3c 100644 --- a/lib/plugins/sms/mock-sms/mock-sms.js +++ b/lib/plugins/sms/mock-sms/mock-sms.js @@ -1,8 +1,14 @@ +const _ = require('lodash/fp') + exports.NAME = 'MockSMS' exports.sendMessage = function sendMessage (account, rec) { console.log('Sending SMS: %j', rec) - return new Promise(resolve => { - setTimeout(resolve, 10) + return new Promise((resolve, reject) => { + if (_.endsWith('666', _.getOr(false, 'sms.toNumber', rec))) { + reject(new Error(`${exports.NAME} mocked error!`)) + } else { + setTimeout(resolve, 10) + } }) } diff --git a/lib/plugins/sms/twilio/twilio.js b/lib/plugins/sms/twilio/twilio.js index a92a37ec..7b87b19d 100644 --- a/lib/plugins/sms/twilio/twilio.js +++ b/lib/plugins/sms/twilio/twilio.js @@ -7,17 +7,22 @@ const BAD_NUMBER_CODES = [21201, 21202, 21211, 21214, 21216, 21217, 21219, 21408 21610, 21612, 21614, 21608] function sendMessage (account, rec) { - const client = twilio(account.accountSid, account.authToken) - const body = rec.sms.body - const _toNumber = rec.sms.toNumber || account.toNumber + return Promise.resolve() + .then(() => { + // to catch configuration errors like + // "Error: username is required" + const client = twilio(account.accountSid, account.authToken) + const body = rec.sms.body + const _toNumber = rec.sms.toNumber || account.toNumber - const opts = { - body: body, - to: _toNumber, - from: account.fromNumber - } + const opts = { + body: body, + to: _toNumber, + from: account.fromNumber + } - return client.messages.create(opts) + return client.messages.create(opts) + }) .catch(err => { if (_.includes(err.code, BAD_NUMBER_CODES)) { const badNumberError = new Error(err.message) @@ -25,7 +30,7 @@ function sendMessage (account, rec) { throw badNumberError } - throw new Error(err.message) + throw new Error(`Twilio error: ${err.message}`) }) }