[SpringBoot] 테스트 환경 구축 - MockUser
2024. 4. 9. 11:41ㆍSpring
설명
해당 글은 https://hunstory.tistory.com/81 에 이어서 작성된 글입니다.
테스트 동작시 User 모킹설정에 대한 글입니다.
구성
1. SecurityContextFactory에서 사용할 MockUser 구성
@Retention(RetentionPolicy.RUNTIME)
@WithSecurityContext(factory = WithMockCustomUserSecurityContextFactory.class)
public @interface WithCustomMockUser {
long id() default 1L;
String name() default "이상훈";
String email() default "";
String[] roles() default {"NORMAL"};
}
2. 커스텀 설정을 위한 커스텀 SecurityContextFactory 구성
public class WithMockCustomUserSecurityContextFactory implements WithSecurityContextFactory<WithCustomMockUser> {
@Override
public SecurityContext createSecurityContext(WithCustomMockUser mockUser) {
String name = StringUtils.hasLength(mockUser.name()) ? mockUser.name() : "name";
SecurityContext contxt = SecurityContextHolder.createEmptyContext();
# 해당 부분은 인증 구성에 맞게 구성
UserInfo userInfo = UserInfo.builder()
.tokenData(TokenCheckResult.builder()
.accessToken("accessToken")
.accessToken("accessToken")
.build())
.accountInfo(AccountInfo.builder()
.id(mockUser.id())
.name(name)
.email(mockUser.email())
.roles(Arrays.asList(mockUser.roles()))
.build())
.build();
Authentication jwtAuthenticationToken =
new JwtAuthenticationToken(studentUserDetail, "", userInfo.getAuthorities());
contxt.setAuthentication(jwtAuthenticationToken);
return contxt;
}
}
3. 테스트코드 작성 시
@Test
@WithCustomMockUser(id=1L)
@DisplayName("전과목 학습 문제집 보기")
void findExamPaper() throws Exception {
// MockUser Controller 테스트
'Spring' 카테고리의 다른 글
[Spring] Kafka consumer multiple group 설정 (0) | 2024.06.20 |
---|---|
[IntelliJ] 사용중인 Port 프로세스 종료 (0) | 2024.06.19 |
[SpringBoot] 테스트 환경 구축(MySQL docker) (1) | 2024.03.22 |
FeignClient를 이용한 API 호출(HttpClient) (0) | 2024.03.13 |
Spring Security 의인증 관리 (0) | 2024.03.13 |