Estoy intentando iniciar una nueva sesión de usuario creando un ayudante que PUBLICA una nueva sesión de usuario. Esto es lo que tengoEspecificación de petición de RSpec/Capibara: no se puede obtener un dispositivo para POSTAR la nueva sesión de usuario
def login(user)
post user_session_path, :login => user.username, :password => user.password
end
Y para el usuario
user = Factory.create(:user)
tengo una prueba en la RSpec que dirige al usuario a una página que requiere autenticación. Utilizando el helper, espero que se cree una nueva sesión de usuario. Sin embargo, al ejecutar la especificación, me está diciendo que la página actual es la pantalla de inicio de sesión. Esto indica que no se está creando una nueva sesión de usuario y el usuario está siendo redirigido a la pantalla de inicio de sesión cuando se accede al recurso restringido sin sesión de usuario. Mirando los registros de prueba, este es el caso.
También mirando los registros, se está diciendo que la acción POST no está autorizada.
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)
Intenté manualmente usar la página de inicio de sesión a través de un navegador y pude crear una sesión muy bien. También escribí una prueba con Capybara que visita la página de inicio de sesión, completa las credenciales de usuario y envía. Esto crea una nueva sesión de usuario sin problemas.
me encontré con esto brevemente, cuando Traté de combinar estas 2 declaraciones en 1, por error. Deberían estar separados. 'config.before (: cada uno) hacer DatabaseCleaner.strategy =: transacción extremo config.before (: cada uno) hacer DatabaseCleaner.start extremo ' en ' config.before (: cada) do DatabaseCleaner.strategy =: transacción DatabaseCleaner.start final ' – Ryan