Programing/Spring Boot

SpringBoot 테스트코드 작성시 Security 권한 무시하는법 @PreAuthorize우회 하기

딩코딩 2023. 7. 1. 12:29

1. Security Test Configuration 작성: Spring Security의 SecurityTestExecutionListener를 활용하여 테스트용 Security 설정을 제공할 수 있습니다. 이를 통해 테스트 코드에서는 실제 사용자 인증 절차를 거치지 않고도 접근할 수 있습니다. 아래는 예시입니다

@ExtendWith(SpringExtension::class)
@SpringBootTest
@TestExecutionListeners(
    listeners = [SecurityTestExecutionListener::class],
    mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS
)
class MemberServiceTest {

    @Autowired
    private lateinit var adminMemberSvc: AdminMemberService

    // 테스트 코드 작성

}

 

2.@WithMockUser 어노테이션 사용: 해당 어노테이션을 사용하여 사용자의 모의 인증 정보를 제공하고 테스트를 실행할 수 있습니다. 예를 들어, 관리자 권한으로 테스트를 실행하려면 아래와 같이 어노테이션을 적용할 수 있습니다.

@Test
@WithMockUser(username = "admin", roles = ["ADMIN"])
fun 멤버리스트조회() {
    // 테스트 코드 작성
}