Cuestión : el pepino y el webrat que no encuentran los carriles destellan mensaje

tengo tan una característica de la inscripción del pepino que si la inscripción es acertada busque la salida “registro acertado” en el HTML. Sé que está allí porque puedo verla en el hojeador pero el pepino no está encontrando it.
class= > " claro " del
> del " codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
class= >#signup.feature " notpretty " del id= " codeSnippet859384 " del
           
class= del

Respuesta : el pepino y el webrat que no encuentran los carriles destellan mensaje

AUTORIZACIÓN… Aquí está el contenido del jon del poste del blog…

Rubí: Usar el reset_session en carriles con el pepino y Webrat
Archivé el insecto siguiente:

    Todas las guías de la seguridad de los carriles dicen que usted debe llamar el reset_session después de que el usuario abra una sesión o apague. Esto vacia la sesión y fuerza una nueva identificación de la sesión para ser creada. Parece que ha habido algunos insectos de los carriles relacionados con el reset_session durante los años. Sin embargo, ahora estoy preocupado que hay un conflicto en alguna parte relacionado con la infraestructura y/o Webrat de la prueba de los carriles.

    En mi acción de la conexión, llamo el reset_session y después pongo un mensaje agradable en flash. Cuando utilizo realmente el Web site, puedo ver (vía Firefox) que estoy consiguiendo una nueva identificación de la sesión, y puedo ver mi mensaje de destello. Sin embargo, cuando escribo las pruebas para esas dos cosas, el mensaje de destello consigue perdido, y no consigo una nueva identificación de la sesión en mis galletas. Casi está como si se esté no haciendo caso la nueva sesión, y se está utilizando la vieja sesión.

    Lo siento, pero no puedo decir exactamente donde está el problema. Sé que hay el código especial de los carriles que maneja las galletas de la sesión cuando usted está haciendo la prueba de la integración.

    Estoy utilizando actionpack-2.3.8 y webrat-0.7.1.

Aquí es cómo hice mi mejor para trabajar alrededor del problema.

En primer lugar, estoy almacenando mis sesiones en la base de datos. Por lo tanto, creé un modelo de ActiveRecord para suprimir manualmente expedientes de la sesión:

el reset_session de la sesión <� ActiveRecord::Base="">  # de los carriles de la clase no ha sido nada sino apuro para nosotros.  Estoy tomando
  # importa en mis propias manos.  Este código tendrá que cambiar si paramos
  # poniendo nuestras sesiones en la base de datos.
  def self.nuke_session (session_id)
    ¡find_by_session_id! (session_id) .destroy
  extremo
extremo

Puesto que soy el usar authlogic, mi acción del registro de estado de la máquina mira algo similar:

el def destruye
  current_user_session.destroy

  # evitar los ataques de la fijación de la sesión.  Esto puede parecer redundante, pero era
  # necesario hacer el paso de las pruebas.
  sesión [: test_that_this_disappears] = “aceptable”
  session_id = galletas [ActionController:: Base.session_options [: llave]]
  Session.nuke_session (session_id)
  reset_session

  redirect_to: => de la acción: logged_out
extremo

Mi acción de la conexión es algo similar:

el def crea
  @user_session = UserSession.new (params [: user_session])
  ¿a menos que @user_session.valid?
    la vuelta rinde: => de la acción: nuevo
  extremo

  # evitar los ataques de la fijación de la sesión reajustando la sesión.
  reset_session
  @user_session = UserSession.new (params [: user_session])
  ¡@user_session.save!

  # por alguna razón, el flash, el reset_session, el pepino, los etc. no consiguen adelante,
  # tengo que pasar tan el mensaje de destello vía un parámetro.
  redirect_to (root_url (: => de la conexión 1))
extremo

En vez de fijar un mensaje vía flash, paso un parámetro de la pregunta.

Compruebo para saber si hay este parámetro en mi ApplicationController:

before_filter: check_for_login_message

# por alguna razón, el flash, el reset_session, el pepino, los etc. no consiguen adelante.
# por lo tanto, después de la conexión, tenemos que pasar el mensaje de destello vía un parámetro de la pregunta
# algo que vía flash.
#
# si tengo que hacer esta clase de cosa otra vez, crearé una tabla de operaciones de búsqueda por completo
# de mensajes.
check_for_login_message del def
  flash.now [: success_message] = “conexión acertada!” si params [: conexión]
extremo

Finalmente, tengo esto en un archivo de la característica:

# esta prueba debe trabajar.  De hecho, trabaja cuando usted utiliza su hojeador.
# sin embargo, hay un insecto en alguna parte entre los carriles y Webrat que prevenga
# él del trabajo cuando usted utiliza el pepino.  De alguna manera, el reset_session está quebrado.
#
# panorama: la apertura de sesión debe invalidar su galleta de la sesión
# dado estoy en el homepage
# cuando miro mi galleta de la sesión
# y yo se abren una sesión
# entonces debo comer una diversa galleta de la sesión

Esa prueba confía en estos pasos:

# esta prueba debe trabajar.  De hecho, trabaja cuando usted utiliza su hojeador.
# sin embargo, hay un insecto en alguna parte entre los carriles y Webrat que prevenga
# él del trabajo cuando usted utiliza el pepino.  De alguna manera, el reset_session está quebrado.
#
# la mirada dada de/^I en mi sesión cookie$/hace
# @cookie = galletas [ActionController:: Base.session_options [: llave]]
# extremo
#
# entonces/^I debe tener una diversa sesión cookie$/hace
# new_cookie = galletas [ActionController:: Base.session_options [: llave]]
# @cookie del == del ould_not de new_cookie.sh
# extremo
Otras soluciones  
 
programming4us programming4us