- 유저가 로그인한 상태를 가정하고 테스트해야함.
- spring-securty-test를 사용해서 테스트 직전에 Mock User를 인증시켜놓고 테스트 구동 가능.
@WithMockUser
- 가짜 User 생성하고
Authentication
인스턴스 생성.
- 여기서 User 는 org.springframework.security.core.userdetails.User를 말함. 멤버변수
- role
- authorities
- username
- password
- setUpBefore
- 여기서 주의할 점은 WithMockUser는 org.springframework.security.core.userdetails.User를 만들어 주지만, 우리에게 필요한 User는 우리가 만든 custom User.
@WithUserDetails
- WithMockUser와 마찬가지로 Mock(가짜) User를 생성하고 Authentication을 만든다.
- 차이점
- 가짜 User를 가져올 때 UserDetailsService의 Bean 이름을 넣어줘서 userDetailsService.loadUserByUsername(String username)을 통해 User를 가져온다
멤버변수
- value
- userDetailsServiceBeanName
- UserDetailsService를 구현한 Bean의 이름
- setupBefore
@WithAnonymousUser
- WithMockUser와 동일하지만 인증된 유저 대신에 익명(Anonymous)유저를 Authentication에서 사용한다.
- 익명이기 때문에 멤버변수에 유저와 관련된 값이 없다
멤버변수
@WithSecurityContext
- 다른 방식들은 Authentication을 가짜로 만들었다고 한다면 WithSecurityContext는 아예 SecurityContext를 만듭니다.
- 멤버변수
.with(user( ))
반드시 해줘야하는 설정.
@BeforEach
public void setup() {
mockMvc = MockMvcBuilders
.webAppContextSetup(context)
.apply(springSecurity()) -> 요거.
.build();
}
- Spring Security를 Spring MVC 테스트와 통합할 때 필요한 모든 초기 세팅을 수행한다.
참고
- 패스트캠퍼스 - 한 번에 끝내는 Spring 완.전.판 초격차 패키지 online.
- tecoble