Rails-Version: 5.1.1 Upgrade von 4.2.7Integration Testsitzung nicht geladen Session-Cookie
ich einen Integrationstest haben (inherting von ActionDispatch :: IntegrationTest), die eine URL trifft. Der Controller unter dieser URL fügt einige Dinge in die Sitzung ein. Der Test versucht dann zu bestätigen, dass bestimmte Werte in der Sitzung vorhanden sind.
Mein session_store.rb:
Rails.application.config.session_store :cookie_store, key: '_companySite_session', expire_after: 1.year
Was ich finde, ist, dass das Session-Variable, aus dem Integrationstest als 'Sitzung' genannt wird, ist immer eine leere Hash ({}).
Wenn ich im Test auf request.host schaue, sehe ich "www.example.com". Wenn ich bei Response.Cookies oder Cookies sehen, ich sehe:
#<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">
Mit anderen Worten scheint der Session-Cookie vorhanden zu sein, und seine Domäne scheint die Anforderung des Host zu entsprechen. Ich habe auch den Code von How to decrypt a Rails 5 session cookie manually? verwendet, um den Wert dieses Cookies auszudrucken, und der Wert ist korrekt.
Meine Testumgebung config gibt config.action_controller.allow_forgery_protection = false
An dieser Stelle ich aus Ideen bin. Der Cookie ist da, es scheint in Ordnung zu sein, es ist auf die Domäne der Anfrage eingestellt, es ist nicht abgelaufen, aber die Sitzung bleibt ein leerer Hash. Wird es nicht irgendwie aktualisiert? Wird versucht, zu aktualisieren, aber im Hintergrund zu versagen? Ich habe keine Dinge mehr, um es zu versuchen.
Dieser Test funktioniert unter Rails 4.2.7.
Während ich nicht so vollständig in es getaucht habe, habe ich auch festgestellt, dass die Flash-Variable der Tests immer auch leer zu sein scheint. Tests, die in Rails 4 gut funktionierten, brechen wieder, weil der Flash immer leer zu sein scheint. Ich nehme an, der Blitz und die Sitzung sind miteinander verwandt, so dass sie vielleicht beide von demselben Problem betroffen sind.