[Ror-es] Variable de sesión en tests funcionales (o ¿cómo simular que te has autenticado?)

Daniel Rodriguez Troitiño notzcoolx at yahoo.es
Wed Sep 5 22:15:50 GMT 2007


On 9/5/07, Jaime Iniesta <jaimeiniesta at gmail.com> wrote:
> Hola lista, me estoy poniendo las pilas en esto del TDD y la verdad es
> que engancha :) pero estoy atascado con una cosita...
>
> Pongamos que tienes un controlador, recién generado con un scaffold,
> para administrar los libros de una librería... recién creado, pasa su
> test funcional como era de esperar.
>
> Pero pongamos ahora que metes un sistema rudimentario de autenticación
> de usuarios para controlar el acceso a ese controlador con un:
>
> before_filter :expulsar_si_no_autenticado
>
> donde, básicamente, expulsar_si_no_autenticado comprueba si la
> variable de sesión "session[:autenticado]" es true, porque ya has
> pasado por el formulario de acceso, y si no, te expulsa...
>
> Vale, pues al poner esto, el test funcional para este controlador
> falla, como es normal, porque ninguna de las acciones consiguen hacer
> nada ya que no se saben la clave...
>
> ¿Cómo puedo simular en este test que el usuario ya se ha autenticado?
> Mi idea era meter en poner a true esta variable en el setup, pero no
> le gusta la idea. O sea...
>
> def setup
>     (...)
>     session[:autenticado] = true
>     (...)
> end
>
> Y al ejecutar el test, dice que...
>
>   1) Error:
> test_create(Admin::LibrosControllerTest):
> TypeError: Symbol as array index
>     test/functional/admin/libros_controller_test.rb:15:in `[]='
>     test/functional/admin/libros_controller_test.rb:15:in
> `setup_without_fixtures'
>     /home/jaime/bin/radrails/workspace/libreria/config/../vendor/rails/activerecord/lib/active_record/fixtures.rb:576:in
> `setup'

La forma de hacerlo es:

@request.session[:autenticado] = true

Estabas cerca :).


More information about the Ror-es mailing list