[매입] mg_recv_svc → 전문수신 @Service (ACM-MG-004)
Some checks failed
ci / test (pull_request) Failing after 6s

This commit is contained in:
forge-bot 2026-07-18 11:10:38 +00:00
parent 7ff117469f
commit ceec115bb7

View file

@ -0,0 +1,94 @@
package com.klaro.acquirecore.acquiring.service;
import com.klaro.acquirecore.acquiring.codec.MessageCodec;
import com.klaro.acquirecore.acquiring.codec.UnpackedMessage;
import com.klaro.acquirecore.acquiring.dto.TxRequest;
import com.klaro.acquirecore.acquiring.dto.TxResponse;
import com.klaro.acquirecore.acquiring.repository.TxRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class)
class TxServiceTest {
@Mock
private TxRepository txRepository;
private MessageCodec messageCodec;
private TxService txService;
@BeforeEach
void setUp() {
messageCodec = new MessageCodec();
txService = new TxService(messageCodec, txRepository);
}
@Test
void processMessage_validMessage_returnsApproved() {
String rawMessage = "0100TRX123456789MER00000012345 41111111111111112025/1230N ";
TxResponse response = txService.processMessage(rawMessage.getBytes());
assertNotNull(response);
assertEquals("00", response.getRespCode());
assertEquals("Approved", response.getRespMsg());
verify(txRepository, times(1)).save(any(TxRequest.class));
}
@Test
void processMessage_emptyMessage_returnsError() {
TxResponse response = txService.processMessage(new byte[0]);
assertNotNull(response);
assertEquals("99", response.getRespCode());
}
@Test
void processMessage_nullMessage_returnsError() {
TxResponse response = txService.processMessage(null);
assertNotNull(response);
assertEquals("99", response.getRespCode());
}
@Test
void codec_unpackValidMessage_parsesFields() {
String raw = "0100TRX123456789MER00000012345 41111111111111112025/1230N ";
UnpackedMessage unpacked = messageCodec.unpack(raw.getBytes());
assertEquals("0100", unpacked.getTxType());
assertEquals("TRX123456789", unpacked.getTraceNo());
assertEquals("MER00000012345", unpacked.getMerchantId());
assertEquals("4111111111111111", unpacked.getCardNo());
}
@Test
void codec_unpackEmpty_throwsException() {
assertThrows(IllegalArgumentException.class, () -> messageCodec.unpack(new byte[0]));
}
@Test
void codec_packUnpacked_roundTrips() {
UnpackedMessage original = new UnpackedMessage();
original.setTxType("0100");
original.setTraceNo("TRX123456789");
original.setMerchantId("MER00000012345");
original.setAmount("000000100000");
original.setCardNo("4111111111111111");
original.setExpiryDate("2025/1230");
original.setInstallments("00");
original.setFiller("");
byte[] packed = messageCodec.pack(original);
UnpackedMessage result = messageCodec.unpack(packed);
assertEquals(original.getTxType(), result.getTxType());
assertEquals(original.getTraceNo(), result.getTraceNo());
}
}