반응형
개인프로젝트를 할 때 테스트케이스를 작성해가며 진행했다.
정상적으로 동작하던 테스트케이스들이 Security를 추가하면서 깨지기 시작했다.
원인을 알아보다 csrf 때문에 그랬다는걸 알게 됐다.
Spring Security csrf를 적용하여 controller unit test를 작성하는 법을 알아보겠다.
방법은 굉장히 간단하다.
1. security-test 의존성 추가
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<version>5.4.5</version>
<scope>test</scope>
</dependency>
2. MockMvc.perform 부분에 with() 로 csrf 추가
@Test
@DisplayName("회원가입 정상 테스트")
public void signup() throws Exception {
// given
MemberRequest member = new MemberRequest("csytest11111", "csytest111111", "csytest");
given(memberService.signUp(any())).willReturn(member.getId());
// when
mockMvc
.perform(post("/signup")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(member))
.with(csrf())
)
.andDo(print())
//then
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(member.getId()));
}
3. 결과 확인
모든 테스트가 정상적으로 동작하는걸 확인하였다.
반응형
'개발 > Spring' 카테고리의 다른 글
[Spring Security] Spring Security Login 테스트코드 만들기 (0) | 2021.03.26 |
---|---|
[Spring Security] Cannot pass a null GrantedAuthority collection (0) | 2021.03.26 |
[Spring] @DataJpaTest (0) | 2021.03.14 |
[Spring] Controller에 파라미터 바인딩은 어떻게 이루어질까 ? (0) | 2021.01.26 |
[Spring] Bean은 어떻게 등록되는 것일까? (1) | 2021.01.17 |
댓글