2017-06-08 7 views
0

Railsのバージョンをロードしません。そのURLのコントローラーはセッションに何かを入れます。このテストでは、特定の値がセッションに存在することを確認しようとします。統合テストセッションは、セッションCookie

マイsession_store.rb:

Rails.application.config.session_store :cookie_store, key: '_companySite_session', expire_after: 1.year 

私は見つけることだ、何が「セッション」として統合テストから呼び出されたセッション変数は、({})常に空のハッシュであるということです。

テストでrequest.hostを見ると、 "www.example.com"が表示されます。私はresponse.cookiesやクッキーを見れば、私は次を参照してください。つまり

#<Rack::Test::Cookie:0x00000006037108 
@default_host="www.example.com", 
@name="_companySite_session", 
@name_value_raw= 
"_companySite_session=a3RnYjRvWDlUYzRZaVlaTnlsK2RkeXBWcWFNYnQ1RVo4azNqdXNOanVWWWZVT2o5Vk0wTkVhY1dFOTBxdWNzMU5sY3c1cXhXRm0xT3JZWWZGUnluSnRuYTVoaWQ1S3ZZRXVMa1YyQ2pUMjEvOExaWkcybTdGT3lUZnZ0STRSSGVpc0dPU1VONWNwTEZxQlRvODN3eXdKZTYreVIvNDR4Y0IxMms2djlPWUZCcktYWmo1SElSZ0ttaHA5UWk5MDA5aVJzaGt3cUJ4V2tFY295ZGo4ak8ydUI3OWRnTUdkcmRpanVML3phalJtZ2c1OXByeExiRDhlcy9rR1RYUGh6NlkxV2xqNWl2VjlCMm45WXo0ajBKN0VTQ29CVGRQRVErOVIrNFZwdEZBc01oL2RaSGltUjdleGlWN3YySTdJUzcvbVlJbWdwWVNUVkw4K1pPc3JsUWxOR1BZNFVrUXFtYVVObmNlYlZrSklEbk5aU3VTck5MNm12a0NBMVF2aG5xLS1pSEJTVTVLZzJ2ZVA2M1IzTmJ4Njh3PT0%3D--f253c4e1678e53896a247b087e741cf006c5874f", 
@options={"path"=>"/", "expires"=>"Fri, 08 Jun 2018 19:46:22 -0000", "HttpOnly"=>nil, "domain"=>"www.example.com"}, 
@value= 
"a3RnYjRvWDlUYzRZaVlaTnlsK2RkeXBWcWFNYnQ1RVo4azNqdXNOanVWWWZVT2o5Vk0wTkVhY1dFOTBxdWNzMU5sY3c1cXhXRm0xT3JZWWZGUnluSnRuYTVoaWQ1S3ZZRXVMa1YyQ2pUMjEvOExaWkcybTdGT3lUZnZ0STRSSGVpc0dPU1VONWNwTEZxQlRvODN3eXdKZTYreVIvNDR4Y0IxMms2djlPWUZCcktYWmo1SElSZ0ttaHA5UWk5MDA5aVJzaGt3cUJ4V2tFY295ZGo4ak8ydUI3OWRnTUdkcmRpanVML3phalJtZ2c1OXByeExiRDhlcy9rR1RYUGh6NlkxV2xqNWl2VjlCMm45WXo0ajBKN0VTQ29CVGRQRVErOVIrNFZwdEZBc01oL2RaSGltUjdleGlWN3YySTdJUzcvbVlJbWdwWVNUVkw4K1pPc3JsUWxOR1BZNFVrUXFtYVVObmNlYlZrSklEbk5aU3VTck5MNm12a0NBMVF2aG5xLS1pSEJTVTVLZzJ2ZVA2M1IzTmJ4Njh3PT0=--f253c4e1678e53896a247b087e741cf006c5874f"> 

は、セッションCookieが存在すると思われ、そのドメインは、要求のホストに一致するように思えます。また、How to decrypt a Rails 5 session cookie manually?のコードを使用してこのCookieの値を出力しました。値は正しいです。

私のテスト環境の設定は、この時点でconfig.action_controller.allow_forgery_protection = falseを

を指定し、私はアイデアの出です。クッキーはそこにあり、リクエストのドメインに設定されています。期限切れではありませんが、セッションは空のハッシュのままです。何とか更新されていませんか?更新しようとしていますが、黙って失敗していますか?私は試してみることがなくなった。

このテストは、Rails 4.2.7で正常に動作します。

私は完全にそれに分割されていませんが、テストのフラッシュ変数も常に空であるように見えています。繰り返しになりますが、Rails 4で正常に動作したテストは、フラッシュが常に空であるように見えるため、破損しています。私はフラッシュとセッションが関連していると想定しているので、おそらく同じ問題が両方に影響します。

答えて

0

ソリューションは、我々はtest.rb環境ファイルでこの設定を持っていたことだった:何らかの理由で

config.allow_concurrency = false 

、テストに要求を行った後、この設定は、セッションが空に交換されますハッシュ。 Railsのドキュメントでは、このフラグを直接設定しないことをお勧めします:http://guides.rubyonrails.org/v3.2/configuring.html

私はRailsのレポでの問題としてそれを記録してきた私たちは、アップグレード時に、その後のRails 4に搬入しまった、これは我々がレール2に設定していたものだと思うし、今Railsの5に

を破ります: https://github.com/rails/rails/issues/29608

関連する問題