2013-07-30 9 views
7

Sviluppo un'interfaccia Ruby per una API REST. Io uso rspec e vcr per il test.
Tutti i test utilizzano le credenziali dell'account, create appositamente per questo.
Non riesco a decidere: è corretto memorizzare le risposte memorizzate nella cache dei miei test (cassette vcr) nel repository o consentire agli utenti e agli abbonati di scrivere le proprie cassette?È corretto memorizzare cassette VCR nel repository?

Con il nome dell'Imperatore! Che inizi la Guerra Santa!

+0

FWIW, l'autore del videoregistratore commette le cassette: https://twitter.com/myronmarston/status/199887944570503168. C'è un post da lui in cui entra più nel dettaglio, ma non riesco a trovarlo. – Dennis

risposta

3

Fintanto che non si includono informazioni sensibili nelle richieste, non vedo alcun motivo per cui non è possibile eseguirle.

Ma fino a quando funzionerà bene dopo il primo test di semina delle cassette non ci sarà troppo in gioco.

Personalmente mi piace l'idea di essere controllato rispetto alle richieste storiche nel caso in cui devo diagnosticare qualche oscuro errore specifico della macchina che modifica i miei formati di richiesta. (Cioè qualche bug di codifica in cui le cose vengono scappate in modo errato a causa di una libreria caricata dinamicamente).

5

Le videocassette VCR giocano come il supporto dei test. È necessario trasferirli nel repository altrimenti i test non verranno eseguiti correttamente nella macchina di altri, o solo correggerli con una dipendenza esterna pesante che è una violazione del principio di testing.

Ovviamente è necessario nascondere le credenziali dal pubblico o dal team pur mantenendo quanto sopra.

La soluzione è filter_senstive_data impostazioni e gemma Figaro.

All'inizio, This answer from Myron in a similar question può risolvere in gran parte il tuo problema.

Per impostare VCR

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

Il blocco sopra di codice copiato dalla risposta di Myron perché voglio aggiungere più tardi

Per ulteriori informazioni su questa impostazione, controllare il doc https://relishapp.com/vcr/vcr/v/2-5-0/docs/configuration/filter-sensitive-data

Ora, per ENV['SOMESITE_PASSWORD'], può essere una credenziale reale utilizzando Figaro gem.

L'installazione di Figaro creerà un file config/application.yml e lo aggiungerà a .gitignore. Quindi, puoi inserire il nome utente e la password della credenziale senza rischiare di farlo trapelare.

Problemi correlati