2016-07-30 2 views
5

나는 SecurityConfig 클래스에 정의 된 사용자 지정 보안 설정을 @WebMvcTest을 테스트하기 위해 노력하고있어 스프링 부트의 기본 보안 설정.테스트 보안은 1.4

@SpringBootTest + @AutoConfigureMockMvc을 사용하여 문제를 해결할 수 있지만 모든 자동 구성을 실행하지 않고 테스트하는 것은 재미있을 것입니다.

@RunWith(SpringRunner.class) 
@SpringBootTest(webEnvironment = WebEnvironment.MOCK) 
@AutoConfigureMockMvc 
public class ExampleControllerSpringBootTest { 

    @Autowired 
    private MockMvc mockMvc; 

    // tests 
} 

@WebMvcTestSecurityConfig 클래스에 정의 된 설정을 사용할 수있는 방법이 있습니까?

+0

"application.properties"("src/main/resources") : security.user.password = password에이 내용을 추가하십시오 (자신의 암호를 선택하십시오) –

+1

고마워하지만 고치지 마십시오 ... 여전히 기본 보안 설정을 사용하지만 암호는 "암호"로 설정합니다. 나는 역할 "ADMIN"을 사용하여 "/ admin *"URI를 보호 할 뿐이며, 기본 보안 구성은 역할 "USER"를 사용하여 모든 URI를 보호합니다. – dmunozfer

+0

코멘트 David에게 감사드립니다. 나는 모든 URI를 'USER'로 보호하는 기본 보안을 알지 못했습니다. – Snekse

답변

7

WebMvcTest은 컨트롤러 만로드 할 것이고 그 외에는 아무것도로드하지 않습니다. 원하는 구성 부분과 그렇지 않은 부분을 파악할 수 없습니다. 보안 설정이 주 @SpringBootApplication에 없다면 명시 적으로 가져와야합니다. 그렇지 않으면 스프링 부트가 기본 보안 설정을 활성화합니다.

OAuth와 같은 것을 사용하고 있다면 모의 테스트에 사용하기를 원하지 않기 때문에 좋은 방법입니다. 테스트에 @Import(SecurityConfig.class)을 추가하면 어떻게됩니까?

+1

FYI : 스프링 부트 문제 추적기에 관련된 토론이 있습니다. https://github.com/spring-projects/spring-boot/issues/6514 –