[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 속성으로 사용자의 역할을 지정할 수 있습니다.

위의 예제에서 testUserEndpointtestAdminEndpoint 메소드는 /user/admin 경로로 GET 요청을 보내고, 응답으로 “Hello, user!”와 “Hello, admin!” 문자열을 기대합니다.

테스트 실행하기

테스트를 실행하기 위해 IDE에서 SecurityTests를 실행하거나, Maven 명령어 mvn test를 사용할 수 있습니다.

테스트를 실행하면 @WithMockUser 어노테이션에 지정한 사용자로 인증되어 해당 사용자의 역할에 따라 접근 권한이 테스트됩니다.

참고 자료