전화번호 정규화 유틸 추가 및 적용:
eapim-portal CI / build (push) Has been cancelled
eapim-portal Test / test (push) Has been cancelled

- PhoneNumberUtil 도입: 한국번호 정규화/숫자 추출 지원
- 유틸 적용: 모든 저장 및 조회에 정규형 강제
- 초대 매칭 오류 수정: 휴대폰 형식 차이 대응
This commit is contained in:
Rinjae
2026-06-29 18:26:15 +09:00
parent 77aea79363
commit c1ae12e1ca
13 changed files with 187 additions and 64 deletions
@@ -0,0 +1,70 @@
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;
class PhoneNumberUtilTest {
@Test
@DisplayName("휴대폰 11자리 → 010-XXXX-XXXX (멱등)")
void mobile11() {
assertEquals("010-1234-5678", PhoneNumberUtil.normalize("01012345678"));
assertEquals("010-1234-5678", PhoneNumberUtil.normalize("010-1234-5678"));
assertEquals("010-9912-0000", PhoneNumberUtil.normalize("01099120000"));
}
@Test
@DisplayName("휴대폰 10자리 → 01X-XXX-XXXX")
void mobile10() {
assertEquals("011-123-4567", PhoneNumberUtil.normalize("0111234567"));
}
@Test
@DisplayName("서울 02 → 9자리 02-XXX-XXXX / 10자리 02-XXXX-XXXX")
void seoul() {
assertEquals("02-123-4567", PhoneNumberUtil.normalize("021234567"));
assertEquals("02-1234-5678", PhoneNumberUtil.normalize("0212345678"));
assertEquals("02-1234-5678", PhoneNumberUtil.normalize("02-1234-5678"));
}
@Test
@DisplayName("지역/070 → 10자리 0XX-XXX-XXXX / 11자리 0XX-XXXX-XXXX")
void area() {
assertEquals("031-234-5678", PhoneNumberUtil.normalize("0312345678"));
assertEquals("070-1234-5678", PhoneNumberUtil.normalize("07012345678"));
}
@Test
@DisplayName("안심번호 050X 12자리 → 0XXX-XXXX-XXXX")
void safetyNumber() {
assertEquals("0507-1234-5678", PhoneNumberUtil.normalize("050712345678"));
}
@Test
@DisplayName("대표번호 15XX/16XX/18XX 8자리 → XXXX-XXXX")
void representative() {
assertEquals("1588-1234", PhoneNumberUtil.normalize("15881234"));
assertEquals("1644-5678", PhoneNumberUtil.normalize("16445678"));
assertEquals("1800-1234", PhoneNumberUtil.normalize("18001234"));
}
@Test
@DisplayName("미해당 패턴/null/blank 는 원본 유지")
void passthrough() {
assertEquals("123", PhoneNumberUtil.normalize("123"));
assertEquals("abc", PhoneNumberUtil.normalize("abc"));
assertEquals("", PhoneNumberUtil.normalize(""));
assertNull(PhoneNumberUtil.normalize(null));
}
@Test
@DisplayName("digitsOnly 는 숫자만 추출, null 유지")
void digitsOnly() {
assertEquals("01012345678", PhoneNumberUtil.digitsOnly("010-1234-5678"));
assertEquals("0212345678", PhoneNumberUtil.digitsOnly("02-1234-5678"));
assertNull(PhoneNumberUtil.digitsOnly(null));
}
}