SecurityContextHolder를 통해서 인증정보를 설정
테스트 실행 전 인증 정보를 직접 입력하여 테스트 진행
@Before
public void setUp() {
SecurityContextHolder.getContext()
.setAuthentication(new UsernamePasswordAuthenticationToken("test1"
, "test1"
, Arrays.asList(new SimpleGrantedAuthority("ROLE_USER"))
));
}
WithMockUser 어노테이션 사용
별도의 UserDetailsService와 같은 스텁을 제공하지 않아도 간단하게 인증정보를 설정하기 위한 어노테이션
@Test
@WithMockUser(value="test1",roles="USER")
public void User_목록_조회() throws Exception {
mockMvc.perform(get("/user/api/list"))
.andExpect(status().isOk())
.andDo(print());
}
WithUserDetails 어노테이션 사용
UserDetailService를 Bean으로 등록 후 사용
// UserDetailService Bean 등록
@Bean
@Profile("test")
public UserDetailsService userDetailsService() {
return new UserDetailsService() {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
return User
.withUsername(username)
.password("password")
.authorities(new SimpleGrantedAuthority("ROLE_USER"))
.build();
}
};
}
// 테스트 코드 작성
@Test
@WithUserDetails(value = "test1")
public void User_목록_조회_컨트롤러() throws Exception {
mockMvc.perform(get("/user/api/list"))
.andExpect(status().isOk())
.andDo(print());
}
'SpringFramework > JUnit Test' 카테고리의 다른 글
JUnit5 assertAll 사용법 (0) | 2020.11.24 |
---|---|
SpringBoot JUnit5 의존성 설정 (0) | 2020.11.24 |
테스트 코드 작성 (0) | 2020.06.10 |
Assert 함수 (0) | 2020.06.10 |
관련 어노테이션 (0) | 2020.06.10 |