[TDD] 403 에러 / 401 에러 / 404 에러

Walter Mitty·2023년 5월 23일
0

Spring REST Docs MockMvc 을 사용한 테스트.

회사에서 Swagger는 소스 간섭이 너무 심해서 Spring REST Docs 사용을 권장했다.
처음으로 해봐서 이것저것 많은 에러를 만나는 중!

테스트 중 만난 403 에러

해결 방법

Error Code

// when
        ResultActions result = mockMvc.perform(
            RestDocumentationRequestBuilders.post("/admin/login")
                .content(objectMapper.writeValueAsString(request))
                .contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON)
        );

Success Code

.with(csrf()를 붙여서 해결했다!

// when
        ResultActions result = mockMvc.perform(
            RestDocumentationRequestBuilders.post("/admin/login").with(csrf()) //여기가 포인트!!!!
                .content(objectMapper.writeValueAsString(request))
                .contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON)
        );

테스트 중 만난 401 에러

아니... 403, 401은 원래 같이 다니는 애들인가요...?

해결 방법

메서드 위에 @WithMockUser 을 붙여준다!


테스트 중 만난 404 에러

발생 원인

컨트롤러에서 String 객체를 반환했을 때 발생하는 오류다. 따라서 일반적인 객체를 반환하도록 설정해주어야 한다.

해결 방법

Controller 에서

Error Code

public String signUp(Dto dto) {
	return "";
}

Success Code

public ResponseDto signUp(Dto dto) {
	return responseDto;
}

추가 내용

매번 @WithMockUser.with(csrf() 를 붙여줘야 하는게 너무 번거로웠는데,
Security Config 파일에서 anyRequest().permitAll()을 넣어주니 해결되었다.

0개의 댓글