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!

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top