[SPRING] 테스트 용 스프링 부트 설정 보안
SPRING테스트 용 스프링 부트 설정 보안
내 테스트에서 보안을 올바르게 구성 할 수 없습니다. 내 웹 보안 구성 :
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/**").hasRole("USER")
.and()
.httpBasic()
;
}
}
그리고 내 테스트 수업 :
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration
@ContextConfiguration(classes = {Application.class, AppConfig.class, WebMvcConfig.class, WebSecurityConfig.class})
@WebAppConfiguration
public class TestControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
this.mockMvc = webAppContextSetup(wac).dispatchOptions(true).build();
}
@Test
public void getTest() throws Exception {
mockMvc
.perform(get("/api/test"))
.andExpect(status().isForbidden())
;
}
}
보안 레이어가 실행되지 않았 음을 의미하는 404 상태 코드가 표시되어 내 테스트 클래스에서 제대로 구성되지 않았습니다. 성공하지 않고 클래스를 @ContextConfiguration에서 @SpringApplicationConfiguration으로 전환하려고했습니다.
해결법
-
==============================
1.코드를 다음과 같이 수정하십시오.
코드를 다음과 같이 수정하십시오.
@Autowired private FilterChainProxy filterChainProxy; @Before public void setUp() { MockitoAnnotations.initMocks(this); this.mockMvc = webAppContextSetup(wac).dispatchOptions(true).addFilters(filterChainProxy).build(); }
-
==============================
2.Spring Security 4.0.4에서 언급 한대로 :
Spring Security 4.0.4에서 언급 한대로 :
예:
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @WebAppConfiguration public class TestControllerTest { @Autowired private WebApplicationContext wac; private MockMvc mockMvc; @Before public void setup() { mockMvc = MockMvcBuilders .webAppContextSetup(wac) .apply(springSecurity()) //will perform all of the initial setup to integrate Spring Security with Spring MVC Test .build(); }
from https://stackoverflow.com/questions/23335200/spring-boot-setup-security-for-testing by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring @ Transactional Annotation : 자체 호출 (0) | 2019.02.11 |
---|---|
[SPRING] ClassCastException $ 프록시는 aop을 사용하여로 캐스트 될 수 없습니다. (0) | 2019.02.11 |
[SPRING] Spring MVC에서 RequestParam과 함께 Valid 매개 변수를 사용할 수없는 이유는 무엇입니까? (0) | 2019.02.11 |
[SPRING] faces-config.xml의 EL 해결 프로그램 (0) | 2019.02.11 |
[SPRING] 모든 저장소와 동시에 다른 사용자 지정 기능에 사용자 지정 기능을 단일 저장소에 추가하는 Spring Jpa (0) | 2019.02.11 |