2015-10-23 3 views
5

मैं एक एपीआई में लॉगिन करने की अपनी क्षमता का परीक्षण करने की कोशिश कर रहा हूं। स्वाभाविक रूप से, इसका मतलब है कि मुझे अपना उपयोगकर्ता नाम और पासवर्ड एक्सेस करने के लिए मेरी टेस्ट कक्षाओं की आवश्यकता है। हालांकि, मैं इस परियोजना को सार्वजनिक स्रोत नियंत्रण पर रखना चाहता हूं, इसलिए मैं कोड में अपना उपयोगकर्ता नाम और पासवर्ड साझा नहीं कर सकता (एक कल्पना करेगा)। मैं कमांड लाइन तर्क का उपयोग करता हूं, क्योंकि वे एक .user फ़ाइल में संग्रहीत होते हैं (जिसे अन्य उपयोगकर्ताओं के लिए प्रोजेक्ट तोड़ने के बिना स्रोत नियंत्रण से बाहर रखा जा सकता है)। हालांकि, वे वास्तव में परीक्षण कक्षाओं में पारित नहीं होते हैं (कम से कम, जब मैं Environment.GetCommandLineArgs() का उपयोग करता हूं, तो मैं उन्हें नहीं देखता)। तो मैं अन्य उपयोगकर्ताओं के लिए परियोजना को तोड़ने के बिना स्थानीय रूप से अपने पासवर्ड कैसे स्टोर कर सकता हूं? क्या उधर रास्ता है?विजुअल स्टूडियो यूनिट परीक्षण और कमांड लाइन तर्क स्रोत नियंत्रण में पासवर्ड से बचने के लिए

+2

क्यों एक कॉन्फ़िगरेशन फ़ाइल नहीं है जिसे आप चेक करने से पहले संवेदनशील डेटा साफ़ करते हैं? – DrewJordan

+0

इस तरह की चीज़ों को संभालने के बेहतर तरीके हैं, इन तरीकों में से किसी एक के लिए मेरा जवाब देखें। एक फ़ाइल रखने के लिए जहां आपको संवेदनशील जानकारी को संपादित करना याद रखना चाहिए, "आपदा" के लिए एक नुस्खा है (इस बात पर निर्भर करता है कि यह जानकारी स्रोत नियंत्रण में समाप्त होती है)। यह ** ** भूल जाएगा। –

उत्तर

6

एक आम तरीका है करने के लिए है इस प्रकार है:

  1. फ़ाइल आप में इन बातों को संग्रहीत करना चाहते हैं के रूप में ही सामग्री के साथ अपने प्रोजेक्ट में कोई टेम्पलेट फ़ाइल जोड़ें, सिर्फ वास्तविक मान के बिना। अपने स्थान पर खाली या डमी मूल्य रखें।
  2. इस टेम्पलेट फ़ाइल को स्रोत नियंत्रण में जोड़ें
  3. उस फ़ाइल को निकालें जिसमें स्रोत नियंत्रण से वास्तविक मान होना चाहिए और इसे इस फ़ाइल की भविष्य की प्रतियों को अनदेखा करने के लिए कहें। नहीं, हालांकि, इसे अपनी परियोजना से हटा दें।
  4. एक पूर्व निर्माण निर्माण घटना है कि इस तरह एक कमांड शामिल करें:

    IF NOT EXIST "$(ProjectDir)\App.config" COPY "$(ProjectDir)\App-template.config" "$(ProjectDir)\App.config" 
    

यह अब इस प्रभाव पड़ता है:

  1. विन्यास फाइल की एक टेम्पलेट स्रोत में है नियंत्रण, संवेदनशील जानकारी
  2. जब आप प्रोजेक्ट की ताजा प्रति क्लोन या चेक करते हैं, तो वास्तविक फ़ाइल wh क्या आप डिस्क पर संवेदनशील जानकारी को खो देंगे, और विजुअल स्टूडियो इसे ध्वजांकित करेगा, इस
  3. एक बिल्ड करें, यह उपरोक्त आदेश निष्पादित करेगा, प्रभावी रूप से जांच कर रहा है कि वास्तविक फ़ाइल मौजूद है या नहीं, जो यह नहीं है , और उसके बाद टेम्पलेट फ़ाइल से एक ताजा प्रतिलिपि कॉपी करें।
  4. संवेदनशील जानकारी जोड़कर, बनाई गई नई फ़ाइल को संपादित करें।
  5. एक और निर्माण
  6. भागो इकाई-परीक्षण या कार्यक्रम क्या

यह आवश्यक है इस विधि काम करने के लिए है कि आप फ़ाइलों को डिस्क पर या यहाँ तक कि में मौजूद हैं की अनदेखी करने के लिए अपने स्रोत नियंत्रण उपकरण पूछ सकते हैं है खुद को प्रोजेक्ट करें ताकि इसे संशोधित करने के बाद बाद में इसे किसी प्रतिबद्धता में स्वचालित रूप से जोड़ा न जाए।

1
  1. संवेदनशील जानकारी (पासवर्ड) को एक अलग "संवेदनशील इन्फॉर्म.कॉन्फिग" फ़ाइल में रखें।

    <?xml version="1.0" encoding="utf-8"?> 
    <appSettings> 
        <add key="SecretPassword" value="87DFG8S7G9S8G98SDFGHSDFG978DA" /> 
    </appSettings> 
    
  2. सेट Sensitive.info के लिए "कॉपी हमेशा"

  3. यह आपके "app.config" में जोड़ें "आउटपुट निर्देशिका में कॉपी": <appSettings file="SensitiveInfo.config"/>

  4. सुनिश्चित करें कि आप "ingnore" बनाओ " SensitiveInfo.config "फ़ाइल को .hgignore (Mercurial) में जोड़कर या।gitignore (गिट)

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