Ruby on Rails collaudo funzionale con il plugin di autenticazione RESTful
-
22-08-2019 - |
Domanda
ho iniziato a scrivere i test funzionali per le mie guide App oggi. Io uso il plugin di autenticazione RESTful. Mi sono imbattuto in un paio di cose confuse Spero che qualcuno può chiarire per me.
1) Ho scritto una funzione di login veloce perché la maggior parte delle funzioni del mio rotaie app richiedono l'autenticazione.
def login_as(user)
@request.session[:user_id] = user ? user.id : nil
end
Il problema che vedo con questa funzione, è fondamentalmente finge di autenticazione. Dovrei essere preoccupato per questo? Forse è bene seguire questa strada fino a quando ho testare il metodo di autenticazione vero da qualche parte. O forse questo è terribile pratica.
2) La seconda cosa confusione è che in alcuni posti nei miei test funzionali, ho bisogno del processo di autenticazione completa per accadere. Quando un utente si attiva, ho il metodo do_activate creare alcuni oggetti iniziali per l'utente. E 'analoga alla creazione di un oggetto quaderno bianco e oggetto penna per un'applicazione studente, se questo ha un senso.
Quindi, al fine di testare adeguatamente la mia domanda, ho bisogno l'utente a colpire quello stato di attivazione in modo tali oggetti sono creati. Attualmente sto usando Factory Girl per creare l'utente, e quindi chiamando le login_as funzionano sopra per falsa autenticazione.
Credo che un'altra opzione sarebbe quella di saltare la sequenza di autenticazione completo e solo creare gli oggetti in bianco con Factory Girl. Ho potuto testare l'autenticazione corretta da qualche altra parte.
Cosa ne pensi? Se dovessi passare attraverso la sequenza corretta, perché non è il codice qui sotto invocando la funzione do_activate?
user = Factory.create(:user)
user.active = 1
user.save
Grazie!
Soluzione
falsificazione è perfettamente accettabile.
Tuttavia, scrivere altri test che assicurano che le cose che si desidera proteggere sono protetti. Quindi
test "it should show the profile page" do
user = Factory(:user)
login_as(user)
get :show, :id => user
assert_response :success
end
test "it should not show the profile page cos I'm not logged in" do
user = Factory(:user)
get :show, :id => user
assert_response :redirect
end
Sentitevi liberi di colpire me per followup!