2013-07-30 18 views
7

Tôi phát triển giao diện Ruby cho một api REST. Tôi sử dụng rspec và vcr để thử nghiệm.
Tất cả các thử nghiệm đều sử dụng thông tin đăng nhập của tài khoản, được tạo riêng cho nó.
Tôi không thể quyết định: có đúng không khi lưu trữ các câu trả lời được lưu trong bộ nhớ cache của tôi (vcr cassette) trong kho lưu trữ hoặc cho phép người dùng và người đăng ký viết băng cassette của riêng họ?Có đúng khi lưu trữ các băng video vcr trong kho lưu trữ không?

Bằng tên của Hoàng đế! Hãy để cuộc chiến tranh thánh bắt đầu!

+0

FWIW, tác giả của VCR cam kết băng cassette: https://twitter.com/myronmarston/status/199887944570503168. Có một bài đăng của anh ta, nơi anh ta đi vào chi tiết hơn, nhưng tôi không thể tìm thấy nó. – Dennis

Trả lời

3

Miễn là bạn không bao gồm bất kỳ thông tin nhạy cảm nào trong yêu cầu thì tôi không thấy lý do nào khiến bạn không thể cam kết.

Nhưng miễn là nó sẽ hoạt động tốt sau khi thử nghiệm đầu tiên gieo các băng cassette không có quá nhiều cọc.

Cá nhân tôi thích ý tưởng được kiểm tra đối với các yêu cầu lịch sử trong trường hợp tôi phải chẩn đoán một số lỗi cụ thể về máy làm thay đổi định dạng yêu cầu của tôi. (IE một số lỗi mã hóa nơi mọi thứ đang được thoát không đúng do thư viện được tải động).

5

Băng cassette của VCR đóng vai trò là vật cố định cho các thử nghiệm của bạn. Bạn cần phải cam kết chúng vào kho lưu trữ nếu không các xét nghiệm của bạn sẽ không chạy đúng trong máy của người khác, hoặc chỉ sửa chữa ở đó với sự phụ thuộc nặng bên ngoài mà là vi phạm nguyên tắc kiểm thử.

Tất nhiên bạn cần ẩn thông tin đăng nhập của bạn từ công khai hoặc nhóm trong khi vẫn giữ các thông tin trên.

Giải pháp là filter_senstive_data cài đặt và đá quý Figaro.

Lúc đầu, This answer from Myron in a similar question có thể giải quyết vấn đề của bạn phần lớn.

Để thiết lập VCR

VCR.configure do |c| 
    c.filter_sensitive_data("<SOMESITE_PASSWORD>") do 
    ENV['SOMESITE_PASSWORD'] 
    end 
end 

Khối trên mã sao chép từ câu trả lời Myron vì tôi muốn bổ sung thêm sau

Để biết thêm về cài đặt này, kiểm tra doc https://relishapp.com/vcr/vcr/v/2-5-0/docs/configuration/filter-sensitive-data

Hiện tại, đối với ENV['SOMESITE_PASSWORD'], đó có thể là thông tin xác thực thực bằng cách sử dụng Figaro gem.

Cài đặt Figaro sẽ tạo một tệp config/application.yml và thêm nó vào .gitignore. Vì vậy, bạn chỉ có thể nhập tên người dùng và mật khẩu thông tin xác thực của mình ở đó mà không có rủi ro bị rò rỉ cho công chúng.