Este es un problema con la recolección de las galletas en una especificación de controlador en el entorno siguiente:cookies no persisten en Rspec sobre raíles 3.1
- rieles 3.1.0.rc4
- rspec 2.6.0
- rspec-carriles 2.6.1
que tienen un simple especificación de controlador que crea un usuario de fábrica, llama a una señal en el método que establece una cookie, y luego se pone a prueba para ver si el firmado en usuario puede acceder a una página. El problema es que todas las cookies parecen desaparecer entre la cookie de autenticación que se está configurando y la acción "show" que se llama en mi controlador.
Mi código funciona bien cuando se ejecuta en un navegador en el servidor de rails dev. El comportamiento aún más extraño al ejecutar la especificación es que todo lo establecido a pesar del hash de las cookies desaparece, pero todo lo establecido a través del hash de la sesión persiste. ¿Me falta algo sobre cómo funcionan las cookies cuando se usa rspec?
Spec código
it "should be successful" do
@user = Factory(:user)
test_sign_in @user
get :show, :id => @user
response.should be_success
end
Entra código
def sign_in(user, opts = {})
if opts[:remember] == true
cookies.permanent[:auth_token] = user.auth_token
else
cookies[:auth_token] = user.auth_token
end
session[:foo] = "bar"
cookies["blah"] = "asdf"
self.current_user = user
#there are two items in the cookies collection and one in the session now
end
verificación Autenticación en el get: solicitud espectáculo falla aquí porque las cookies [: auth_token] es nula
def current_user
#cookies collection is now empty but session collection still contains :foo = "bar"... why?
@current_user ||= User.find_by_auth_token(cookies[:auth_token]) if cookies[:auth_token]
end
¿Este ¿un insecto? ¿Es algún tipo de comportamiento previsto que no entiendo? ¿Acabo de mirar algo obvio?
me sale el mismo problema - He intentado muchas permutaciones y hurgando y no puedo hacer que esto funcione correctamente –