Skip to content

Commit

Permalink
fix(email): recreate test account on network error
Browse files Browse the repository at this point in the history
  • Loading branch information
withSang committed Feb 13, 2024
1 parent 5636ad1 commit 739e0a0
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 19 deletions.
2 changes: 1 addition & 1 deletion loadenv.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
require("dotenv").config({ path: `./.env.${process.env.NODE_ENV}` });

module.exports = {
nodeEnv: process.env.NODE_ENV, // required ("production" or "development" or "test)
nodeEnv: process.env.NODE_ENV, // required ("production" or "development" or "test")
mongo: process.env.DB_PATH, // required
session: {
secret: process.env.SESSION_KEY || "TAXI_SESSION_KEY", // optional
Expand Down
40 changes: 22 additions & 18 deletions src/modules/email.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,26 +55,29 @@ class MockNodemailerTransport {
*/
async getTransporter() {
if (!this.#transporterPromise) {
try {
this.#transporterPromise = nodemailer
.createTestAccount()
.then((account) => {
return nodemailer.createTransport({
host: "smtp.ethereal.email",
port: 587,
secure: false,
auth: {
user: account.user,
pass: account.pass,
},
});
this.#transporterPromise = nodemailer
.createTestAccount()
.then((account) => {
return nodemailer.createTransport({
host: "smtp.ethereal.email",
port: 587,
secure: false,
auth: {
user: account.user,
pass: account.pass,
},
});
return this.#transporterPromise;
} catch (err) {
logger.error(err);
throw err;
}
})
.catch((err) => {
// 네트워크 오류 등으로 mock 메일 전송을 위한 agent 객체 생성에 실패했을 때 에러를 반환합니다.
// sendMail 메서드가 다시 호출될 때 새로운 transporterPromise를 생성하기 위해 null로 초기화합니다.
logger.error("mock 메일 전송을 위한 agent 객체 생성에 실패했습니다.");
this.#transporterPromise = null;
throw err;
});
return this.#transporterPromise;
} else {
// 이미 다른 caller에서 transporterPromise를 생성했다면 해당 Promise를 반환합니다.
return this.#transporterPromise;
}
}
Expand All @@ -95,6 +98,7 @@ class MockNodemailerTransport {
);
return true;
} catch (err) {
logger.error("메일 전송이 아래와 같은 사유로 실패했습니다: ");
logger.error(err);
return false;
}
Expand Down

0 comments on commit 739e0a0

Please sign in to comment.