2013-07-30 8 views
7

Opracowuję interfejs Ruby dla jednego interfejsu API REST. Używam rspec i vcr do testowania.
Wszystkie testy używają poświadczeń konta, specjalnie dla niego stworzonych.
Nie mogę zdecydować: czy poprawnie zapisywać buforowane odpowiedzi z moich testów (kasety vcr) w repozytorium , czy zezwalać użytkownikom i subskrybentom na pisanie własnych kaset?Czy przechowywanie kaset magnetowidu w repozytorium jest poprawne?

Na nazwisko Cesarza! Niech rozpocznie się Święta Wojna!

+0

FWIW, autor magnetowidu zatwierdza kasety: https://twitter.com/myronmarston/status/199887944570503168. Jest przez niego wpis, w którym bardziej szczegółowo go opisuje, ale nie mogę go znaleźć. – Dennis

Odpowiedz

3

Dopóki nie uwzględniacie żadnych informacji poufnych we wnioskach, nie widzę powodu, dla którego nie można ich zatwierdzić.

Ale tak długo, jak będzie działać dobrze po pierwszym testowym rozstawieniu kaset, nie ma mowy o zbyt dużej stawce.

Osobiście podoba mi się pomysł sprawdzania przed historycznymi prośbami, na wypadek, gdy muszę zdiagnozować jakiś niejasny błąd specyficzny dla maszyny, zmieniając moje formaty żądań. (IE błąd kodowania, w którym rzeczy są niepoprawnie uciekane z powodu dynamicznie ładowanej biblioteki).

5

Kasety magnetowidu służą jako oprawa testów. Musisz je zatwierdzić w repozytorium, w przeciwnym razie twoje testy nie będą działać poprawnie na innych komputerach, lub tylko tam, gdzie jest duża zewnętrzna zależność, która jest naruszeniem zasady testowania.

Oczywiście musisz ukryć swoje dane uwierzytelniające od publiczności lub zespołu, zachowując powyższe.

Rozwiązaniem są filter_senstive_data ustawienia i klejnot figaro.

Na początku This answer from Myron in a similar question może rozwiązać Twój problem w znacznym stopniu.

Aby skonfigurować magnetowidu

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

Powyższy fragment kodu skopiowany z odpowiedzią Myrona bo chcę dodać więcej później

Więcej informacji na temat tego ustawienia, sprawdź doc https://relishapp.com/vcr/vcr/v/2-5-0/docs/configuration/filter-sensitive-data

Teraz, dla ENV['SOMESITE_PASSWORD'], może to być prawdziwe poświadczenie przy użyciu Figaro gem.

Instalacja Figaro utworzy plik config/application.yml i doda go do .gitignore. Możesz więc wprowadzić swoją nazwę użytkownika i hasło, nie ryzykując przeciekania jej do publicznej wiadomości.