본문 바로가기

스프링과 JPA 기반 웹 어플리케이션 개발85

09. 회원 가입: 인증 메일 확인 테스트 및 리팩토링 테스트 입력값이 잘못 된 경우 error 프로퍼티가 model에 들어가 있는지 확인 뷰 이름이 account/checked-email 인지 확인 입력값이 올바른 경우 모델에 error가 없는지 확인 모델에 numberOfUser가 있는지 확인 모델에 nickname이 있는지 확인 뷰 이름 확인 리팩토링 코드의 위치가 적절한가? 테스트 코드 추가 package me.weekbelt.studyolle.account; @Transactional// 추가 @AutoConfigureMockMvc @SpringBootTest class AccountControllerTest { // 기존 코드 ........... @DisplayName("인증 메일 확인 - 입력값 오류") @Test public void chec.. 2020. 4. 18.
08. 회원 가입: 인증 메일 확인 GET "/check-email-token" token=${token} email=${email} 요청 처리 이메일이 정확하지 않은 경우에 대한 에러 처리 토큰이 정확하지 않은 경우에 대한 에러 처리 이메일과 토큰이 정확한 경우 가입 완료 처리 가입 일시 설정 이메일 인증 여부 true로 설정 인증 확인 뷰 입력값에 오류가 있는 경우 적절한 메시지 출력 인증이 완료된 경우, 환영 문구와 함께 몇번째 사용자인지 보여줄 것 GET "/check-email-token" 요청을 위해 AccountController에 메소드 작성 package me.weekbelt.studyolle.account; @RequiredArgsConstructor @Controller public class AccountControl.. 2020. 4. 18.
07. 회원 가입: 패스워드 인코더 절대로 패스워드를 평문으로 저장해서는 안 됩니다. Account 엔티티를 저장할 때 패스워드 인코딩 하기 스프링 시큐리티 권장 PasswordEncoder PasswordEncoderFactories.createDelegatingPasswordEncode() 여러 해시 알고리듬을 지원하는 패스워드 인코더 기본 알고리든 bcrypt 해싱 알고리듬(bcrypt)과 솔트(salt) 해싱 알고리듬을 쓰는 이유? 1234567 => aaaabbbb 이런식으로 암호화 하기 위해서 솔트를 쓰는 이유? 해당 문자열에 대해 암호화를 여러번 해본경우 aaaabbbb => 1234567이라는 것을 알아낼 수 있다. 따라서 저장할때 1234567 + salt값 => aaafwefqwefasdf 전혀 다른 값이 나오도록하면 1.. 2020. 4. 18.
06. 회원 가입: 리팩토링 및 테스트 리팩토링 하기 전에 테스트 코드를 먼저 작성하자. 그래야 코드를 변경한 이후에 불안하지 않다. 변경한 코드가 무언가를 깨트리지 않았다는 것을 확인할 수 있다. 테스트할 것 폼에 이상한 값이 들어간 경우에 다시 폼이 보이는가? 폼에 값이 정상적인 경우 가입한 회원 데이터가 존재하는가? 이메일이 보내지는가? 리팩토링 메소드가 너무 길지 않은가? 코드를 읽기 쉬운가? 내가 작성한 코드를 내가 읽기 어렵다면 남들에겐 훨씬 더 어렵다. 코드가 적절한 위치에 있는가? 객체들 사이의 의존관계 책임이 너무 많진 않은지 AccountControllerTest에 회원가입 처리 테스트 작성(입력값 오류, 입력값 정상) package me.weekbelt.studyolle.account; @AutoConfigureMockMv.. 2020. 4. 17.