REST API - 깨진 테스트 수정하기 기존에 작성했던 테스트중 깨지는 테스트가 발생한다. updateEvent getEvent updateEvent 깨지는 이유 ? 로그를 먼저 살펴보자 EventController의 156 Line에서 NullPointerException이 발생한다. EventController 의 156 Line event의 Manager가 Null인 상태에서 equals를 호출하기때문에 예외가 발생한다. 기존 Event의 Manager가 Null인 경우 해당 예외가 발생한다. 왜 Null 이지 ? 기존 테스트 코드들을 살펴보자. 기존의 테스트 코드들은 event를 생성할때 Event에 대한 정보만 생성 할뿐 manager정보에 대한 설정을 하지 않는다. 해결 방법 우선 Accou..
REST API - Event API 개선 CreateAPI 쪽을 보면 치명적인 문제가 존재한다. 현재 사용자의 정보를 Manager로 설정한 이후 문제가 발생 함 문제점 Manager 정보로 사용자의 민감한 정보까지 모두 내보내지고 있다. 해결 방법 해결 방법은 두가지가 존재한다. DTO 를 사용하여 ObjectMapper를사용하여 노출하고싶은 데이터만 Mapping하여 내보내는 방법 JsonSerializer를 사용하는 방법 이전에 구현했던 ErrorSerializer 참고 JsonSerializer를 사용하는 방법을 사용한다. 특정 경우에만 JsonSerializer 사용하기 @JsonComponent 로 등록한다면 매번 Account 타입의 데이터를 내보낼때 JsonSerializer를 사용하게 ..
REST API - Event API 점검 ResourceServer 기존 리소스 서버의 설정에 잘못된 부분이 존재 anonymous 만 허용하도록 설정을 하였기때문에 인증을 한 사용자만 접근이 가능하다. 우리가 의도한 방식의 API는 GET 요청은 모두 인증 필요없이 접근이 가능해야한다. 기존의 설정을 permitAll로 변경하자. 변경된 ResourceServer 설정 GET 요청은 인증 절차 필요없이 리소스에 접근이 가능해진다. 추가 기능 정리 이벤트 목록 API 로그인 했을때 이벤트 생성 링크 제공 이벤트 조회 로그인 했을때 이벤트 Manager인 경우 이벤트 수정 링크 제공
REST API - 외부 설정 Account Account Entity 수정 email은 유일한 값이여야 하기때문에 unique 옵션을 주도록 변경한다. AppRunner 기존에 App이 실행되면 유저를 생성하던 코드를 변경한다. ADMIN , USER 총 2 명의 유저를 생성하도록 변경 외부 설정으로 변경하기 지금까지 설정들과 테스트코드를 보면 다음과 같이 "문자열" 로 되어 있다. 이는 Type-Safe 하지 않으며 의도치않은 결과를 초래할수 있기때문에 외부 설정으로 대체하도록 한다. AppProperties 기존 설정들을 외부설정으로 대체하기 위해 AppProperties 클래스를 생성한다. @ConfigurationProperties 애노테이션을 사용하여 prefix 를 설정해준다. prefix ..