浏览代码

[공통][Common] 패스워드 유효성 검사 유틸리티 및 테스트
- 8자 이상, 영소문자, 대문자, 숫자, 특수문자 모두 포함
- 지원 특수 문자 : #?!@$%^&*0()-+=_~`

hyodong.min 7 年之前
父节点
当前提交
98e6e16388

+ 14 - 0
app/src/test/java/kr/co/zumo/app/lifeplus/util/StringUtil.java

@@ -7,6 +7,8 @@ import android.support.annotation.Nullable;
 import android.text.TextUtils;
 import android.util.Patterns;
 
+import java.util.regex.Pattern;
+
 /**
  * String 관련 유틸리티 클래스
  * <pre>
@@ -38,4 +40,16 @@ public class StringUtil {
   public static boolean isValidEmail(String email) {
     return isFull(email) && Patterns.EMAIL_ADDRESS.matcher(email).matches();
   }
+
+  /**
+   * 유효한 패스워드인지 검사
+   * - 8자 이상, 영소문자, 대문자, 숫자, 특수문자 모두 포함
+   *
+   * @param password asdf|1!aw35rtaeQ
+   * @return false|true
+   */
+  public static boolean isValidPassword(String password) {
+    // ^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$
+    return isFull(password) && Pattern.compile("^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*0()-+=_~`]).{8,}$").matcher(password).matches();
+  }
 }

+ 12 - 0
app/src/test/java/kr/co/zumo/app/lifeplus/util/StringUtilTest.java

@@ -29,4 +29,16 @@ public class StringUtilTest {
     assertTrue(StringUtil.isValidEmail("a@com.com.com"));
     assertTrue(StringUtil.isValidEmail("a@a.com"));
   }
+
+  @Test
+  public void isValidPassword() {
+    assertFalse(StringUtil.isValidPassword("")); // 공백
+    assertFalse(StringUtil.isValidPassword(null)); // null
+    assertFalse(StringUtil.isValidPassword("werT12349")); // 특수 문자 없음
+    assertFalse(StringUtil.isValidPassword("12345678asdf@")); // 대문자 없음
+    assertFalse(StringUtil.isValidPassword("QRXCV#$1234")); // 소문자 없음
+    assertFalse(StringUtil.isValidPassword("ZCVSwer@#%")); // 숫자 없음
+    assertTrue(StringUtil.isValidPassword("q12`346&*ZXC")); // correct
+    assertTrue(StringUtil.isValidPassword("q12`-=~!@#$%^&*()_+C")); // correct
+  }
 }