본문 바로가기
회고

210304_TIL

코동이 2021. 3. 5.

* 어제의 다짐

- 테스트 리팩토링 완료하기

=> 토큰 이용을 제외한 모든 테스트 코드를 리팩토링 완료.

 

- encode, decode에 대해서 테스트코드 작성하기

=> JWT에 관한 부분으로, 사용자 저장소를 이용하여 까다로울 것으로 예상하였으나, 저장소에 mockBean을 주입하여 해결

 

- 유효하지 않은 토큰에 대한 테스트코드 작성하기

=> 유효하지 않은 토큰이란, null, blank 등의 상황으로 해당 경우에 대한 케이스 생성 완료

 

- JWT 작동을 전제로 Create, Update에서 구현해보기

=> 토큰을 생성하고, claims에 대해 파싱하는 것까지 서비스 레이어에 추가 완료. 파싱한 정보를 다시 어떻게 이용할지에 대한 고민 필요

 

- @EqualsAndHashCode 학습하기

=> 다음날로 미루기

*오늘 한 일

- 열심히 JWT코드를 작성하고, 테스트 코드 또한 만들었다. 이번에는 npm test하는 파일을 미리 열어봐서 언제 오류를 내는지 확인하고 예외를 만들었다. 토큰 생성을 위한 사용자 유효성 검사에서 이메일, 비밀번호에 대한 검사를 각각 하고 친절하게  어디가 잘못인지 결과를 응답했는데, 보안 상 좋지 않다는 답변을 받았다. 그래서, 2가지로 나누었던 예외를 하나의 "잘못된 요청" 예외로 퉁치고, 반환되는 메세지도 "잘못된 요청"이런식으로만 드러냈다.

 

- Entity와 Dto를 자유자재로 변환하기 위하여 toEntity() (Dto -> Entity) 메서드를 복구하였다. builder를 이용해서 일일이 변환하는 것 보다 자체적으로 메서드를 가지고 해결하는 것이 가독성에 훨씬 좋다고 생각했다. 또한 많이 사용하는 전략이라고 한다. Entity -> Dto로 변환하기 위해 추후 정적 팩토리 메서드를 만들 생각이다.

 

- 예외에 대한 처리 고민 중, 계속 안쪽 layer에서 바깥쪽 layer로 예외를 가지고 가는 경우를 연쇄 체이닝이라고 배웠다. 하지만 이러한 경우는 특수한 경우에 사용하며, 일반적으로 예외처리는 ControllerAdvice를 통해 일괄적으로 할 수 있다는 답변을 받았다. 저번에 고민하던 Controller와 Service 어디에 예외처리를 할 것인가는 가장 안쪽의 layer에서 예외처리를 하고, 바깥에 있는 layer는 해당 내용을 모르도록 만들었다.

 

*질문

- try/catch를 사용해서 예외를 발생하는 것과, 클래스에 throws를 통해서 예외를 발생시키는 것은 같은 것일까?

근데 throws를 하면 매개변수는 어떻게 삽입하지?

*내일 할 일

1. 테스트코드 작성 마무리하기

2. JWT에 관한 Entity <-> Dto 변환 로직과 테스트 리팩토링 완료하기

3. 정적팩토리 메서드에 대해 이펙티브 자바 살펴보고 글 찾아보기

4. @EqualsAndHashCode 학습하기

5. @NoArgsConstructor가 안전한지 문서 번역하고 토론하기

 

( 처음에는 생각나는 대로 적었다가 우선순위에 따라서 번호로 정렬 )

 

반응형

'회고' 카테고리의 다른 글

210306_TIL  (0) 2021.03.07
210305_TIL  (0) 2021.03.07
210303_TIL  (0) 2021.03.04
210302_TIL  (0) 2021.03.03
210301_TIL  (0) 2021.03.02