@WithMockUser
•
기능: @WithMockUser는 테스트를 위해 가상의 인증된 사용자를 생성합니다.
•
기본 설정: 기본적으로 사용자 이름은 "user"이고, 비밀번호는 "password"이며, 권한은 "ROLE_USER"입니다.
•
커스터마이징: 사용자 이름, 비밀번호, 권한 등을 지정할 수 있습니다.
@Test
@WithMockUser(username = "testUser", roles = {"USER", "ADMIN"})
void testWithMockUser() {
// 테스트 코드
}
Java
복사
•
사용 사례: 인증된 사용자로 액세스해야 하는 보안 기능을 테스트할 때 사용됩니다.
@WithAnonymousUser
•
기능: @WithAnonymousUser는 인증되지 않은 익명 사용자를 시뮬레이션합니다.
•
principal 값: 익명 사용자의 principal은 "anonymousUser"로 설정됩니다.
•
권한: 익명 사용자의 권한은 "ROLE_ANONYMOUS"입니다.
@Test
@WithAnonymousUser
void testWithAnonymousUser() {
// 테스트 코드
}
Java
복사
•
사용 사례: 인증되지 않은 상태에서의 접근을 테스트할 때 사용됩니다.
@WithUserDetails
•
기능: @WithUserDetails는 UserDetailsService를 통해 로드된 사용자 정보를 사용하여 보안 컨텍스트를 설정합니다.
•
필요한 설정: 테스트에서 사용될 사용자 정보를 제공하는 UserDetailsService 빈이 필요합니다.
•
사용 방법: 애너테이션의 value 속성에 UserDetailsService를 통해 로드될 사용자 이름을 지정합니다.
@Test
@WithUserDetails(value = "testUser", userDetailsServiceBeanName = "myUserDetailsService")
void testWithUserDetails() {
// 테스트 코드
}
Java
복사
•
사용 사례: 실제 사용자 정보를 기반으로 인증이 필요한 경우 사용됩니다. 이 방법은 사용자 세부 정보를 커스터마이징해야 하거나 데이터베이스에서 사용자 정보를 가져와야 하는 경우에 유용합니다.
요약 및 사용 시 주의 사항
•
@WithMockUser: 간단하게 가짜 인증 사용자를 테스트에 삽입. 주로 권한 기반 테스트에 사용.
•
@WithAnonymousUser: 익명 사용자를 테스트하는 데 사용. 비인증 사용자의 접근을 테스트.
•
@WithUserDetails: UserDetailsService를 통해 실제 사용자 데이터를 로드. 데이터베이스 연동 또는 사용자 정보가 필요한 복잡한 시나리오에 사용.