2015-10-23 21 views
5

parolalarını önlemek için komut satırı argümanları API'ye giriş yapma yeteneğimi test etmeye çalışıyorum. Doğal olarak, bu benim kullanıcı adımı ve şifremi erişmek için test sınıflarıma ihtiyacım var demektir. Ancak, bu projeyi kamuya açık kaynak kontrolüne koymak istiyorum, bu yüzden kullanıcı adımı ve şifremi kodda paylaşamam (hayal edeyim). Komut satırı argümanlarını kullanırım, çünkü bir .user dosyasında saklanırlar (diğer kullanıcılar için projeyi bozmadan kaynak kontrolünün dışında tutulabilirler). Ancak, aslında test sınıflarına geçtikleri görülmüyor (en azından Environment.GetCommandLineArgs() kullandığımda onları göremiyorum). Öyleyse şifrelerimi diğer kullanıcılar için projeyi bozmadan nasıl yerel olarak saklayabilirim? Bir yolu var mı? aşağıdaki gibiVisual Studio Birim sınamaları ve kaynak denetimi

+2

Neden hassas veriyi temizlemediğiniz bir yapılandırma dosyası kontrol edilmeden önce yapılıyor? – DrewJordan

+0

Bu tür şeylerin üstesinden gelmenin daha iyi yolları vardır, bu yollardan biri için cevabımı bakın. Hassas bilgileri düzenlemek için hatırlamanız gereken bir dosyaya sahip olmak, "felaket" için bir reçete (bu bilginin kaynak kontrolünde ne kadar kötü olduğuna bağlı olarak). ** ** unutulacak. –

cevap

6

yapmanın yaygın bir yoludur:

  1. sadece gerçek değerler olmadan sen böyle şeyler saklamak istediğiniz dosya ile aynı içeriğe sahip, projenize bir şablon dosyasını ekleyin. Boş veya kukla değerler yerine yerleştirin.
  2. Bu kalıp dosyasını kaynak denetime ekleyin
  3. Kaynak denetimdeki gerçek değerleri içermesi gereken dosyayı kaldırın ve bu dosyanın ilerideki kopyalarını yoksaymasını isteyin. 'u yapmayın, ancak projenizden kaldırın.
  4. böyle bir komut içeren bir ön inşa inşa Etkinlik ekle:

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

Bu şimdi bu etkiye sahiptir:

  1. yapılandırma dosyasının bir şablon kaynağının artık denetim, olmadan hassas bilgiler
  2. Projenin yeni kopyasını klonladığınızda veya bir kopyasını görüntülediğinizde, hassas bilgileri saklarsınız diskte kaybolur ve Visual Studio bunu işaretleyecektir, bunu görmezden gelerek bu
  3. Bir yapı yapın, bu, yukarıdaki dosyanın yürütülmesini sağlar. ve sonra yeni bir kopyasını şablon dosyasından kopyalayın.
  4. Yeni oluşturulan asıl dosyayı, hassas bilgileri ekleyerek düzenleyin.
  5. başka yapı
  6. Çalıştır birim testleri veya program yapın

bu yöntem, disk üzerinde ve hatta mevcut dosyaları görmezden kaynak kontrol aracı sorabilir çalışmak sizin için zorunludur Kendinizi değiştirdikten sonra otomatik olarak eklemeye eklemeyecek şekilde projelendirin.

1
  1. Hassas bilgileri (parolaları) ayrı bir "SensitiveInfo.config" dosyasına koyun.

    <?xml version="1.0" encoding="utf-8"?> 
    <appSettings> 
        <add key="SecretPassword" value="87DFG8S7G9S8G98SDFGHSDFG978DA" /> 
    </appSettings> 
    
  2. "Kopyala hep"

  3. senin "App.Config" Bu ekleme "Çıktı Dizini Kopyala" Sensitive.info ayarlayın: emin "ingnore" Make <appSettings file="SensitiveInfo.config"/>

  4. " SensitiveInfo.config "dosyası .hgignore (Mercurial) veya içine ekleyerek dosya.gitignore (Git)

İlgili konular