-
Spring security test 에러Spring 2024. 4. 2. 23:44
Spring security 를 학습하며 테스트 코드를 작성하고 있었는데 이상하게 시큐리티 설정이 적용이 되지 않았다.
403 코드와 함께 실패해야할 테스트가 성공해버렸다. @BeforeEach void setup(RestDocumentationContextProvider restDocumentationContextProvider){ this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) .addFilter(new CharacterEncodingFilter("UTF-8", true)) .apply(documentationConfiguration(restDocumentationContextProvider) .operationPreprocessors() .withRequestDefaults(modifyUris().host("localhost").removePort(), prettyPrint()) .withResponseDefaults(modifyUris().host("localhost").removePort(), prettyPrint())) .build(); }
mockMvcBuilder를 이용해 mockMvc에 필요한 설정을 적용해주는 과정에서 스프링 시큐리티를 적용해주지 않아서 해당 MockMvc로 보내는 요청들은 스프링 시큐리티에 영향을 받지 않았기에 모든 테스트들이 원하는 대로 동작하지 않았다.
공식문서를 참고해 스프링 시큐리티 설정을 적용해주고 나서야 원하는 결과를 볼 수 있었다.
https://docs.spring.io/spring-security/reference/servlet/test/mockmvc/setup.html
Setting Up MockMvc and Spring Security :: Spring Security
Spring Security’s testing support requires spring-test-4.1.3.RELEASE or greater.
docs.spring.io
처음부터 공식문서를 참고하는 습관을 들여야겠다. 구글에 검색하면서 꽤 시간을 날렸다.
적용 후
@BeforeEach void setup(RestDocumentationContextProvider restDocumentationContextProvider){ this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) .addFilter(new CharacterEncodingFilter("UTF-8", true)) .apply(documentationConfiguration(restDocumentationContextProvider) .operationPreprocessors() .withRequestDefaults(modifyUris().host("localhost").removePort(), prettyPrint()) .withResponseDefaults(modifyUris().host("localhost").removePort(), prettyPrint())) .apply(springSecurity()) .build(); }
의도한 대로 403코드가 발생했다. 'Spring' 카테고리의 다른 글
트랜잭션을 유의하여 DB작업과 메일알림을 처리하는 Spring Batch Job 작성 (0) 2024.08.07 Spring Batch 도입기 (5) 2024.07.23 JDBC API, JDBC Template (0) 2024.01.10 @ModelAttribute를 사용하여 직렬화 (0) 2023.11.29 HttpMessageConverter (0) 2023.10.05