[매입] mg_recv_svc → 전문수신 @Service (ACM-MG-004)
Some checks failed
ci / test (pull_request) Failing after 6s
Some checks failed
ci / test (pull_request) Failing after 6s
This commit is contained in:
parent
7ff117469f
commit
ceec115bb7
1 changed files with 94 additions and 0 deletions
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
Reference in a new issue