mirror of
https://github.com/Permissionless-Software-Foundation/ipfs-bch-wallet-consumer.git
synced 2026-09-21 16:52:03 -07:00
feat(nodemailer): Increased code-coverage of nodemailer.js
This commit is contained in:
+18
-18
@@ -17,6 +17,20 @@ class NodeMailer {
|
||||
this.config = config
|
||||
|
||||
_this = this
|
||||
_this.transporter = _this.createTransporter()
|
||||
}
|
||||
|
||||
createTransporter () {
|
||||
const transporter = _this.nodemailer.createTransport({
|
||||
host: _this.config.emailServer,
|
||||
port: 587,
|
||||
secure: false, // true for 465, false for other ports
|
||||
auth: {
|
||||
user: _this.config.emailUser, // generated ethereal user
|
||||
pass: _this.config.emailPassword // generated ethereal password
|
||||
}
|
||||
})
|
||||
return transporter
|
||||
}
|
||||
|
||||
// Validate email
|
||||
@@ -44,10 +58,7 @@ class NodeMailer {
|
||||
throw new Error("Property 'to' must be a array!")
|
||||
}
|
||||
|
||||
const isEmailList = await _this.validateEmailArray(data.to)
|
||||
if (!isEmailList) {
|
||||
throw new Error("Property 'to' must be array of email format!")
|
||||
}
|
||||
await _this.validateEmailArray(data.to)
|
||||
|
||||
if (!data.formMessage || typeof data.formMessage !== 'string') {
|
||||
throw new Error("Property 'message' must be a string!")
|
||||
@@ -61,18 +72,6 @@ class NodeMailer {
|
||||
throw new Error("Property 'payloadTitle' must be a string!")
|
||||
}
|
||||
|
||||
// create reusable transporter object using the default SMTP transport
|
||||
const transporter = await _this.nodemailer.createTransport({
|
||||
host: _this.config.emailServer,
|
||||
port: 587,
|
||||
secure: false, // true for 465, false for other ports
|
||||
auth: {
|
||||
user: _this.config.emailUser, // generated ethereal user
|
||||
pass: _this.config.emailPassword // generated ethereal password
|
||||
}
|
||||
})
|
||||
// console.log(`transporter: ${JSON.stringify(transporter)}`)
|
||||
|
||||
const msg = data.formMessage.replace(/(\r\n|\n|\r)/g, '<br />')
|
||||
|
||||
const now = new Date()
|
||||
@@ -115,7 +114,7 @@ class NodeMailer {
|
||||
${htmlData}
|
||||
</p>`
|
||||
// send mail with defined transport object
|
||||
const info = await transporter.sendMail({
|
||||
const info = await _this.transporter.sendMail({
|
||||
// from: `${data.email}`, // sender address
|
||||
from: 'noreply@launchpadip.net',
|
||||
to: `${to}`, // list of receivers
|
||||
@@ -125,8 +124,9 @@ class NodeMailer {
|
||||
html: htmlMsg
|
||||
})
|
||||
console.log('Message sent: %s', info.messageId)
|
||||
return info
|
||||
} catch (err) {
|
||||
console.log('Error in sendEmail()')
|
||||
wlogger.error('Error in lib/nodemailer.js/sendEmail()')
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
||||
+61
-28
@@ -1,9 +1,23 @@
|
||||
const assert = require('chai').assert
|
||||
|
||||
const NodeMailer = require('../src/lib/nodemailer')
|
||||
const nodemailer = new NodeMailer()
|
||||
|
||||
const sinon = require('sinon')
|
||||
|
||||
const util = require('util')
|
||||
util.inspect.defaultOptions = { depth: 1 }
|
||||
|
||||
let sandbox
|
||||
let uut
|
||||
describe('NodeMailer', () => {
|
||||
beforeEach(() => {
|
||||
uut = new NodeMailer()
|
||||
|
||||
sandbox = sinon.createSandbox()
|
||||
})
|
||||
|
||||
afterEach(() => sandbox.restore())
|
||||
|
||||
describe('sendEmail()', () => {
|
||||
it('should throw error if email property is not provided', async () => {
|
||||
try {
|
||||
@@ -13,7 +27,7 @@ describe('NodeMailer', () => {
|
||||
subject: 'test subject',
|
||||
to: ['test2@email.com']
|
||||
}
|
||||
await nodemailer.sendEmail(data)
|
||||
await uut.sendEmail(data)
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Property \'email\' must be a string!')
|
||||
@@ -28,7 +42,7 @@ describe('NodeMailer', () => {
|
||||
subject: 'test subject',
|
||||
to: ['test2@email.com']
|
||||
}
|
||||
await nodemailer.sendEmail(data)
|
||||
await uut.sendEmail(data)
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Property \'email\' must be email format!')
|
||||
@@ -42,7 +56,7 @@ describe('NodeMailer', () => {
|
||||
subject: 'test subject',
|
||||
to: ['test2@email.com']
|
||||
}
|
||||
await nodemailer.sendEmail(data)
|
||||
await uut.sendEmail(data)
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Property \'message\' must be a string!')
|
||||
@@ -55,7 +69,7 @@ describe('NodeMailer', () => {
|
||||
name: 'test name',
|
||||
subject: 'test subject'
|
||||
}
|
||||
await nodemailer.sendEmail(data)
|
||||
await uut.sendEmail(data)
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Property \'to\' must be a array!')
|
||||
@@ -71,7 +85,7 @@ describe('NodeMailer', () => {
|
||||
subject: 'test subject',
|
||||
to: ['test']
|
||||
}
|
||||
await nodemailer.sendEmail(data)
|
||||
await uut.sendEmail(data)
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Array must contain emails format!')
|
||||
@@ -86,7 +100,7 @@ describe('NodeMailer', () => {
|
||||
name: 'test name',
|
||||
to: ['test2@email.com']
|
||||
}
|
||||
await nodemailer.sendEmail(data)
|
||||
await uut.sendEmail(data)
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Property \'subject\' must be a string!')
|
||||
@@ -101,34 +115,53 @@ describe('NodeMailer', () => {
|
||||
subject: 'test subject',
|
||||
to: ['test2@email.com']
|
||||
}
|
||||
await nodemailer.sendEmail(data)
|
||||
await uut.sendEmail(data)
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Property \'payloadTitle\' must be a string!')
|
||||
}
|
||||
})
|
||||
it('should throw error if payloadTitle property is not string', async () => {
|
||||
try {
|
||||
const data = {
|
||||
email: 'test@email.com',
|
||||
formMessage: 'test msg',
|
||||
name: 'test name',
|
||||
subject: 'test subject',
|
||||
to: ['test2@email.com'],
|
||||
payloadTitle: true
|
||||
|
||||
}
|
||||
await uut.sendEmail(data)
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Property \'payloadTitle\' must be a string!')
|
||||
}
|
||||
})
|
||||
|
||||
/* it('should send email', async () => {
|
||||
try {
|
||||
const data = {
|
||||
email: 'test@email.com',
|
||||
formMessage: 'test msg',
|
||||
name: 'test name',
|
||||
to: 'test2@email.com',
|
||||
subject: 'test subject',
|
||||
payloadTitle: 'test title'
|
||||
}
|
||||
await nodemailer.sendEmail(data)
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Property \'subject\' must be a string!')
|
||||
}
|
||||
}) */
|
||||
it('should send email', async () => {
|
||||
try {
|
||||
sandbox.stub(uut.transporter, 'sendMail').resolves({ messageId: 'messageId' })
|
||||
const data = {
|
||||
email: 'test@email.com',
|
||||
formMessage: 'test msg',
|
||||
name: 'test name',
|
||||
to: ['test2@email.com'],
|
||||
subject: 'test subject',
|
||||
payloadTitle: 'test title'
|
||||
}
|
||||
const info = await uut.sendEmail(data)
|
||||
assert.isObject(info)
|
||||
assert.isString(info.messageId)
|
||||
} catch (err) {
|
||||
assert(false, 'Unexpected result')
|
||||
}
|
||||
})
|
||||
})
|
||||
describe('validateEmailArray()', () => {
|
||||
it('should throw error if email list is not provided ', async () => {
|
||||
try {
|
||||
await nodemailer.validateEmailArray()
|
||||
await uut.validateEmailArray()
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Property \'emailList\' must be a array!')
|
||||
@@ -137,7 +170,7 @@ describe('NodeMailer', () => {
|
||||
it('should throw error if email list is empty', async () => {
|
||||
try {
|
||||
const emailList = []
|
||||
await nodemailer.validateEmailArray(emailList)
|
||||
await uut.validateEmailArray(emailList)
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Property \'emailList\' cant be empty!')
|
||||
@@ -149,7 +182,7 @@ describe('NodeMailer', () => {
|
||||
'wrongEmail',
|
||||
'bad format'
|
||||
]
|
||||
await nodemailer.validateEmailArray(emailList)
|
||||
await uut.validateEmailArray(emailList)
|
||||
assert(false, 'Unexpected result')
|
||||
} catch (err) {
|
||||
assert.include(err.message, 'Array must contain emails format!')
|
||||
@@ -161,7 +194,7 @@ describe('NodeMailer', () => {
|
||||
'test@email.com',
|
||||
'simple@email.com'
|
||||
]
|
||||
const result = await nodemailer.validateEmailArray(emailList)
|
||||
const result = await uut.validateEmailArray(emailList)
|
||||
assert.isTrue(result)
|
||||
} catch (err) {
|
||||
assert(false, 'Unexpected result')
|
||||
|
||||
Reference in New Issue
Block a user