2015-10-23 13 views
5

Tôi đang cố gắng để kiểm tra khả năng của tôi để đăng nhập vào một API. Đương nhiên, điều đó có nghĩa là tôi cần các lớp thử nghiệm để truy cập tên người dùng và mật khẩu của mình. Tuy nhiên, tôi muốn đặt dự án này vào kiểm soát nguồn công cộng, vì vậy tôi không thể chia sẻ tên người dùng và mật khẩu của tôi trong mã (người ta sẽ tưởng tượng). Tôi sẽ sử dụng các đối số dòng lệnh, vì chúng được lưu trữ trong một tệp .user (có thể được giữ khỏi kiểm soát nguồn mà không phá vỡ dự án cho những người dùng khác). Tuy nhiên, những người dường như không thực sự được thông qua để kiểm tra các lớp học (ít nhất, khi tôi sử dụng Environment.GetCommandLineArgs(), tôi không nhìn thấy chúng). Vậy làm cách nào tôi có thể lưu trữ mật khẩu của mình cục bộ mà không phá vỡ dự án cho những người dùng khác? Là có một cách?Visual Studio Unit thử nghiệm và đối số dòng lệnh để tránh mật khẩu trong kiểm soát nguồn

+2

tại sao không phải tệp cấu hình bạn xóa dữ liệu nhạy cảm trước khi đăng ký? – DrewJordan

+0

Có những cách tốt hơn để xử lý loại điều này, xem câu trả lời của tôi cho một trong những cách này. Có một tập tin mà bạn phải nhớ để chỉnh sửa thông tin nhạy cảm là một công thức cho "thảm họa" (tùy thuộc vào mức độ xấu của thông tin này kết thúc trong kiểm soát nguồn). Nó ** sẽ ** bị lãng quên. –

Trả lời

6

Một cách phổ biến để làm là như sau:

  1. Thêm mẫu hồ sơ cho dự án của bạn, với những nội dung tương tự như các tập tin bạn muốn lưu trữ những điều này, chỉ cần không có giá trị thực tế. Đặt giá trị trống hoặc giả ở vị trí của chúng.
  2. Thêm tệp mẫu này vào kiểm soát nguồn
  3. Xóa tệp phải chứa các giá trị thực tế từ kiểm soát nguồn và yêu cầu tệp bỏ qua các bản sao trong tương lai của tệp này. Tuy nhiên, Tuy nhiên, không xóa khỏi dự án của bạn.
  4. Thêm một pre-build sự kiện xây dựng có chứa một lệnh như thế này:

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

này hiện nay có hiệu ứng này:

  1. Một mẫu của tập tin cấu hình hiện đang ở nguồn kiểm soát, mà không cần thông tin nhạy cảm
  2. Khi bạn sao chép hoặc kiểm tra bản sao mới của dự án, tệp thực bạn sẽ lưu trữ thông tin nhạy cảm sẽ bị thiếu trên đĩa và Visual Studio sẽ gắn cờ nó, bỏ qua
  3. Thực hiện việc xây dựng, điều này sẽ thực hiện lệnh ở trên, kiểm tra hiệu quả xem tệp thực tế có tồn tại hay không và sau đó sao chép một bản sao mới từ tệp mẫu.
  4. Chỉnh sửa tệp thực tế mới được tạo, thêm thông tin nhạy cảm.
  5. Do khác build
  6. Run đơn vị xét nghiệm hoặc chương trình

Điều bắt buộc cho phương pháp này để làm việc mà bạn có thể yêu cầu công cụ kiểm soát nguồn của bạn để bỏ qua các file có mặt trên đĩa hoặc thậm chí trong dự án chính nó để nó không tự động thêm nó vào một cam kết sau này sau khi bạn đã sửa đổi nó.

1
  1. Đặt thông tin nhạy cảm (mật khẩu) vào tệp "SensitiveInfo.config" riêng biệt.

    <?xml version="1.0" encoding="utf-8"?> 
    <appSettings> 
        <add key="SecretPassword" value="87DFG8S7G9S8G98SDFGHSDFG978DA" /> 
    </appSettings> 
    
  2. Đặt Sensitive.info "Sao chép vào Output Directory" để "Copy luôn"

  3. Thêm này trong thư mục "App.Config": <appSettings file="SensitiveInfo.config"/>

  4. Hãy chắc chắn rằng bạn "ingnore" the " SensitiveInfo.config "tập tin bằng cách thêm nó vào .hgignore (Mercurial) hoặc.gitignore (Git)

Các vấn đề liên quan