mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Support list of possible domains for cookies
Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
parent
02319b7982
commit
91a4193ee0
2 changed files with 48 additions and 0 deletions
|
@ -136,6 +136,9 @@ module ActionDispatch
|
|||
options[:domain] = if (@host !~ /^[\d.]+$/) && (@host =~ DOMAIN_REGEXP)
|
||||
".#{$1}.#{$2}"
|
||||
end
|
||||
elsif options[:domain].is_a? Array
|
||||
# if host matches one of the supplied domains without a dot in front of it
|
||||
options[:domain] = options[:domain].find {|domain| @host.include? domain[/^\.?(.*)$/, 1] }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -95,6 +95,16 @@ class CookiesTest < ActionController::TestCase
|
|||
head :ok
|
||||
end
|
||||
|
||||
def set_cookie_with_domains
|
||||
cookies[:user_name] = {:value => "rizwanreza", :domain => %w(example1.com example2.com .example3.com)}
|
||||
head :ok
|
||||
end
|
||||
|
||||
def delete_cookie_with_domains
|
||||
cookies.delete(:user_name, :domain => %w(example1.com example2.com .example3.com))
|
||||
head :ok
|
||||
end
|
||||
|
||||
def symbol_key
|
||||
cookies[:user_name] = "david"
|
||||
head :ok
|
||||
|
@ -322,6 +332,41 @@ class CookiesTest < ActionController::TestCase
|
|||
assert_cookie_header "user_name=; domain=.nextangle.com; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT"
|
||||
end
|
||||
|
||||
def test_cookie_with_several_preset_domains_using_one_of_these_domains
|
||||
@request.host = "example1.com"
|
||||
get :set_cookie_with_domains
|
||||
assert_response :success
|
||||
assert_cookie_header "user_name=rizwanreza; domain=example1.com; path=/"
|
||||
end
|
||||
|
||||
def test_cookie_with_several_preset_domains_using_other_domain
|
||||
@request.host = "other-domain.com"
|
||||
get :set_cookie_with_domains
|
||||
assert_response :success
|
||||
assert_cookie_header "user_name=rizwanreza; path=/"
|
||||
end
|
||||
|
||||
def test_cookie_with_several_preset_domains_using_shared_domain
|
||||
@request.host = "example3.com"
|
||||
get :set_cookie_with_domains
|
||||
assert_response :success
|
||||
assert_cookie_header "user_name=rizwanreza; domain=.example3.com; path=/"
|
||||
end
|
||||
|
||||
def test_deletings_cookie_with_several_preset_domains_using_one_of_these_domains
|
||||
@request.host = "example2.com"
|
||||
get :delete_cookie_with_domains
|
||||
assert_response :success
|
||||
assert_cookie_header "user_name=; domain=example2.com; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT"
|
||||
end
|
||||
|
||||
def test_deletings_cookie_with_several_preset_domains_using_other_domain
|
||||
@request.host = "other-domain.com"
|
||||
get :delete_cookie_with_domains
|
||||
assert_response :success
|
||||
assert_cookie_header "user_name=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT"
|
||||
end
|
||||
|
||||
def test_cookies_hash_is_indifferent_access
|
||||
[:symbol_key, :string_key].each do |cookie_key|
|
||||
get cookie_key
|
||||
|
|
Loading…
Reference in a new issue