-
정규식 검증 테스트코드 실패스파르타코딩클럽/스프링 개인 프로젝트 - 기본 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에 이 형식을 추가하여 브라우저, 서버에서 이중으로 검증할 수 있게 하였다.
'스파르타코딩클럽 > 스프링 개인 프로젝트 - 기본 CRUD 2' 카테고리의 다른 글
스프링프로젝트2 1일차 (0) 2023.11.16