마스킹 표준화 적용 (eapim-admin/portal/JS)
- admin: elink-online-core 표준 위임(e메일/이름/전화/IP)으로 규칙 일원화 - portal/JS: 표준 로직 직접 구현 + 기존 owner 비마스킹 유지 - 호출처 무수정/인라인 중복 제거/테스트 통과
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
package com.eactive.apim.portal.common.util;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* eapim-portal {@link StringMaskingUtil}가 보안아키텍처 표준 규칙으로 마스킹하며,
|
||||
* 소유자 본인 조회 시에는 마스킹하지 않는 동작을 검증한다.
|
||||
*/
|
||||
class StringMaskingUtilTest {
|
||||
|
||||
// --- 이름 ---
|
||||
|
||||
@Test
|
||||
@DisplayName("이름 — 2자: 뒤 1자리")
|
||||
void maskName_2chars() {
|
||||
assertEquals("가*", StringMaskingUtil.maskName("가나"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("이름 — 3자: 가운데 1자리")
|
||||
void maskName_3chars() {
|
||||
assertEquals("가*다", StringMaskingUtil.maskName("가나다"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("이름 — 4자: 앞뒤 제외 가운데 전체")
|
||||
void maskName_4chars() {
|
||||
assertEquals("가**라", StringMaskingUtil.maskName("가나다라"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("이름 — 5자: 앞뒤 제외 가운데 전체")
|
||||
void maskName_5chars() {
|
||||
assertEquals("가***마", StringMaskingUtil.maskName("가나다라마"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("이름 — 1자/null/빈문자 방어")
|
||||
void maskName_oneAndNull() {
|
||||
assertEquals("가", StringMaskingUtil.maskName("가"));
|
||||
assertNull(StringMaskingUtil.maskName(null));
|
||||
assertEquals("", StringMaskingUtil.maskName(""));
|
||||
}
|
||||
|
||||
// --- 이메일 ---
|
||||
|
||||
@Test
|
||||
@DisplayName("이메일 — 아이디 앞2·뒤2 마스킹")
|
||||
void maskEmail_normal() {
|
||||
assertEquals("**st1**@test.com", StringMaskingUtil.maskEmail("test123@test.com"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("이메일 — 아이디 4자: 전체 마스킹")
|
||||
void maskEmail_fourChars() {
|
||||
assertEquals("****@test.com", StringMaskingUtil.maskEmail("test@test.com"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("이메일 — 아이디 1자: 전체 마스킹")
|
||||
void maskEmail_oneChar() {
|
||||
assertEquals("*@123.com", StringMaskingUtil.maskEmail("1@123.com"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("이메일 — @ 없으면 원본 / null·빈문자 방어")
|
||||
void maskEmail_invalidAndNull() {
|
||||
assertEquals("notanemail", StringMaskingUtil.maskEmail("notanemail"));
|
||||
assertNull(StringMaskingUtil.maskEmail(null));
|
||||
assertEquals("", StringMaskingUtil.maskEmail(""));
|
||||
}
|
||||
|
||||
// --- 휴대폰/전화 ---
|
||||
|
||||
@Test
|
||||
@DisplayName("휴대폰 — 2·3번째 세그먼트 각 뒤 2자리")
|
||||
void maskMobileNumber_normal() {
|
||||
assertEquals("010-12**-12**", StringMaskingUtil.maskMobileNumber("010-1234-1234"));
|
||||
assertEquals("010-12**-56**", StringMaskingUtil.maskMobileNumber("010-1234-5678"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("휴대폰 — 하이픈 없는 11자리")
|
||||
void maskMobileNumber_noHyphen() {
|
||||
assertEquals("01012**56**", StringMaskingUtil.maskMobileNumber("01012345678"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("휴대폰 — null/빈문자 방어")
|
||||
void maskMobileNumber_null() {
|
||||
assertNull(StringMaskingUtil.maskMobileNumber(null));
|
||||
assertEquals("", StringMaskingUtil.maskMobileNumber(""));
|
||||
}
|
||||
|
||||
// --- owner 인지 (본인 조회 시 비마스킹) ---
|
||||
|
||||
@Test
|
||||
@DisplayName("owner — 본인 조회 시 마스킹하지 않음")
|
||||
void ownerAware_noMaskWhenOwner() {
|
||||
assertEquals("가나다", StringMaskingUtil.maskName("가나다", "user1", "user1"));
|
||||
assertEquals("test123@test.com", StringMaskingUtil.maskEmail("test123@test.com", "user1", "user1"));
|
||||
assertEquals("010-1234-1234", StringMaskingUtil.maskMobileNumber("010-1234-1234", "user1", "user1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("owner — 타인 조회 시 마스킹")
|
||||
void ownerAware_maskWhenNotOwner() {
|
||||
assertEquals("가*다", StringMaskingUtil.maskName("가나다", "user1", "user2"));
|
||||
assertEquals("**st1**@test.com", StringMaskingUtil.maskEmail("test123@test.com", "user1", "user2"));
|
||||
assertEquals("010-12**-12**", StringMaskingUtil.maskMobileNumber("010-1234-1234", "user1", "user2"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user