HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🏠
2차 팀 프로젝트: 오늘의 집
/
로그인 관련 이슈

로그인 관련 이슈

완료 여부
완료
발의자
  1. Authorization 헤더에 테스트용 토큰 추가하여 사용하기
 
  1. mocking하기
WithMockCustomUser 어노테이션 정의
@Retention(RetentionPolicy.RUNTIME) @WithSecurityContext(factory = WithMockCustomUserSecurityContextFactory.class) public @interface WithMockCustomUser { String email() default "guest@gmail.com"; String password() default "guestPassword12"; String nickname() default "guest"; }
 
WithMockCustomUserSecurityContextFactory 클래스 추가
public class WithMockCustomUserSecurityContextFactory implements WithSecurityContextFactory<WithMockCustomUser> { @Override public SecurityContext createSecurityContext(WithMockCustomUser annotation) { final SecurityContext securityContext = SecurityContextHolder.createEmptyContext(); final User securityUser = User.builder() .nickname(annotation.nickname()) .email(annotation.email()) .password(annotation.password()) .build(); final JwtAuthenticationToken authenticationToken = new JwtAuthenticationToken(new JwtAuthentication("token", annotation.email()), null, Arrays.asList(new SimpleGrantedAuthority("ROLE_USER"))); authenticationToken.setDetails(securityUser); securityContext.setAuthentication(authenticationToken); return securityContext; } }
(+ JwtAuthenticationToken 생성자 default → public)
 
사용 예시
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK) @AutoConfigureMockMvc class UserMockControllerTest { @Mock private UserService userService; @InjectMocks private UserRestController userRestController; private MockMvc mockMvc; @BeforeEach void setup() { MockitoAnnotations.initMocks(this); mockMvc = MockMvcBuilders.standaloneSetup(userRestController) .setControllerAdvice(ApiExceptionHandler.class) .alwaysDo(print()) .build(); } @Test @WithMockCustomUser @DisplayName("개인정보 열람 테스트") void getUserInformationTest() throws Exception { mockMvc.perform(get("/api/v0/user")) .andExpect(status().isOk()) .andDo(print()); }
  • @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK) 추가 필요
  • 테스트 메소드에 @WithMockCustomUser 어노테이션 추가하여 사용, 인자로 email, password, nickname 전달하여 설정 가능(디폴트 값 있으므로 그대로 사용해도 ㄱㅊ)