UNPKG

paid-services

Version:
89 lines (80 loc) 2.32 kB
const {deepStrictEqual, rejects} = require('node:assert/strict'); const {test} = require('node:test'); const method = require('./../../actions/send_twilio_sms'); const makeArgs = overrides => { const args = { account: 'account', fetch: () => new Promise(resolve => resolve({status: 200})), from: 'from', key: 'key', text: 'text', to: 'to', }; Object.keys(overrides).forEach(k => args[k] = overrides[k]); return args; }; const tests = [ { args: makeArgs({account: undefined}), description: 'An account id is required', error: [400, 'ExpectedAccountIdToSendTwilioSmsMessage'], }, { args: makeArgs({fetch: undefined}), description: 'A fetch method is required', error: [400, 'ExpectedFetchMethodToSendTwilioSmsMessage'], }, { args: makeArgs({from: undefined}), description: 'A from email is required', error: [400, 'ExpectedFromSmsNumberToSendTwilioSmsMessage'], }, { args: makeArgs({key: undefined}), description: 'An auth key is required', error: [400, 'ExpectedAuthApiKeyToSendTwilioSmsMessage'], }, { args: makeArgs({text: undefined}), description: 'A message is required', error: [400, 'ExpectedTextToSendInTwilioSmsMessage'], }, { args: makeArgs({to: undefined}), description: 'A destination is required', error: [400, 'ExpectedToNumberToSendTwilioSmsMessage'], }, { args: makeArgs({fetch: () => new Promise((n, reject) => reject('err'))}), description: 'An SMS is not sent', error: [500, 'UnexpectedErrorSendingSmsViaTwilio', {err: 'err'}], }, { args: makeArgs({ fetch: () => new Promise(resolve => resolve({status: 500})) }), description: 'An SMS is not sent due to unexpected status code', error: [503, 'UnexpectedTwilioSmsStatus', {code: 500}], }, { args: makeArgs({}), description: 'An SMS is sent', }, ]; tests.forEach(({args, description, error, expected}) => { test(description, async () => { if (!!error) { await rejects( method(args), err => { deepStrictEqual(err, error, 'Got error'); return true; }, 'Got error' ); } else { const res = await method(args); deepStrictEqual(res, expected, 'Got expected result'); } }); });