Created
May 23, 2023 03:46
-
-
Save RiansyahTohamba/befb4127f7d20cfb5b34a647e6edb426 to your computer and use it in GitHub Desktop.
Nodemailer testing without actually send Email
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const Lab = require("@hapi/lab"); | |
const { expect } = require("chai"); | |
const sinon = require("sinon"); | |
const nodemailer = require("nodemailer"); | |
const { PASS_MAIL, USER_MAIL } = process.env; | |
const { init } = require("../server_test"); | |
const { | |
describe, it, beforeEach, afterEach, | |
} = exports.lab = Lab.script(); | |
describe("POST /slik/create", () => { | |
let token; | |
let server; | |
let sendMailSpy; | |
beforeEach(async () => { | |
server = await init(); // Inisialisasi server Hapi | |
const options = { | |
method: "POST", | |
url: "/auth/signin", | |
payload: { | |
username: "82292319224", | |
password: "password", | |
}, | |
}; | |
const res = await server.inject(options); | |
token = res.result.token; | |
const transporter = nodemailer.createTransport({ | |
service: "gmail", | |
auth: { | |
user: USER_MAIL, | |
pass: PASS_MAIL, | |
}, | |
}); | |
sendMailSpy = sinon.spy(transporter, "sendMail"); | |
}); | |
afterEach(async () => { | |
await server.stop(); // Menghentikan server Hapi | |
sendMailSpy.restore(); | |
}); | |
it("should create a new Slik Request & send Email", async () => { | |
const payload = {}; | |
const response = await server.inject({ | |
url: "/book/dummy/create", | |
method: "POST", | |
headers: { | |
Authorization: `Bearer ${token}`, | |
}, | |
payload, | |
}); | |
expect(response.statusCode).to.equal(201); | |
// sinon.assert.called(sendMailSpy); | |
// Verifikasi operasi database melalui test-double | |
// expect(dbStub.calledOnce).to.be.true(); | |
// expect(dbStub.getCall(0).args[0]).to.equal(payload); | |
}); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// routes | |
{ | |
method: "POST", | |
path: "/book/dummy/create", | |
config: Slik.createDummy, | |
}, | |
// controller | |
module.exports.createDummy = async (request, h) => { | |
console.log("create record"); | |
// ? | |
console.log("send email"); | |
const nameList = ["Riansyah Tohamba"]; | |
const mailList = ["riansyah.tohamba@kendari.com"]; | |
const noLetter = "book/12/232"; | |
const replacements = { | |
title: "New Request requested to you", | |
username: nameList, | |
header: "New Request need your review.", | |
bodyText: `New with number of letter: ${noLetter} has been created and request approved by you, Please click button bellow for more details`, | |
link: `${LOCAL_URL}/dashboard/request/10/detail`, | |
}; | |
const subject = `New Request has been created with number: ${noLetter}`; | |
// attachment is null in create request | |
const emailRes = await sendEmail(h, replacements, subject, mailList); | |
if (emailRes.messageId !== undefined) { | |
return h.response({ | |
emailNotif: `Email has sent: ${emailRes.messageId}`, | |
message: "create dummy success", | |
}).code(201); | |
} | |
// ini case dimana email gagal send karene network dan sebagainya | |
return emailRes; | |
}; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment