1. 요구사항

  • 통합 테스트에서 Admin, Seller, Member와 같은 권한이 연관된 페이지들을 테스트 해야한다.
  • 기존의 @Test 어노테이션으로 해당 URI를 불러오면 인증이 되어있지 않기 때문에 로그인 페이지로 리다이렉트 되어 302 에러가 발생한다.
  • 따라서 200 상태가 되어 테스트를 통과하기 위해선 해당 페이지에 인증절차를 거친뒤 진행되어야 한다.

 

2. 해결사항

@WithMockUser 어노테이션으로 해당 계정 정보 및 권한을 직접 입력하여 인증시키도록 한다.

@Slf4j
@ExtendWith(SpringExtension.class)
@SpringBootTest
@AutoConfigureMockMvc
public class AdminControllerTests { // 관리자 컨트롤러 테스트
	@Autowired
	private MockMvc mockMvc;

	@Test
    // 인증이 된 상태로 테스트를 진행함
	@WithMockUser(username = "abcd1234", password = "$2a$10$TneVbdjmbOA0la7BtZKxAOFtZWHH3L9NCYZL4l4Wm9FdmVfA/Tk4y", authorities = "ADMIN")
	public void getMappingTest() throws Exception {
		// 관리자 마이페이지
		mockMvc.perform(MockMvcRequestBuilders.get("/admin/mypage")).andExpect(MockMvcResultMatchers.status().isOk());
		
	}
}

 

3. 출처

전준엽님 티스토리 블로그 (galid1.tistory.com/768)