Pregunta

empecé a escribir pruebas funcionales para mis rieles aplicación hoy en día. Yo uso el plugin de autenticación REST. Me encontré con un par confuso cosas que espero que alguien puede aclarar para mí.

1) escribí una función de ingreso rápido, porque la mayoría de las funciones en mi aplicación rieles requieren autenticación.

def login_as(user)
   @request.session[:user_id] = user ? user.id : nil
end

El problema que veo con esta función, es que básicamente se falsifica la autenticación. ¿Debo estar preocupado por esto? Tal vez está bien para ir a esta ruta, siempre y cuando pruebo el verdadero método de autenticación en alguna parte. O tal vez esto es terrible práctica.

2) La segunda cosa confusa es que en algunos lugares en mis pruebas funcionales, necesito el proceso de autenticación completa a suceder. Cuando se activa un usuario, tengo el método do_activate crear algunos objetos iniciales para el usuario. Es análogo a la creación de un objeto portátil en blanco y lápiz objeto de una solicitud de estudiante, si eso tiene sentido.

Así que con el fin de probar adecuadamente mi solicitud, necesito el usuario para llegar a ese estado de activación por lo que se crean los objetos. Actualmente estoy usando Factory Girl para crear el usuario, y luego llamar a la función anterior a login_as falsa autenticación.

Creo que otra opción sería omitir la secuencia de autenticación completa y simplemente crear los objetos en blanco con Factory Girl. Podría probar la autenticación apropiada en otro lugar.

¿Qué opinas? Si tuviera que pasar por la secuencia apropiada, por qué no es el código de abajo invocar la función do_activate?

user = Factory.create(:user)
user.active = 1
user.save

Gracias!

¿Fue útil?

Solución

fingiendo es perfectamente aceptable.

Sin embargo, escribir otras pruebas que aseguren que las cosas que quiere protegidos están protegidos. Así

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

No dude en hit me up para followups!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top