[java] 스프링 시큐리티 테스트
스프링 시큐리티는 웹 애플리케이션의 보안을 처리하는 데 사용되는 강력한 프레임워크입니다. 이를 테스트하기 위해서는 스프링 MVC 테스트 프레임워크와 함께 사용해야 합니다. 이 글에서는 스프링 시큐리티를 테스트하는 방법에 대해 알아보겠습니다.
의존성 추가하기
먼저, 스프링 시큐리티 의존성을 프로젝트에 추가해야 합니다. pom.xml
파일에 아래의 의존성을 추가합니다:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
테스트 작성하기
스프링 시큐리티를 테스트하기 위해서는 @WithMockUser
어노테이션을 사용하여 모의 사용자를 생성할 수 있습니다. 아래는 간단한 예제입니다:
@SpringBootTest
@AutoConfigureMockMvc
public class SecurityTests {
@Autowired
private MockMvc mockMvc;
@Test
@WithMockUser(username = "user", roles = {"USER"})
public void testUserEndpoint() throws Exception {
mockMvc.perform(get("/user"))
.andExpect(status().isOk())
.andExpect(content().string("Hello, user!"));
}
@Test
@WithMockUser(username = "admin", roles = {"ADMIN"})
public void testAdminEndpoint() throws Exception {
mockMvc.perform(get("/admin"))
.andExpect(status().isOk())
.andExpect(content().string("Hello, admin!"));
}
}
@WithMockUser
어노테이션은 테스트 메소드가 실행될 때 모의 사용자를 생성합니다. username
속성으로 사용자의 이름을, roles
속성으로 사용자의 역할을 지정할 수 있습니다.
위의 예제에서 testUserEndpoint
와 testAdminEndpoint
메소드는 /user
와 /admin
경로로 GET 요청을 보내고, 응답으로 “Hello, user!”와 “Hello, admin!” 문자열을 기대합니다.
테스트 실행하기
테스트를 실행하기 위해 IDE에서 SecurityTests
를 실행하거나, Maven 명령어 mvn test
를 사용할 수 있습니다.
테스트를 실행하면 @WithMockUser
어노테이션에 지정한 사용자로 인증되어 해당 사용자의 역할에 따라 접근 권한이 테스트됩니다.