이메일 발송 테스트 코드 추가

This commit is contained in:
Rinjae
2025-11-20 10:50:33 +09:00
parent 797529c774
commit e410b9b79b
4 changed files with 541 additions and 19 deletions
@@ -50,7 +50,8 @@ public class EmailJob {
this.messageRequest = messageRequest;
this.prop = prop;
String filename = messageRequest.getServiceId() + "_" + DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(now) + ".dat";
// String filename = messageRequest.getServiceId() + "_" + DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(now) + ".dat";
String filename = messageRequest.getServiceId() + "_" + DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS").format(now) + ".dat";
this.eaiFilePath = Paths.get(prop.getUmsEaiBatchSendDir(), filename);
this.backupFilePath = Paths.get(prop.getUmsEaiBatchBackupDir(), filename);
this.failedFilePath = Paths.get(prop.getUmsEaiBatchBackupDir(), filename + ".failed");
@@ -240,11 +241,14 @@ public class EmailJob {
jsonObject.addProperty("ENCKEY", ""); // 보안메일용으로 기입 불필요
Gson gson = new Gson();
log.debug("Template string to json: {}", messageRequest.getMessage());
JsonObject contentJSon = gson.fromJson(messageRequest.getMessage(), JsonObject.class);
contentJSon.entrySet().forEach(entry -> {
jsonObject.add(entry.getKey(), entry.getValue());
});
String message = messageRequest.getMessage();
log.debug("Template string to json: {}", message);
if (StringUtils.isNotEmpty(message)) {
JsonObject contentJSon = gson.fromJson(message, JsonObject.class);
contentJSon.entrySet().forEach(entry -> {
jsonObject.add(entry.getKey(), entry.getValue());
});
}
// jsonObject.addProperty("SUBJECT", messageRequest.getSubject());
// jsonObject.addProperty("MESSAGE", messageRequest.getMessage());
@@ -117,8 +117,10 @@ public class KjbEmailSendModule {
public void sendEmail(MessageRequest messageRequest) throws KjbEaiBatchException {
String serviceId = "UNKNOWN";
serviceId = messageRequest.getMessageCode().getServiceId();
messageRequest.setServiceId(serviceId);
if (StringUtils.isEmpty(messageRequest.getServiceId())) {
serviceId = messageRequest.getMessageCode().getServiceId();
messageRequest.setServiceId(serviceId);
}
if (StringUtils.isEmpty(serviceId)) {
throw new IllegalArgumentException("MessageRequest MessageCode serviceId is required");
@@ -14,6 +14,8 @@ import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@@ -31,6 +33,8 @@ public class UmsTest {
prop.setUmsApiKey("7cca6d58-e4f7-474d-9edd-525806bc99ff");
if (OsUtil.isWindows()) {
prop.setEaiBatchUrl("");
prop.setUmsHostUrl("");
prop.setUmsEaiBatchSendDir("c:\\kjb-logs\\sendmail\\snd");
prop.setUmsEaiBatchBackupDir("c:\\kjb-logs\\sendmail\\bak");
prop.setUmsEaiBatchErrorDir("c:\\kjb-logs\\sendmail\\error");
@@ -71,6 +75,9 @@ public class UmsTest {
log.info("done");
}
/**
* :eapim-admin-kjb:test --tests "com.eactive.ext.kjb.ums.test.UmsTest.testEmail"
*/
@Test
public void testEmail() {
Assumptions.assumeTrue(
@@ -83,24 +90,70 @@ public class UmsTest {
});
KjbEmailSendModule service = KjbEmailSendModule.getInstance(prop, null);
MessageRequest messageRequest = new MessageRequest();
messageRequest.setId(UUID.randomUUID().toString());
messageRequest.setMessageCode(MessageCode.USER_VERIFICATION_EMAIL);
messageRequest.setEmail("dearmai@dearmai.net");
messageRequest.setUmsUid(UUID.randomUUID().toString());
messageRequest.setUsername("김광은");
messageRequest.setSubject("제목 - test");
messageRequest.setMessage("{\"ATHN_NO\": \"543216\"}");
messageRequest.setServiceId("FM_APIM001");
log.info("MessageRequest - {}", messageRequest);
List<MessageRequest> requestList = new ArrayList<>();
log.info("#1 요청 생성 - 이메일 인증");
requestList.add(createMessageRequest(MessageCode.USER_VERIFICATION_EMAIL, "{\"ATHN_NO\": \"543216\"}"));
log.info("#2 요청 생성 - 비밀번호 초기화");
requestList.add(createMessageRequest(MessageCode.USER_PASSWORD_RESET, "{\"ATHN_NO\": \"new-password\"}"));
log.info("#3 요청 생성 - 비밀번호 변경 완료");
requestList.add(createMessageRequest(MessageCode.USER_PASSWORD_CHANGED, ""));
log.info("#4 요청 생성 - 로그인 제한");
requestList.add(createMessageRequest(MessageCode.USER_ACCOUNT_LOCKED, "{\"RJCT_RSN\": \"%reason%\"}"));
log.info("#5 요청 생성 - 이메일 초대");
requestList.add(createMessageRequest(MessageCode.USER_INVITATION,
"{\"CRPT_NM\":\"%corpName%\",\"MNGR_NM\":\"%managerName%\",\"CUST_ID\":\"%loginId%\",\"PSWD\":\"%tempPassword%\"}"));
log.info("#6 요청 생성 - 이메일 초대 취소");
requestList.add(createMessageRequest(MessageCode.USER_INVITATION_CANCELED,
"{\"CRPT_NM\":\"%corpName%\",\"MNGR_NM\":\"%managerName%\"}"));
log.info("#7 요청 생성 - 법인관리자 및 법인 등록 승인");
requestList.add(createMessageRequest(MessageCode.MANAGER_WITH_ORG_REGISTER_APPROVED, ""));
log.info("#8 요청 생성 - 법인관리자 및 법인 등록 거절");
requestList.add(createMessageRequest(MessageCode.MANAGER_WITH_ORG_REGISTER_REJECTED, "{\"RJCT_RSN\": \"%reason%\"}"));
log.info("#9 요청 생성 - 앱 승인");
requestList.add(createMessageRequest(MessageCode.APP_REGISTER_APPROVED, "{\"APP_IDNT_NM\": \"%appName%\"}"));
log.info("#10 요청 생성 - 앱 승인 거절");
requestList.add(createMessageRequest(MessageCode.APP_REGISTER_REJECTED, "{\"RJCT_RSN\": \"%reason%\"}"));
try {
service.sendEmail(messageRequest);
for (int i = 0; i < requestList.size(); i++) {
MessageRequest request = requestList.get(i);
log.info("#{} - 메일 전송 시도 - {}", i + 1, request.getServiceId());
service.sendEmail(request);
}
} catch (KjbEaiBatchException e) {
throw new RuntimeException(e);
}
log.info("done");
}
private MessageRequest createMessageRequest(MessageCode messageCode, String message) {
MessageRequest messageRequest = new MessageRequest();
messageRequest.setId(UUID.randomUUID().toString());
messageRequest.setMessageCode(messageCode);
messageRequest.setEmail("dearmai@dearmai.net");
messageRequest.setUmsUid(UUID.randomUUID().toString());
messageRequest.setUsername("김광은");
messageRequest.setSubject("제목 - test");
messageRequest.setMessage(message);
// messageRequest.setServiceId(serviceId);
log.info("MessageRequest - {}", messageRequest);
return messageRequest;
}
}