Sto provando ad avviare una nuova sessione utente creando un helper che POSTs una nuova sessione utente. Ecco quello che hoSpecifiche richieste RSpec/Capybara - Impossibile eseguire Devise su POST nuova sessione utente
def login(user)
post user_session_path, :login => user.username, :password => user.password
end
E per l'utente
user = Factory.create(:user)
ho un test in RSpec che indirizza l'utente a una pagina che richiede l'autenticazione. Usando l'helper, mi aspetto che venga creata una nuova sessione utente. Tuttavia, eseguendo la specifica, mi sta dicendo che la pagina corrente è la schermata di accesso. Ciò indica che una nuova sessione utente non viene creata e che l'utente viene reindirizzato alla schermata di accesso quando accede alla risorsa con restrizioni senza sessione utente. Guardando i registri di test, questo è il caso.
Anche guardando i registri, si dice che l'azione POST non è autorizzata.
Started POST "/login" for 127.0.0.1 at 2012-02-04 13:34:59 -0800
Processing by SessionsController#create as HTML
Parameters: {"login"=>"foo12", "password"=>"[FILTERED]"}
Completed 401 Unauthorized in 1ms
Processing by SessionsController#new as HTML
Parameters: {"login"=>"foo12", "password"=>"[FILTERED]"}
Rendered devise/shared/_links.erb (1.4ms)
Completed 200 OK in 15ms (Views: 12.7ms | ActiveRecord: 0.0ms)
ho provato manualmente tramite la pagina di accesso tramite un browser ed è stato in grado di creare una sessione più che bene. Ho anche scritto un test con Capybara che visita la pagina di accesso, inserisce le credenziali dell'utente e invia. Questo crea una nuova sessione utente senza problemi.
mi sono imbattuto in questo breve tempo, quando Ho provato a combinare queste 2 dichiarazioni in 1, per errore. Dovrebbero essere separati. 'config.before (: ciascuno) fare DatabaseCleaner.strategy =: operazione fine config.before (: ciascuno) fare DatabaseCleaner.start fine ' in ' config.before (: ogni) fare DatabaseCleaner.strategy =: operazione DatabaseCleaner.start fine ' – Ryan