Websocket Test Code

qkrrnjswo·2023년 5월 25일

트러블 슈팅

목록 보기
3/3

문제1. @Value(Jasypt.password)를 못 찾음

해결: edit configuration에 넣어서 해결

문제2. @WebMvcTest 에러 : JPA metamodel must not be empty

@SpringBootApplication에 @EnableJPaAuditing을 추가하여 사용하고 있기 때문에 발생하는 에러
해결1: 테스트 코드 클래스단에 @MockBean(JpaMetamodelMappingContext.class)을 추가
해결2: @EnableJpaAuditing 을 따로 분리
https://1-7171771.tistory.com/136

문제3. Status expected:<200> but was:<401>

해결1: 401이 뜨는 이유?
WebMvcTest는 내가 만들어둔 Spring Security Configuration, Bean들도 불러오지 않는다
즉, 요청을 할 때 권한을 같이 넘겨줘야 한다는 것
@WithMockUser, @WithUserDetails사용해서 권한을 넘겨주면 된다!
https://sedangdang.tistory.com/303

문제4. 테스트 코드에서 Security의 User를 가져다 쓰고 싶다!(@AuthenticationPrincipal User user)

해결1: @BeforeEach 이용해서 해결?
@BeforeEach
void setUser() {
//given
LocalDateTime time = LocalDateTime.now();
JwtUser jwtUser = JwtUser.of("kjj", "dkansk924@naver.com", time, time.plusHours(1));
JwtAuthToken authToken = new JwtAuthToken(jwtUser);
SecurityContextHolder.getContext().setAuthentication(authToken);
}

해결2: 과연 @BeforeEach를 이용하여 모든 코드 앞에 다는 것이 좋을까?
어노테이션을 만들어서 해결?
https://k3068.tistory.com/96

현재 코드가 security context에서 직접 User를 빼서 Member에 저장하고 있다....

따라서 Controller에서도 그냥 User를 사용하고 있는데 -> 이러면 테스트시에 어노테이션, 팩토리를 만들어서 사용하는 방법 사용 불가

소셜 로그인의 흐름
https://tonylim.tistory.com/395

해결3:
https://velog.io/@preace11/Spring-Security-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1-%EC%8B%9C-mockMvc%EC%97%90%EC%84%9C-AuthenticationPrincipal-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%EC%A0%84%EB%8B%AC%ED%95%98%EA%B8%B0

TDD?
https://www.youtube.com/watch?v=gs1qM1TF5zA&ab_channel=%ED%8F%AC%ED%94%84TV

문제1. SimpMessagingTemplate객체가 주입이 안됨

WebSocketConfig 파일이 먼저 실행이 되야함
어떻게 해야할까?

https://rieckpil.de/write-integration-tests-for-your-spring-websocket-endpoints/

https://supawer0728.github.io/2018/03/30/spring-websocket/

0개의 댓글