mirror of
https://github.com/TracksApp/tracks.git
synced 2026-01-26 02:36:11 +01:00
unfreeze rails 2.3.9
This commit is contained in:
parent
6443adac78
commit
dea6dbe4da
1916 changed files with 0 additions and 240923 deletions
|
|
@ -1,294 +0,0 @@
|
|||
require 'abstract_unit'
|
||||
require 'stringio'
|
||||
|
||||
class CookieStoreTest < ActionController::IntegrationTest
|
||||
SessionKey = '_myapp_session'
|
||||
SessionSecret = 'b3c631c314c0bbca50c1b2843150fe33'
|
||||
|
||||
DispatcherApp = ActionController::Dispatcher.new
|
||||
CookieStoreApp = ActionController::Session::CookieStore.new(DispatcherApp, :key => SessionKey, :secret => SessionSecret)
|
||||
|
||||
Verifier = ActiveSupport::MessageVerifier.new(SessionSecret, 'SHA1')
|
||||
|
||||
SignedBar = "BAh7BjoIZm9vIghiYXI%3D--fef868465920f415f2c0652d6910d3af288a0367"
|
||||
|
||||
class TestController < ActionController::Base
|
||||
def no_session_access
|
||||
head :ok
|
||||
end
|
||||
|
||||
def persistent_session_id
|
||||
render :text => session[:session_id]
|
||||
end
|
||||
|
||||
def set_session_value
|
||||
session[:foo] = "bar"
|
||||
render :text => Rack::Utils.escape(Verifier.generate(session.to_hash))
|
||||
end
|
||||
|
||||
def get_session_value
|
||||
render :text => "foo: #{session[:foo].inspect}"
|
||||
end
|
||||
|
||||
def get_session_id
|
||||
render :text => "foo: #{session[:foo].inspect}; id: #{request.session_options[:id]}"
|
||||
end
|
||||
|
||||
def get_session_id_only
|
||||
render :text => "id: #{request.session_options[:id]}"
|
||||
end
|
||||
|
||||
def call_session_clear
|
||||
session.clear
|
||||
head :ok
|
||||
end
|
||||
|
||||
def call_reset_session
|
||||
reset_session
|
||||
head :ok
|
||||
end
|
||||
|
||||
def raise_data_overflow
|
||||
session[:foo] = 'bye!' * 1024
|
||||
head :ok
|
||||
end
|
||||
|
||||
def set_session_value_and_cookie
|
||||
cookies["foo"] = "bar"
|
||||
session[:foo] = "bar"
|
||||
render :text => Rack::Utils.escape(Verifier.generate(session.to_hash))
|
||||
end
|
||||
|
||||
def rescue_action(e) raise end
|
||||
end
|
||||
|
||||
def setup
|
||||
@integration_session = open_session(CookieStoreApp)
|
||||
end
|
||||
|
||||
def test_raises_argument_error_if_missing_session_key
|
||||
assert_raise(ArgumentError, nil.inspect) {
|
||||
ActionController::Session::CookieStore.new(nil,
|
||||
:key => nil, :secret => SessionSecret)
|
||||
}
|
||||
|
||||
assert_raise(ArgumentError, ''.inspect) {
|
||||
ActionController::Session::CookieStore.new(nil,
|
||||
:key => '', :secret => SessionSecret)
|
||||
}
|
||||
end
|
||||
|
||||
def test_raises_argument_error_if_missing_secret
|
||||
assert_raise(ArgumentError, nil.inspect) {
|
||||
ActionController::Session::CookieStore.new(nil,
|
||||
:key => SessionKey, :secret => nil)
|
||||
}
|
||||
|
||||
assert_raise(ArgumentError, ''.inspect) {
|
||||
ActionController::Session::CookieStore.new(nil,
|
||||
:key => SessionKey, :secret => '')
|
||||
}
|
||||
end
|
||||
|
||||
def test_raises_argument_error_if_secret_is_probably_insecure
|
||||
assert_raise(ArgumentError, "password".inspect) {
|
||||
ActionController::Session::CookieStore.new(nil,
|
||||
:key => SessionKey, :secret => "password")
|
||||
}
|
||||
|
||||
assert_raise(ArgumentError, "secret".inspect) {
|
||||
ActionController::Session::CookieStore.new(nil,
|
||||
:key => SessionKey, :secret => "secret")
|
||||
}
|
||||
|
||||
assert_raise(ArgumentError, "12345678901234567890123456789".inspect) {
|
||||
ActionController::Session::CookieStore.new(nil,
|
||||
:key => SessionKey, :secret => "12345678901234567890123456789")
|
||||
}
|
||||
end
|
||||
|
||||
def test_setting_session_value
|
||||
with_test_route_set do
|
||||
get '/set_session_value'
|
||||
assert_response :success
|
||||
assert_equal ["_myapp_session=#{response.body}; path=/; HttpOnly"],
|
||||
headers['Set-Cookie']
|
||||
end
|
||||
end
|
||||
|
||||
def test_getting_session_value
|
||||
with_test_route_set do
|
||||
cookies[SessionKey] = SignedBar
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: "bar"', response.body
|
||||
end
|
||||
end
|
||||
|
||||
def test_getting_session_id
|
||||
with_test_route_set do
|
||||
cookies[SessionKey] = SignedBar
|
||||
get '/persistent_session_id'
|
||||
assert_response :success
|
||||
assert_equal response.body.size, 32
|
||||
session_id = response.body
|
||||
|
||||
get '/get_session_id'
|
||||
assert_response :success
|
||||
assert_equal "foo: \"bar\"; id: #{session_id}", response.body
|
||||
|
||||
get '/get_session_id_only'
|
||||
assert_response :success
|
||||
assert_equal "id: #{session_id}", response.body, "should be able to read session id without accessing the session hash"
|
||||
end
|
||||
end
|
||||
|
||||
def test_disregards_tampered_sessions
|
||||
with_test_route_set do
|
||||
cookies[SessionKey] = "BAh7BjoIZm9vIghiYXI%3D--123456780"
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: nil', response.body
|
||||
end
|
||||
end
|
||||
|
||||
def test_close_raises_when_data_overflows
|
||||
with_test_route_set do
|
||||
assert_raise(ActionController::Session::CookieStore::CookieOverflow) {
|
||||
get '/raise_data_overflow'
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def test_doesnt_write_session_cookie_if_session_is_not_accessed
|
||||
with_test_route_set do
|
||||
get '/no_session_access'
|
||||
assert_response :success
|
||||
assert_equal nil, headers['Set-Cookie']
|
||||
end
|
||||
end
|
||||
|
||||
def test_doesnt_write_session_cookie_if_session_is_unchanged
|
||||
with_test_route_set do
|
||||
cookies[SessionKey] = "BAh7BjoIZm9vIghiYXI%3D--" +
|
||||
"fef868465920f415f2c0652d6910d3af288a0367"
|
||||
get '/no_session_access'
|
||||
assert_response :success
|
||||
assert_equal nil, headers['Set-Cookie']
|
||||
end
|
||||
end
|
||||
|
||||
def test_setting_session_value_after_session_reset
|
||||
with_test_route_set do
|
||||
get '/set_session_value'
|
||||
assert_response :success
|
||||
session_payload = response.body
|
||||
assert_equal ["_myapp_session=#{response.body}; path=/; HttpOnly"],
|
||||
headers['Set-Cookie']
|
||||
|
||||
get '/call_reset_session'
|
||||
assert_response :success
|
||||
assert_not_equal [], headers['Set-Cookie']
|
||||
assert_not_equal session_payload, cookies[SessionKey]
|
||||
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: nil', response.body
|
||||
end
|
||||
end
|
||||
|
||||
def test_setting_session_value_after_session_clear
|
||||
with_test_route_set do
|
||||
get '/set_session_value'
|
||||
assert_response :success
|
||||
session_payload = response.body
|
||||
assert_equal ["_myapp_session=#{response.body}; path=/; HttpOnly"],
|
||||
headers['Set-Cookie']
|
||||
|
||||
get '/call_session_clear'
|
||||
assert_response :success
|
||||
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: nil', response.body
|
||||
end
|
||||
end
|
||||
|
||||
def test_getting_from_nonexistent_session
|
||||
with_test_route_set do
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: nil', response.body
|
||||
assert_nil headers['Set-Cookie'], "should only create session on write, not read"
|
||||
end
|
||||
end
|
||||
|
||||
# {:foo=>#<SessionAutoloadTest::Foo bar:"baz">, :session_id=>"ce8b0752a6ab7c7af3cdb8a80e6b9e46"}
|
||||
SignedSerializedCookie = "BAh7BzoIZm9vbzodU2Vzc2lvbkF1dG9sb2FkVGVzdDo6Rm9vBjoJQGJhciIIYmF6Og9zZXNzaW9uX2lkIiVjZThiMDc1MmE2YWI3YzdhZjNjZGI4YTgwZTZiOWU0Ng==--2bf3af1ae8bd4e52b9ac2099258ace0c380e601c"
|
||||
|
||||
def test_deserializes_unloaded_classes_on_get_id
|
||||
with_test_route_set do
|
||||
with_autoload_path "session_autoload_test" do
|
||||
cookies[SessionKey] = SignedSerializedCookie
|
||||
get '/get_session_id_only'
|
||||
assert_response :success
|
||||
assert_equal 'id: ce8b0752a6ab7c7af3cdb8a80e6b9e46', response.body, "should auto-load unloaded class"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_deserializes_unloaded_classes_on_get_value
|
||||
with_test_route_set do
|
||||
with_autoload_path "session_autoload_test" do
|
||||
cookies[SessionKey] = SignedSerializedCookie
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: #<SessionAutoloadTest::Foo bar:"baz">', response.body, "should auto-load unloaded class"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_persistent_session_id
|
||||
with_test_route_set do
|
||||
cookies[SessionKey] = SignedBar
|
||||
get '/persistent_session_id'
|
||||
assert_response :success
|
||||
assert_equal response.body.size, 32
|
||||
session_id = response.body
|
||||
get '/persistent_session_id'
|
||||
assert_equal session_id, response.body
|
||||
reset!
|
||||
get '/persistent_session_id'
|
||||
assert_not_equal session_id, response.body
|
||||
end
|
||||
end
|
||||
|
||||
def test_setting_session_value_and_cookie
|
||||
with_test_route_set do
|
||||
get '/set_session_value_and_cookie'
|
||||
assert_response :success
|
||||
assert_equal({"_myapp_session" => response.body, "foo" => "bar"}, cookies)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def with_test_route_set
|
||||
with_routing do |set|
|
||||
set.draw do |map|
|
||||
map.with_options :controller => "cookie_store_test/test" do |c|
|
||||
c.connect "/:action"
|
||||
end
|
||||
end
|
||||
yield
|
||||
end
|
||||
end
|
||||
|
||||
def unmarshal_session(cookie_string)
|
||||
session = Rack::Utils.parse_query(cookie_string, ';,').inject({}) {|h,(k,v)|
|
||||
h[k] = Array === v ? v.first : v
|
||||
h
|
||||
}[SessionKey]
|
||||
verifier = ActiveSupport::MessageVerifier.new(SessionSecret, 'SHA1')
|
||||
verifier.verify(session)
|
||||
end
|
||||
end
|
||||
|
|
@ -1,190 +0,0 @@
|
|||
require 'abstract_unit'
|
||||
|
||||
# You need to start a memcached server inorder to run these tests
|
||||
class MemCacheStoreTest < ActionController::IntegrationTest
|
||||
class TestController < ActionController::Base
|
||||
def no_session_access
|
||||
head :ok
|
||||
end
|
||||
|
||||
def set_session_value
|
||||
session[:foo] = "bar"
|
||||
head :ok
|
||||
end
|
||||
|
||||
def set_serialized_session_value
|
||||
session[:foo] = SessionAutoloadTest::Foo.new
|
||||
head :ok
|
||||
end
|
||||
|
||||
def get_session_value
|
||||
render :text => "foo: #{session[:foo].inspect}"
|
||||
end
|
||||
|
||||
def get_session_id
|
||||
render :text => "#{request.session_options[:id]}"
|
||||
end
|
||||
|
||||
def call_reset_session
|
||||
session[:bar]
|
||||
reset_session
|
||||
session[:bar] = "baz"
|
||||
head :ok
|
||||
end
|
||||
|
||||
def rescue_action(e) raise end
|
||||
end
|
||||
|
||||
begin
|
||||
DispatcherApp = ActionController::Dispatcher.new
|
||||
MemCacheStoreApp = ActionController::Session::MemCacheStore.new(
|
||||
DispatcherApp, :key => '_session_id')
|
||||
|
||||
|
||||
def setup
|
||||
@integration_session = open_session(MemCacheStoreApp)
|
||||
end
|
||||
|
||||
def test_setting_and_getting_session_value
|
||||
with_test_route_set do
|
||||
get '/set_session_value'
|
||||
assert_response :success
|
||||
assert cookies['_session_id']
|
||||
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: "bar"', response.body
|
||||
end
|
||||
end
|
||||
|
||||
def test_getting_nil_session_value
|
||||
with_test_route_set do
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: nil', response.body
|
||||
end
|
||||
end
|
||||
|
||||
def test_setting_session_value_after_session_reset
|
||||
with_test_route_set do
|
||||
get '/set_session_value'
|
||||
assert_response :success
|
||||
assert cookies['_session_id']
|
||||
session_id = cookies['_session_id']
|
||||
|
||||
get '/call_reset_session'
|
||||
assert_response :success
|
||||
assert_not_equal [], headers['Set-Cookie']
|
||||
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: nil', response.body
|
||||
|
||||
get '/get_session_id'
|
||||
assert_response :success
|
||||
assert_not_equal session_id, response.body
|
||||
end
|
||||
end
|
||||
|
||||
def test_getting_session_value_after_session_reset
|
||||
with_test_route_set do
|
||||
get '/set_session_value'
|
||||
assert_response :success
|
||||
assert cookies['_session_id']
|
||||
session_id = cookies["_session_id"]
|
||||
|
||||
get '/call_reset_session'
|
||||
assert_response :success
|
||||
assert_not_equal [], headers['Set-Cookie']
|
||||
|
||||
cookies["_session_id"] = session_id # replace our new session_id with our old, pre-reset session_id
|
||||
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: nil', response.body, "data for this session should have been obliterated from memcached"
|
||||
end
|
||||
end
|
||||
|
||||
def test_getting_from_nonexistent_session
|
||||
with_test_route_set do
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: nil', response.body
|
||||
assert_nil cookies['_session_id'], "should only create session on write, not read"
|
||||
end
|
||||
end
|
||||
|
||||
def test_getting_session_id
|
||||
with_test_route_set do
|
||||
get '/set_session_value'
|
||||
assert_response :success
|
||||
assert cookies['_session_id']
|
||||
session_id = cookies['_session_id']
|
||||
|
||||
get '/get_session_id'
|
||||
assert_response :success
|
||||
assert_equal session_id, response.body, "should be able to read session id without accessing the session hash"
|
||||
end
|
||||
end
|
||||
|
||||
def test_doesnt_write_session_cookie_if_session_id_is_already_exists
|
||||
with_test_route_set do
|
||||
get '/set_session_value'
|
||||
assert_response :success
|
||||
assert cookies['_session_id']
|
||||
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal nil, headers['Set-Cookie'], "should not resend the cookie again if session_id cookie is already exists"
|
||||
end
|
||||
end
|
||||
|
||||
def test_deserializes_unloaded_class
|
||||
with_test_route_set do
|
||||
with_autoload_path "session_autoload_test" do
|
||||
get '/set_serialized_session_value'
|
||||
assert_response :success
|
||||
assert cookies['_session_id']
|
||||
end
|
||||
with_autoload_path "session_autoload_test" do
|
||||
get '/get_session_id'
|
||||
assert_response :success
|
||||
end
|
||||
with_autoload_path "session_autoload_test" do
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: #<SessionAutoloadTest::Foo bar:"baz">', response.body, "should auto-load unloaded class"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_prevents_session_fixation
|
||||
with_test_route_set do
|
||||
get '/get_session_value'
|
||||
assert_response :success
|
||||
assert_equal 'foo: nil', response.body
|
||||
session_id = cookies['_session_id']
|
||||
|
||||
reset!
|
||||
|
||||
get '/set_session_value', :_session_id => session_id
|
||||
assert_response :success
|
||||
assert_equal nil, cookies['_session_id']
|
||||
end
|
||||
end
|
||||
rescue LoadError, RuntimeError
|
||||
$stderr.puts "Skipping MemCacheStoreTest tests. Start memcached and try again."
|
||||
end
|
||||
|
||||
private
|
||||
def with_test_route_set
|
||||
with_routing do |set|
|
||||
set.draw do |map|
|
||||
map.with_options :controller => "mem_cache_store_test/test" do |c|
|
||||
c.connect "/:action"
|
||||
end
|
||||
end
|
||||
yield
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
require 'abstract_unit'
|
||||
require 'stringio'
|
||||
|
||||
class ActionController::TestSessionTest < ActiveSupport::TestCase
|
||||
|
||||
def test_calling_delete_without_parameters_raises_deprecation_warning_and_calls_to_clear_test_session
|
||||
assert_deprecated(/use clear instead/){ ActionController::TestSession.new.delete }
|
||||
end
|
||||
|
||||
def test_calling_update_without_parameters_raises_deprecation_warning_and_calls_to_clear_test_session
|
||||
assert_deprecated(/use replace instead/){ ActionController::TestSession.new.update }
|
||||
end
|
||||
|
||||
def test_calling_close_raises_deprecation_warning
|
||||
assert_deprecated(/sessions should no longer be closed/){ ActionController::TestSession.new.close }
|
||||
end
|
||||
|
||||
def test_defaults
|
||||
session = ActionController::TestSession.new
|
||||
assert_equal({}, session.data)
|
||||
assert_equal('', session.session_id)
|
||||
end
|
||||
|
||||
def test_ctor_allows_setting
|
||||
session = ActionController::TestSession.new({:one => 'one', :two => 'two'})
|
||||
assert_equal('one', session[:one])
|
||||
assert_equal('two', session[:two])
|
||||
end
|
||||
|
||||
def test_setting_session_item_sets_item
|
||||
session = ActionController::TestSession.new
|
||||
session[:key] = 'value'
|
||||
assert_equal('value', session[:key])
|
||||
end
|
||||
|
||||
def test_calling_delete_removes_item_and_returns_its_value
|
||||
session = ActionController::TestSession.new
|
||||
session[:key] = 'value'
|
||||
assert_equal('value', session[:key])
|
||||
assert_equal('value', session.delete(:key))
|
||||
assert_nil(session[:key])
|
||||
end
|
||||
|
||||
def test_calling_update_with_params_passes_to_attributes
|
||||
session = ActionController::TestSession.new()
|
||||
session.update('key' => 'value')
|
||||
assert_equal('value', session[:key])
|
||||
end
|
||||
|
||||
def test_clear_emptys_session
|
||||
params = {:one => 'one', :two => 'two'}
|
||||
session = ActionController::TestSession.new({:one => 'one', :two => 'two'})
|
||||
session.clear
|
||||
assert_nil(session[:one])
|
||||
assert_nil(session[:two])
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue