카카오페이 isagreed 필드 체크 로직 필터 개발
This commit is contained in:
@@ -0,0 +1,45 @@
|
|||||||
|
package com.eactive.eai.custom.adapter.http.dynamic.filter;
|
||||||
|
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import com.eactive.eai.adapter.http.dynamic.filter.FilterException;
|
||||||
|
import com.eactive.eai.adapter.http.dynamic.filter.HttpAdapterFilter;
|
||||||
|
import com.eactive.eai.common.util.JacksonUtil;
|
||||||
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 카카오뱅크 암복호화에 맟추어 커스텀 필요
|
||||||
|
*/
|
||||||
|
public class KakaopayFilter implements HttpAdapterFilter {
|
||||||
|
|
||||||
|
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object doPreFilter(String adptGrpName, String adptName, Object message, Properties prop,
|
||||||
|
HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||||
|
|
||||||
|
JsonNode rootNode = JacksonUtil.readTree(message, OBJECT_MAPPER);
|
||||||
|
|
||||||
|
// term_agreements[0].is_agreed 값이 true 인지 확인
|
||||||
|
boolean firstAgreed = JacksonUtil.getBoolean(rootNode, "term_agreements[0].is_agreed", false);
|
||||||
|
|
||||||
|
if (!firstAgreed) {
|
||||||
|
throw new FilterException("EB000003", "금리한도조회실패 - 고객 요청으로 인한 CB 조회 실패", 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
return message;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object doPostFilter(String adptGrpName, String adptName, Object resultMessage, Properties prop,
|
||||||
|
HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||||
|
return resultMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
+108
@@ -0,0 +1,108 @@
|
|||||||
|
package com.eactive.eai.custom.adapter.http.dynamic.filter;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertSame;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import com.eactive.eai.adapter.http.dynamic.filter.FilterException;
|
||||||
|
|
||||||
|
class KakaopayFilterTest {
|
||||||
|
|
||||||
|
private KakaopayFilter filter;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
filter = new KakaopayFilter();
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
// doPreFilter
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void preFilter_firstAgreedTrue_returnsMessage() throws Exception {
|
||||||
|
String message = "{\"term_agreements\":[{\"is_agreed\":true}]}";
|
||||||
|
|
||||||
|
Object result = filter.doPreFilter(null, null, message, null, null, null);
|
||||||
|
|
||||||
|
assertSame(message, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void preFilter_firstAgreedFalse_throwsFilterException() throws Exception {
|
||||||
|
String message = "{\"term_agreements\":[{\"is_agreed\":false}]}";
|
||||||
|
|
||||||
|
FilterException ex = assertThrows(FilterException.class,
|
||||||
|
() -> filter.doPreFilter(null, null, message, null, null, null));
|
||||||
|
assertEquals("EB000003", ex.getMessage());
|
||||||
|
assertEquals(200, ex.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void preFilter_isAgreedFieldMissing_throwsFilterException() {
|
||||||
|
// is_agreed 필드 없음 → getBoolean 기본값 false → 예외
|
||||||
|
String message = "{\"term_agreements\":[{}]}";
|
||||||
|
|
||||||
|
assertThrows(FilterException.class,
|
||||||
|
() -> filter.doPreFilter(null, null, message, null, null, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void preFilter_termAgreementsEmpty_throwsFilterException() {
|
||||||
|
// 배열이 비어있어 [0] 접근 불가 → getBoolean 기본값 false → 예외
|
||||||
|
String message = "{\"term_agreements\":[]}";
|
||||||
|
|
||||||
|
assertThrows(FilterException.class,
|
||||||
|
() -> filter.doPreFilter(null, null, message, null, null, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void preFilter_termAgreementsMissing_throwsFilterException() {
|
||||||
|
// term_agreements 필드 자체 없음 → getBoolean 기본값 false → 예외
|
||||||
|
String message = "{}";
|
||||||
|
|
||||||
|
assertThrows(FilterException.class,
|
||||||
|
() -> filter.doPreFilter(null, null, message, null, null, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void preFilter_multipleEntries_firstAgreedTrue_returnsMessage() throws Exception {
|
||||||
|
// 첫 번째 true, 두 번째 false → 통과
|
||||||
|
String message = "{\"term_agreements\":["
|
||||||
|
+ "{\"is_agreed\":true},"
|
||||||
|
+ "{\"is_agreed\":false}"
|
||||||
|
+ "]}";
|
||||||
|
|
||||||
|
Object result = filter.doPreFilter(null, null, message, null, null, null);
|
||||||
|
|
||||||
|
assertSame(message, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void preFilter_multipleEntries_firstAgreedFalse_throwsFilterException() {
|
||||||
|
// 첫 번째 false, 두 번째 true → 예외
|
||||||
|
String message = "{\"term_agreements\":["
|
||||||
|
+ "{\"is_agreed\":false},"
|
||||||
|
+ "{\"is_agreed\":true}"
|
||||||
|
+ "]}";
|
||||||
|
|
||||||
|
assertThrows(FilterException.class,
|
||||||
|
() -> filter.doPreFilter(null, null, message, null, null, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
// doPostFilter
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void postFilter_alwaysReturnsResultMessage() throws Exception {
|
||||||
|
String resultMessage = "{\"result\":\"ok\"}";
|
||||||
|
|
||||||
|
Object result = filter.doPostFilter(null, null, resultMessage, null, null, null);
|
||||||
|
|
||||||
|
assertSame(resultMessage, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user