ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정규식 검증 테스트코드 실패
    스파르타코딩클럽/스프링 개인 프로젝트 - 기본 CRUD 2 2023. 11. 21. 19:58

     

    진행과정 중 에러사항 기술

     

    1. username, password  정규식 검증 

    회원가입 정규식이 잘 적용되는지 확인하기 위해 테스트코드를 작성해보았으나,

     

        // "ID는 최소 4자 이상, 10자 이하이며 알파벳 소문자(a~z), 숫자(0~9)로 구성되어야 한다."
        // "비밀번호는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9)로 구성되어야 한다."
        
        @Test
        void successTest() {
            SignupRequestDto testrequestDto = new SignupRequestDto();
            testrequestDto.setUsername("abcde");
            testrequestDto.setPassword("abcAbc123");
    
            // 예외 안생기면 성공
            assertThrows(Exception.class, () -> {});
        }
    
        @Test
        void idFailedTest() {
            System.out.println("예외가 발생하면 성공");
            SignupRequestDto testrequestDto = new SignupRequestDto();
            assertThrows(Exception.class, () -> {
            // 대문자 입력
    //        testrequestDto.setUsername("ABCDE");
            // 길이 미달
    //        testrequestDto.setUsername("ABC");
            // 길이 초과
    //        testrequestDto.setUsername("0123456789111");
            // 영어 제외 문자 입력
            testrequestDto.setUsername("으아아아아");
            testrequestDto.setPassword("abcAbc123");
            });
        }
        @Test
        void passwordFailedTest() {
            System.out.println("예외가 발생하면 성공");
            SignupRequestDto testrequestDto = new SignupRequestDto();
            testrequestDto.setUsername("ABCDE");
            // 길이 미달
            testrequestDto.setPassword("aA1");
            // 영어 제외 입력
            testrequestDto.setPassword("ㅁㄴㅇㅁㄴㅇ");
    
            assertThrows(Exception.class, () -> {});
        }
    assertThrows(Exception.class, () -> {});

    이 부분이 작동하지 않아 포기하고 다른 방법을 찾아보았다.

     

    try-catch문으로 바꿔서도 시도해보았으나 무엇이 문제인지 찾을 수 가 없어 테스트코드는 포기하였다.

     

    -> 테스트코드에서 에러를 뱉지 않는것이 그 원인이었다.

    찜찜한 결론이긴 하지만 포스트맨에서 입력데이터를 바꿔보며 적용했을때는 정규식 검증이 정상적으로 잘 동작하였다.

     

     

     

     

    다른 방법이 없을까 해서 '정규식 검증' 키워드로 구글링을 하다보니 자바스크립트 정규식 검증이 눈에 보였다.

    프론트에서도 검증이 가능하다고?

    자바스크립트를 잘 모르기 때문에  혹시 html로도 되나 하는 기대감에 추가적으로 더 찾아보았고,

    해답을 발견하였다.

     

    required minlength="8" maxlength="15" pattern="[a-zA-Z0-9]{8,15}"
            title = "비밀번호는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9)로 구성되어야 한다."

     

    html의 username과 password에 이 형식을 추가하여  브라우저, 서버에서 이중으로 검증할 수 있게 하였다.

     

     

     

     

Designed by Tistory.