* 어제의 다짐
- JWT 개념 학습 및 실습 해보기
=> JJWT 깃허브에 있는 공식 문서에 대한 해석 및 JWS 발급과정 이해 및 코드 공부
- JWT 작동을 전제로 Create, Update에서 구현해보기
=> 개념은 이해하였으나, 실질적으로 사용자에게 토큰을 발급하고 이용하는 것은 아직 부족
- java key에 대한 함수들 좀 더 자세히 확인하기
=> JJWT를 공부하면서 큰 이름을 이해하니, 자연스럽게 흐름이 보이고 거시적으로 이해함
- 이전과제와 새로운 과제 합치기
=> Entity 반환형에서 Dto 반환형으로 바꾸면서 거의 완성하였지만 굉장히 많은 시간이 소요됨
또한 삭제부분을 soft version을 위해서 저장소 삭제가 아닌, deleted = true로 전환
*오늘 한 일
- JJWT에 대한 개념을 공부했다. JWS는 서명이 완료된 토큰으로서, 적절한 키와 알고리즘을 이용하여 만들 수 있다. 또한 이것을 다시 reading(parsing)하여 원하는 내부 정보를 조회할 수 있다.
- 테스트코드 작성 시, 맨 처음에 만들어 둔 @BeforeEach 의 객체를 이용해 조회, 생성, 시 다양한 given의 return으로 활용한다. 장점은, 전체적으로 코드의 양을 줄일 수 있다. 단점은, 대신에 이 코드를 읽는 사람이 혼란스럽지 않도록 적절한 메서드명이 필요하다.
- Jpa- findByIdAndDeletedIsFalse라고 Jpa에 변수를 선언하면, 내부적으로 알아서 Id검색과 Delete False 여부를 검사해준다. 이 부분은 좀 더 공부가 필요하겠지만, 내부적으로 변수명에 따라 인식되는 걸로 보인다. 따라서 이제 findById와 isDeleted() 2번의 검사를 할 필요 없이 한번에 검사가 가능하다.
- Controller에서 예외처리를 할 수도 있고, Service에서 예외처리를 할 수 있다. 그렇다면, Controller에서 예외처리를 하면, ServiceTest를 작성할 때, 어떻게 예외처리를 해야하는가? 예외처리를 하지 않을 수도 있고, 예외처리를 Service로 옮길 수도 있다. Service에 예외처리를 만들면 안전한 예외처리를 위해 Controller에 예외처리를 추가하는 것은 선택사항이다.
- ControllerTest에서 Sevice를 @MockBean으로 선언하고, Dto -> Entity로 변환하는 간단한 Service 메서드를 사용하려고 했다. 하지만 제대로 변환되지 않고 null이 나오는데, 그 이유는 Service가 mock으로 선언이 되어있기 때문이다. given을 통해서 예상되는 결과를 알려주어야 한다. 그렇지 않고 그냥 사용하면, 시스템은 어떠한 실행을 하는지 예상하지 못한다. 그래서 메서드를 ControllerTest에 하나 선언하고 변환작업을 하였다.
-삭제 메서드는, 직접 저장소에서 삭제하는 것에서 deleted라는 변수로 삭제 여부를 확인하도록 바꿨다. 이것을 soft delete라고 한다. 진짜 저장소에서 삭제하는 것은 배치프로그램을 통해서 주기적으로 확인하고 삭제하도록 하는 방법을 많이 쓴다.
*내일 할 일
- 테스트 리팩토링 완료하기
- encode, decode에 대해서 테스트코드 작성하기
- 유효하지 않은 토큰에 대한 테스트코드 작성하기
- JWT 작동을 전제로 Create, Update에서 구현해보기
- @EqualsAndHashCode 학습하기
'회고' 카테고리의 다른 글
210305_TIL (0) | 2021.03.07 |
---|---|
210304_TIL (1) | 2021.03.05 |
210302_TIL (0) | 2021.03.03 |
210301_TIL (0) | 2021.03.02 |
[ 코드숨 ] 5주차 회고록 (0) | 2021.03.01 |