2016-07-30 11 views
5

मैं SecurityConfig वर्ग में परिभाषित कस्टम सुरक्षा सेटिंग के साथ @WebMvcTest परीक्षण करने के लिए कोशिश कर रहा हूँ वसंत बूट की डिफ़ॉल्ट सुरक्षा सेटिंग्स।स्प्रिंग बूट में परीक्षण सुरक्षा 1.4

मैं इसे @SpringBootTest + @AutoConfigureMockMvc का उपयोग करके ठीक कर सकता हूं, लेकिन सभी ऑटो कॉन्फ़िगरेशन चलाने के बिना परीक्षण करना दिलचस्प होगा।

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

    @Autowired 
    private MockMvc mockMvc; 

    // tests 
} 

वहाँ किसी भी तरह से है कि @WebMvcTest सेटिंग्स SecurityConfig वर्ग में परिभाषित का उपयोग कर सकते है?

+0

बस इसे "application.properties" ("src/main/resource" में) में जोड़ें: security.user.password = पासवर्ड (और अपना पासवर्ड चुनें) –

+1

धन्यवाद लेकिन इसे ठीक न करें ... अभी भी डिफ़ॉल्ट सुरक्षा सेटिंग्स का उपयोग करके पासवर्ड को "पासवर्ड" पर मजबूर करना। मैं "एडमिन" भूमिका का उपयोग कर "/ admin *" यूआरआई को सुरक्षित कर रहा हूं, डिफ़ॉल्ट सुरक्षा कॉन्फ़िगरेशन "यूजर" भूमिका का उपयोग करके सभी यूआरआई की सुरक्षा करता है। – dmunozfer

+0

टिप्पणी डेविड के लिए धन्यवाद। मुझे 'यूजर' के साथ सभी यूआरआई की रक्षा करने वाली डिफ़ॉल्ट सुरक्षा के बारे में पता नहीं था। – Snekse

उत्तर

7

WebMvcTest केवल आपके नियंत्रक को लोड करने जा रहा है और कुछ और नहीं (यही कारण है कि हम उस टुकड़े को बुलाते हैं)। हम यह नहीं समझ सकते कि आपके कॉन्फ़िगरेशन का कौन सा हिस्सा आप चाहते हैं और आप कौन सी नहीं करते हैं। यदि सुरक्षा कॉन्फ़िगरेशन आपके मुख्य @SpringBootApplication पर नहीं है तो आपको इसे स्पष्ट रूप से आयात करना होगा। अन्यथा, स्प्रिंग बूट डिफ़ॉल्ट सुरक्षा सेटिंग्स को सक्षम करने जा रहा है।

यदि आप ओएथ की तरह कुछ उपयोग कर रहे हैं, तो यह एक अच्छी बात है हालांकि आप वास्तव में नकली परीक्षण के लिए इसका उपयोग शुरू नहीं करना चाहते हैं। यदि आप अपने परीक्षण में @Import(SecurityConfig.class) जोड़ते हैं तो क्या होता है?

+1

एफवाईआई: स्प्रिंग बूट इश्यू ट्रैकर में एक संबंधित चर्चा भी है: https://github.com/spring-projects/spring-boot/issues/6514 –

संबंधित मुद्दे