2016-07-30 31 views
5

ben SecurityConfig sınıfında tanımlanan özel güvenlik ayarlarıyla @WebMvcTest sınamak çalışıyorum Spring Boot'un varsayılan güvenlik ayarları.Test güvenlik 1.4

Bunu, @SpringBootTest + @AutoConfigureMockMvc kullanarak düzeltebilirim, ancak tüm otomatik yapılandırmayı çalıştırmadan sınamak ilginç olurdu.

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

    @Autowired 
    private MockMvc mockMvc; 

    // tests 
} 

@WebMvcTestSecurityConfig sınıfında tanımlanan ayarları kullanabilirsiniz bir yolu var mı?

+0

bunu "application.properties" dosyasına ekleyin ("src/main/resources" içinde): security.user.password = password (ve kendi parolanızı seçin) –

+1

Teşekkürler ama düzeltmeyin ... hala varsayılan güvenlik ayarlarını kullanarak ancak "parola" na şifre zorlamak. "ADMIN" rolünü kullanarak "/ admin *" URI'leri sağlıyorum. Varsayılan güvenlik yapılandırması "KULLANICI" rolünü kullanarak tüm URI'leri korur. – dmunozfer

+0

Yorum için teşekkürler David. Tüm URI'leri "USER" ile koruyan varsayılan güvenlikten haberdar değildim. – Snekse

cevap

7

WebMvcTest yalnızca denetleyicinizi ve başka hiçbir şey yüklemeyecektir (bu yüzden bu dilimleme olarak adlandırıyoruz). Yaptığınız yapılandırmanın hangi bölümünü ve hangisini bilmediğinizi belirleyemeyiz. Güvenlik yapılandırması ana @SpringBootApplication'unuzda değilse, bunu açıkça içe aktarmanız gerekir. Aksi takdirde, Spring Boot varsayılan güvenlik ayarlarını etkinleştirecektir.

OAuth gibi bir şey kullanıyorsanız, bu gerçekten iyi bir şeydir, çünkü bunun gerçekten sahte bir test için kullanmaya başlamak istemediğinden. Testinize @Import(SecurityConfig.class) eklerseniz ne olur?

+1

FYI: Spring Boot sorunu izleyicisinde de ilgili bir tartışma var: https://github.com/spring-projects/spring-boot/issues/6514 –