일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 익명 클래스
- 람다식
- 접근지시자
- System.err
- yield
- 제네릭 타입
- throwable
- raw 타입
- 바운디드 타입
- 브릿지 메소드
- System.out
- 함수형 인터페이스
- junit 5
- 프리미티브 타입
- 정렬
- Study Halle
- annotation processor
- auto.create.topics.enable
- 자바스터디
- 로컬 클래스
- 스파르타코딩클럽
- 자바할래
- System.in
- github api
- 상속
- 합병 정렬
- 항해99
- 제네릭 와일드 카드
- docker
- Switch Expressions
Archives
- Today
- Total
코딩하는 털보
11 to 9, Day 8 본문
11 to 9, Day 8
Today, ToDoList
자바 라이브 스터디
- 14주차 다시보기
- 15주차 공부하기
Toy Project - NGMA
- 예외 처리 추가
15주차 공부
작성 후 포스팅 완료~
https://rockintuna.tistory.com/107
예외 처리 추가
@Test
@WithUserDetails(value = "jilee@example.com", setupBefore = TestExecutionEvent.TEST_EXECUTION)
public void pick() throws Exception {
mvc.perform(post("/pick")
.param("email", "sjlee123@example.com"))
.andDo(print())
.andExpect(status().is3xxRedirection());
}
@PostMapping("/pick")
public String pick(@AuthenticationPrincipal UserAccount userAccount,
@ModelAttribute AccountDto accountDto) {
Account lover = accountService.getUserByEmail(accountDto.getEmail());
accountService.pickLover(userAccount.getAccount(), lover);
return "redirect:/login";
}
위 테스트에서 401 Unauthorized 가 계속 발생해서 혹시 인증에 관련된 문제가 있나 한참을 확인 하다가,
public Account getUserByEmail(String email) {
return accountRepository.findByEmail(email)
.orElseThrow(() -> new UsernameNotFoundException(email));
}
디버거에서 확인한 결과 getUserByEmail() 에서 UsernameNotFoundException으로 예외 처리 되고 있었던거임~
근데 UsernameNotFoundException가 401로 반환되는건 처음알았다.. 응답 바디에는 아무것두 없공...
그래서 다음에도 혼란이 올까봐 ExceptionHandler 추가함
@ExceptionHandler
public ResponseEntity<?> usernameNotFoundException(UsernameNotFoundException exception) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Email address not founded.");
}
테스트 코드도 맞게 변경
@Test
@WithUserDetails(value = "jilee@example.com", setupBefore = TestExecutionEvent.TEST_EXECUTION)
public void pickNotExistAccount() throws Exception {
mvc.perform(post("/pick")
.param("email", "sjlee123@example.com"))
.andDo(print())
.andExpect(status().isUnauthorized())
.andExpect(content().string("Email address not founded."));
}
Comments