Hay mucha confusión sobre la configuración de las cookies en rspec http://relishapp.com/rspec/rspec-rails/v/2-6/dir/controller-specs/file/cookies¿Cómo se prueba caducidad de cookies en los carriles rspec
en su controlador, normalmente se puede escribir
cookies['transaction_code'] = { :expires => 300.seconds.from_now, :value => c }
pero en rspec sólo puedo escribir
request.cookies['transaction_code'] = transaction_code
si digo
request.cookies['transaction_code'] = { :expires => 300.seconds.from_now, :value => c }
i obtener el hash atrás como valor de galletas [ 'transaction_code'] en mi controlador.
Ahora mi pregunta es: ¿Cómo puedo configurar/prueba de caducidad de cookies a continuación, en un ejemplo de prueba del controlador rspec?
ACTUALIZACIÓN: En cuestión de segundos: Lo que quiero decir es: ¿cómo pruebo si el controlador reacciona a una cookie caducada como se esperaba, pero de hecho una cookie caducada es como ninguna cookie si confío en la implementación de cookies, que debería hacer, así que después de todo, tal vez mi pregunta no tenga sentido. Si este es el caso, tengo que probar si (otra) Acción controlador establece una cookie de expirar correctamente, pero ¿cómo lo hago si las cookies [ 'transaction_code'] en la prueba sólo da el valor de nuevo?
nice one kro, acepto su respuesta, no estoy seguro de anotar cookiestore, por mencionar lo obvio El acceso a la cookie jar es indiferente al uso de símbolos o cadenas como claves a diferencia de su hash stub. En general, me siento incómodo tropezando con lo que es parte del marco. Además, ¿es algo así como expiring_cookie [: expires] .to_i.hould_within (1) .of (1.hour.from_now.to_i) la mejor práctica para probar la configuración de tiempo dinámico? –
No, probablemente haría algo diferente con el matcher para el 'DateTime' en la especificación real. Mi objetivo era proporcionar algo que pasaría como ilustración, ya que '==' no. – krohrbaugh
En cuanto a su problema de acceso indiferente; esto se soluciona fácilmente mediante el uso de 'ActiveSupport :: HashWithIndifferentAccess' en lugar de stdlib' Hash'. Actualicé el código de ejemplo para reflejar esto. – krohrbaugh