2013-07-30 13 views
7

Ich entwickle eine Ruby-Schnittstelle für eine REST-API. Ich verwende rspec und vcr zum Testen.
Alle Tests verwenden Anmeldeinformationen des Kontos, speziell dafür erstellt.
Ich kann mich nicht entscheiden: ist es richtig, zwischengespeicherte Antworten meiner Tests (vcr Kassetten) in Repository zu speichern, oder erlauben Benutzern und Abonnenten, ihre eigenen Kassetten zu schreiben?Stimmt die Speicherung von VCR-Kassetten im Repository?

Mit dem Namen des Kaisers! Lasst den Heiligen Krieg beginnen!

+0

FWIW, der Autor von VCR Commits Kassetten: https://twitter.com/myronmarston/status/199887944570503168. Es gibt einen Post von ihm, wo er genauer ins Detail geht, aber ich kann es nicht finden. – Dennis

Antwort

3

Solange Sie keine vertraulichen Informationen in die Anfragen aufnehmen, sehe ich keinen Grund, warum Sie sie nicht begehen können.

Aber so lange es nach dem ersten Test funktioniert, der die Kassetten sät, ist nicht viel auf dem Spiel.

Persönlich mag ich die Idee, gegen historische Anforderungen überprüft zu werden, falls ich einen obskuren maschinenspezifischen Fehler diagnostizieren muss, der meine Anfrageformate ändert. (IE ein Codierungsfehler, bei dem Dinge aufgrund einer dynamisch geladenen Bibliothek falsch maskiert werden).

5

Die Kassetten des VCR dienen als Fixpunkt für Ihre Tests. Sie müssen sie in das Repository übertragen, sonst werden Ihre Tests auf den Rechnern anderer nicht korrekt ausgeführt oder korrigieren nur dort, wo eine starke externe Abhängigkeit besteht, was eine Verletzung des Testprinzips darstellt.

Natürlich müssen Sie Ihre Anmeldeinformationen aus dem öffentlichen oder Team ausblenden, während Sie die oben genannten beibehalten.

Die Lösung ist filter_senstive_data Einstellungen und Figaro gem.

Zunächst kann This answer from Myron in a similar question Ihr Problem weitgehend lösen.

Zur Einrichtung VCR

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

Der obige Code-Block von Myron Antwort kopiert, weil ich später mehr hinzufügen möchten

Weitere Informationen zu dieser Einstellung überprüfen Sie die doc https://relishapp.com/vcr/vcr/v/2-5-0/docs/configuration/filter-sensitive-data

Jetzt, für ENV['SOMESITE_PASSWORD'], kann es echte Anmeldeinformationen sein, indem Sie Figaro gem verwenden.

Installation von Figaro erstellt eine Datei config/application.yml und fügt sie zu .gitignore hinzu. Sie können also einfach Ihren Benutzernamen und Ihr Passwort eingeben, ohne Gefahr zu laufen, dass Sie öffentlich werden.