mirror of https://github.com/rails/rails
Merge pull request #42216 from gmcgibbon/set_options_in_default_session
Set session options when initializing a basic session
This commit is contained in:
commit
b9f48d5d58
|
@ -1,3 +1,7 @@
|
||||||
|
* Set session options when initializing a basic session.
|
||||||
|
|
||||||
|
*Gannon McGibbon*
|
||||||
|
|
||||||
* Add `cache_control: {}` option to `fresh_when` and `stale?`
|
* Add `cache_control: {}` option to `fresh_when` and `stale?`
|
||||||
|
|
||||||
Works as a shortcut to set `response.cache_control` with the above methods.
|
Works as a shortcut to set `response.cache_control` with the above methods.
|
||||||
|
|
|
@ -25,7 +25,9 @@ module ActionDispatch
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.disabled(req)
|
def self.disabled(req)
|
||||||
new(nil, req, enabled: false)
|
new(nil, req, enabled: false).tap do
|
||||||
|
Session::Options.set(req, Session::Options.new(nil, { id: nil }))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.find(req)
|
def self.find(req)
|
||||||
|
|
|
@ -1381,3 +1381,17 @@ class RequestInspectTest < BaseRequestTest
|
||||||
assert_match %r(#<ActionDispatch::Request POST "https://example.com/path/\?q=1" for 1.2.3.4>), request.inspect
|
assert_match %r(#<ActionDispatch::Request POST "https://example.com/path/\?q=1" for 1.2.3.4>), request.inspect
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class RequestSession < BaseRequestTest
|
||||||
|
def setup
|
||||||
|
super
|
||||||
|
@request = stub_request
|
||||||
|
end
|
||||||
|
|
||||||
|
test "#session" do
|
||||||
|
@request.session
|
||||||
|
|
||||||
|
assert_not_predicate(ActionDispatch::Request::Session.find(@request), :enabled?)
|
||||||
|
assert_instance_of(ActionDispatch::Request::Session::Options, ActionDispatch::Request::Session::Options.find(@request))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -385,5 +385,36 @@ module ApplicationTests
|
||||||
require "#{app_path}/config/environment"
|
require "#{app_path}/config/environment"
|
||||||
assert app.config.session_options[:cookie_only], "Expected cookie_only to be set to true"
|
assert app.config.session_options[:cookie_only], "Expected cookie_only to be set to true"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "session uses default options if previous sessions exist" do
|
||||||
|
add_to_config <<-RUBY
|
||||||
|
config.api_only = true
|
||||||
|
config.session_store :cookie_store, key: "_random_key"
|
||||||
|
config.middleware.use ActionDispatch::Cookies
|
||||||
|
config.middleware.use config.session_store, config.session_options
|
||||||
|
config.active_record.database_selector = { delay: 2.seconds }
|
||||||
|
config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
|
||||||
|
config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
controller :test, <<-RUBY
|
||||||
|
class TestController < ApplicationController
|
||||||
|
def test_action
|
||||||
|
head :ok
|
||||||
|
end
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
app_file "config/routes.rb", <<-RUBY
|
||||||
|
Rails.application.routes.draw do
|
||||||
|
get "/test_action" => "test#test_action"
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
require "#{app_path}/config/environment"
|
||||||
|
|
||||||
|
get "/test_action"
|
||||||
|
assert_equal 200, last_response.status
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue