redis-actionpack 3.1.3.rc2 → 3.1.3.rc3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,5 +1,8 @@
1
1
  source "http://rubygems.org"
2
2
  gemspec
3
3
 
4
- gem 'redis-store', '1.1.0.rc', :path => File.expand_path('../../redis-store', __FILE__)
4
+ gem 'redis-store', '1.1.0.rc2', :path => File.expand_path('../../redis-store', __FILE__)
5
5
  gem 'redis-rack-cache', '1.1.rc2', :path => File.expand_path('../../redis-rack-cache', __FILE__)
6
+ gem 'redis-rack', '1.3.5.rc', :path => File.expand_path('../../redis-rack', __FILE__)
7
+ gem 'SystemTimer', :platform => :mri_18
8
+ gem 'minitest_tu_shim', :platform => :ruby_18
data/Rakefile CHANGED
@@ -3,12 +3,6 @@ Bundler.setup
3
3
  require 'rake'
4
4
  require 'bundler/gem_tasks'
5
5
 
6
- begin
7
- require 'rdoc/task'
8
- rescue LoadError
9
- require 'rake/rdoctask'
10
- end
11
-
12
6
  load 'tasks/redis.tasks.rb'
13
7
  task :default => 'redis:test:suite'
14
8
 
@@ -1,64 +1,17 @@
1
1
  require 'redis-store'
2
+ require 'redis-rack'
2
3
  require 'action_dispatch/middleware/session/abstract_store'
3
4
 
4
- # Redis session storage for Rails, and for Rails only. Derived from
5
- # the MemCacheStore code, simply dropping in Redis instead.
6
- #
7
- # Options:
8
- # :key => Same as with the other cookie stores, key name
9
- # :secret => Encryption secret for the key
10
- # :host => Redis host name, default is localhost
11
- # :port => Redis port, default is 6379
12
- # :db => Database number, defaults to 0. Useful to separate your session storage from other data
13
- # :key_prefix => Prefix for keys used in Redis, e.g. myapp-. Useful to separate session storage keys visibly from others
14
- # :expire_after => A number in seconds to set the timeout interval for the session. Will map directly to expiry in Redis
15
5
  module ActionDispatch
16
6
  module Session
17
- class RedisSessionStore < AbstractStore
7
+ class RedisStore < Rack::Session::Redis
8
+ include Compatibility
9
+ include StaleSessionCheck
18
10
  def initialize(app, options = {})
19
- # Support old :expires option
20
- options[:expire_after] ||= options[:expires]
21
-
22
- super
23
-
24
11
  options = options.dup
25
- servers = [ options.delete(:servers) ].flatten.compact
26
- servers = [ "redis://localhost:6379/0" ] if servers.empty?
27
- servers.map! do |server|
28
- server = Redis::Factory.resolve(server)
29
- server.merge(options)
30
- end
31
-
32
- @pool = Redis::Factory.create(*servers)
12
+ options[:redis_server] ||= options[:servers]
13
+ super
33
14
  end
34
-
35
- private
36
- def get_session(env, sid)
37
- sid ||= generate_sid
38
- begin
39
- session = @pool.get(sid) || {}
40
- rescue Errno::ECONNREFUSED
41
- session = {}
42
- end
43
- [sid, session]
44
- end
45
-
46
- def set_session(env, sid, session_data, opts=nil)
47
- options = env['rack.session.options']
48
- @pool.set(sid, session_data, options)
49
- sid
50
- rescue Errno::ECONNREFUSED
51
- return false
52
- end
53
-
54
- def destroy(env)
55
- if sid = current_session_id(env)
56
- @pool.del(sid)
57
- sid
58
- end
59
- rescue Errno::ECONNREFUSED
60
- false
61
- end
62
15
  end
63
16
  end
64
- end
17
+ end
@@ -1,5 +1,5 @@
1
1
  class Redis
2
2
  module ActionPack
3
- VERSION = '3.1.3.rc2'
3
+ VERSION = '3.1.3.rc3'
4
4
  end
5
5
  end
@@ -18,14 +18,15 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_runtime_dependency 'redis-store', '1.1.0.rc'
21
+ s.add_runtime_dependency 'redis-store', '1.1.0.rc2'
22
22
  s.add_runtime_dependency 'actionpack', '3.1.3'
23
23
  s.add_runtime_dependency 'redis-rack-cache', '1.1.rc2'
24
+ s.add_runtime_dependency 'redis-rack', '1.3.5.rc'
24
25
 
25
- s.add_development_dependency 'rake', '~> 0.9.2.2'
26
- s.add_development_dependency 'bundler', '~> 1.1.rc'
27
- s.add_development_dependency 'mocha', '~> 0.10.0'
28
- s.add_development_dependency 'minitest', '~> 2.8.0'
29
- s.add_development_dependency 'purdytest', '~> 1.0.0'
26
+ s.add_development_dependency 'rake', '~> 0.9.2.2'
27
+ s.add_development_dependency 'bundler', '~> 1.1.rc'
28
+ s.add_development_dependency 'minitest', '~> 2.8.0'
29
+ s.add_development_dependency 'purdytest', '~> 1.0.0'
30
+ s.add_development_dependency 'minitest-rails', '~> 0.0.5'
31
+ s.add_development_dependency 'tzinfo'
30
32
  end
31
-
@@ -0,0 +1 @@
1
+ log/*
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
3
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
4
+
5
+ require File.expand_path('../config/application', __FILE__)
6
+
7
+ Dummy::Application.load_tasks
@@ -0,0 +1,37 @@
1
+ class TestController < ActionController::Base
2
+ def no_session_access
3
+ head :ok
4
+ end
5
+
6
+ def set_session_value
7
+ session[:foo] = "bar"
8
+ head :ok
9
+ end
10
+
11
+ def set_session_value_with_expiry
12
+ request.session_options[:expire_after] = 1.second
13
+ set_session_value
14
+ end
15
+
16
+ def set_serialized_session_value
17
+ session[:foo] = SessionAutoloadTest::Foo.new
18
+ head :ok
19
+ end
20
+
21
+ def get_session_value
22
+ render :text => "foo: #{session[:foo].inspect}"
23
+ end
24
+
25
+ def get_session_id
26
+ render :text => "#{request.session_options[:id]}"
27
+ end
28
+
29
+ def call_reset_session
30
+ session[:bar]
31
+ reset_session
32
+ session[:bar] = "baz"
33
+ head :ok
34
+ end
35
+
36
+ def rescue_action(e) raise end
37
+ end
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run Dummy::Application
@@ -0,0 +1,11 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require "action_controller/railtie"
4
+
5
+ Bundler.require
6
+
7
+ module Dummy
8
+ class Application < Rails::Application
9
+ end
10
+ end
11
+
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ gemfile = File.expand_path('../../../../Gemfile', __FILE__)
3
+
4
+ if File.exist?(gemfile)
5
+ ENV['BUNDLE_GEMFILE'] = gemfile
6
+ require 'bundler'
7
+ Bundler.setup
8
+ end
9
+
10
+ $:.unshift File.expand_path('../../../../lib', __FILE__)
@@ -0,0 +1,5 @@
1
+ # Load the rails application
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the rails application
5
+ Dummy::Application.initialize!
@@ -0,0 +1,25 @@
1
+ Dummy::Application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb
3
+
4
+ # The test environment is used exclusively to run your application's
5
+ # test suite. You never need to work with it otherwise. Remember that
6
+ # your test database is "scratch space" for the test suite and is wiped
7
+ # and recreated between test runs. Don't rely on the data there!
8
+ config.cache_classes = false
9
+
10
+ # Log error messages when you accidentally call methods on nil
11
+ config.whiny_nils = true
12
+
13
+ # Show full error reports and disable caching
14
+ config.consider_all_requests_local = true
15
+ config.action_controller.perform_caching = false
16
+
17
+ # Raise exceptions instead of rendering exception templates
18
+ config.action_dispatch.show_exceptions = false
19
+
20
+ # Disable request forgery protection in test environment
21
+ config.action_controller.allow_forgery_protection = false
22
+
23
+ # Print deprecation notices to the stderr
24
+ config.active_support.deprecation = :stderr
25
+ end
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+ # Make sure the secret is at least 30 characters and all random,
6
+ # no regular words or you'll be exposed to dictionary attacks.
7
+ Dummy::Application.config.secret_token = 'a7d2ff143cdb3d1f9470a3ce2df7bb220a9c4498cb5c4a35150705de6719114b12ab7512a9618a2d3c25f8d6e62ab22c042445ed856ff674f4ee2faabd9d2041'
@@ -0,0 +1,11 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Dummy::Application.config.session_store :redis_store,
4
+ :key => '_session_id',
5
+ :servers => ["redis://127.0.0.1:6380/1/theplaylist",
6
+ "redis://127.0.0.1:6381/1/theplaylist"]
7
+
8
+ # Use the database for sessions instead of the cookie-based default,
9
+ # which shouldn't be used to store highly confidential information
10
+ # (create the session table with "rails generate session_migration")
11
+ # Dummy::Application.config.session_store :active_record_store
@@ -0,0 +1,3 @@
1
+ Dummy::Application.routes.draw do
2
+ match ':action', :to => TestController
3
+ end
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,10 @@
1
+ module SessionAutoloadTest
2
+ class Foo
3
+ def initialize(bar='baz')
4
+ @bar = bar
5
+ end
6
+ def inspect
7
+ "#<#{self.class} bar:#{@bar.inspect}>"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,130 @@
1
+ require 'test_helper'
2
+
3
+ class RedisStoreIntegrationTest < MiniTest::Rails::IntegrationTest
4
+ it "reads the data" do
5
+ get '/set_session_value'
6
+ response.must_be :success?
7
+ cookies['_session_id'].wont_be_nil
8
+
9
+ get '/get_session_value'
10
+ response.must_be :success?
11
+ response.body.must_equal 'foo: "bar"'
12
+ end
13
+
14
+ it "should get nil session value" do
15
+ get '/get_session_value'
16
+ response.must_be :success?
17
+ response.body.must_equal 'foo: nil'
18
+ end
19
+
20
+ it "should delete the data after session reset" do
21
+ get '/set_session_value'
22
+ response.must_be :success?
23
+ cookies['_session_id'].wont_be_nil
24
+ session_cookie = cookies.send(:hash_for)['_session_id']
25
+
26
+ get '/call_reset_session'
27
+ response.must_be :success?
28
+ headers['Set-Cookie'].wont_equal []
29
+
30
+ cookies << session_cookie
31
+
32
+ get '/get_session_value'
33
+ response.must_be :success?
34
+ response.body.must_equal 'foo: nil'
35
+ end
36
+
37
+ it "should not send cookies on write, not read" do
38
+ get '/get_session_value'
39
+ response.must_be :success?
40
+ response.body.must_equal 'foo: nil'
41
+ cookies['_session_id'].must_be_nil
42
+ end
43
+
44
+ it "should set session value after session reset" do
45
+ get '/set_session_value'
46
+ response.must_be :success?
47
+ cookies['_session_id'].wont_be_nil
48
+ session_id = cookies['_session_id']
49
+
50
+ get '/call_reset_session'
51
+ response.must_be :success?
52
+ headers['Set-Cookie'].wont_equal []
53
+
54
+ get '/get_session_value'
55
+ response.must_be :success?
56
+ response.body.must_equal 'foo: nil'
57
+
58
+ get '/get_session_id'
59
+ response.must_be :success?
60
+ response.body.wont_equal session_id
61
+ end
62
+
63
+ it "should be able to read session id without accessing the session hash" do
64
+ get '/set_session_value'
65
+ response.must_be :success?
66
+ cookies['_session_id'].wont_be_nil
67
+ session_id = cookies['_session_id']
68
+
69
+ get '/get_session_id'
70
+ response.must_be :success?
71
+ response.body.must_equal session_id
72
+ end
73
+
74
+ it "should auto-load unloaded class" do
75
+ with_autoload_path "session_autoload_test" do
76
+ get '/set_serialized_session_value'
77
+ response.must_be :success?
78
+ cookies['_session_id'].wont_be_nil
79
+ end
80
+
81
+ with_autoload_path "session_autoload_test" do
82
+ get '/get_session_id'
83
+ assert_response :success
84
+ end
85
+
86
+ with_autoload_path "session_autoload_test" do
87
+ get '/get_session_value'
88
+ response.must_be :success?
89
+ response.body.must_equal 'foo: #<SessionAutoloadTest::Foo bar:"baz">'
90
+ end
91
+ end
92
+
93
+ it "should not resend the cookie again if session_id cookie is already exists" do
94
+ get '/set_session_value'
95
+ response.must_be :success?
96
+ cookies['_session_id'].wont_be_nil
97
+
98
+ get '/get_session_value'
99
+ response.must_be :success?
100
+ headers['Set-Cookie'].must_be_nil
101
+ end
102
+
103
+ it "should prevent session fixation" do
104
+ get '/get_session_value'
105
+ response.must_be :success?
106
+ response.body.must_equal 'foo: nil'
107
+ session_id = cookies['_session_id']
108
+
109
+ reset!
110
+
111
+ get '/set_session_value', :_session_id => session_id
112
+ response.must_be :success?
113
+ cookies['_session_id'].wont_equal session_id
114
+ end
115
+
116
+ it "should write the data with expiration time" do
117
+ get '/set_session_value_with_expiry'
118
+ response.must_be :success?
119
+
120
+ get '/get_session_value'
121
+ response.must_be :success?
122
+ response.body.must_equal 'foo: "bar"'
123
+
124
+ sleep 1
125
+
126
+ get '/get_session_value'
127
+ response.must_be :success?
128
+ response.body.must_equal 'foo: nil'
129
+ end
130
+ end
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
 
3
3
  describe Redis::ActionPack::VERSION do
4
- it "must be equal to 3.1.3.rc2" do
5
- Redis::ActionPack::VERSION.must_equal '3.1.3.rc2'
4
+ it "must be equal to 3.1.3.rc3" do
5
+ Redis::ActionPack::VERSION.must_equal '3.1.3.rc3'
6
6
  end
7
7
  end
@@ -1,8 +1,47 @@
1
- Bundler.setup
2
- gem 'minitest'
3
- require 'minitest/spec'
4
1
  require 'minitest/autorun'
5
- require 'mocha'
2
+ require 'minitest/rails'
6
3
  require 'active_support/core_ext/numeric/time'
7
- require 'action_dispatch'
8
- require 'action_dispatch/middleware/session/redis_store'
4
+
5
+ ENV["RAILS_ENV"] = "test"
6
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
7
+ require "rails/test_help"
8
+
9
+ Rails.backtrace_cleaner.remove_silencers!
10
+
11
+ # TODO: remove once https://github.com/blowmage/minitest-rails/issues/12 is resolved
12
+ class MiniTest::Rails::IntegrationTest < MiniTest::Rails::Spec
13
+ include ActiveSupport::Testing::SetupAndTeardown
14
+
15
+ include ActionDispatch::Integration::Runner
16
+
17
+ @@app = nil
18
+
19
+ def self.app
20
+ # DEPRECATE Rails application fallback
21
+ # This should be set by the initializer
22
+ @@app || (defined?(Rails.application) && Rails.application) || nil
23
+ end
24
+
25
+ def self.app=(app)
26
+ @@app = app
27
+ end
28
+
29
+ def app
30
+ super || self.class.app
31
+ end
32
+ end
33
+
34
+ def with_autoload_path(path)
35
+ path = File.join(File.dirname(__FILE__), "fixtures", path)
36
+ if ActiveSupport::Dependencies.autoload_paths.include?(path)
37
+ yield
38
+ else
39
+ begin
40
+ ActiveSupport::Dependencies.autoload_paths << path
41
+ yield
42
+ ensure
43
+ ActiveSupport::Dependencies.autoload_paths.reject! {|p| p == path}
44
+ ActiveSupport::Dependencies.clear
45
+ end
46
+ end
47
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-actionpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.3.rc2
4
+ version: 3.1.3.rc3
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-20 00:00:00.000000000 Z
12
+ date: 2012-02-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis-store
16
- requirement: &70289499148240 !ruby/object:Gem::Requirement
16
+ requirement: &70362130694300 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
20
20
  - !ruby/object:Gem::Version
21
- version: 1.1.0.rc
21
+ version: 1.1.0.rc2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70289499148240
24
+ version_requirements: *70362130694300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: actionpack
27
- requirement: &70289499147740 !ruby/object:Gem::Requirement
27
+ requirement: &70362130693480 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - =
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.1.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70289499147740
35
+ version_requirements: *70362130693480
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: redis-rack-cache
38
- requirement: &70289499147280 !ruby/object:Gem::Requirement
38
+ requirement: &70362130691920 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,10 +43,21 @@ dependencies:
43
43
  version: 1.1.rc2
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70289499147280
46
+ version_requirements: *70362130691920
47
+ - !ruby/object:Gem::Dependency
48
+ name: redis-rack
49
+ requirement: &70362130691260 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - =
53
+ - !ruby/object:Gem::Version
54
+ version: 1.3.5.rc
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70362130691260
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: rake
49
- requirement: &70289499146820 !ruby/object:Gem::Requirement
60
+ requirement: &70362130690640 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ~>
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: 0.9.2.2
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70289499146820
68
+ version_requirements: *70362130690640
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: bundler
60
- requirement: &70289492991060 !ruby/object:Gem::Requirement
71
+ requirement: &70362130689740 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ~>
@@ -65,40 +76,51 @@ dependencies:
65
76
  version: 1.1.rc
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70289492991060
79
+ version_requirements: *70362130689740
69
80
  - !ruby/object:Gem::Dependency
70
- name: mocha
71
- requirement: &70289492989200 !ruby/object:Gem::Requirement
81
+ name: minitest
82
+ requirement: &70362130688860 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ~>
75
86
  - !ruby/object:Gem::Version
76
- version: 0.10.0
87
+ version: 2.8.0
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *70289492989200
90
+ version_requirements: *70362130688860
80
91
  - !ruby/object:Gem::Dependency
81
- name: minitest
82
- requirement: &70289492986120 !ruby/object:Gem::Requirement
92
+ name: purdytest
93
+ requirement: &70362130687820 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ~>
86
97
  - !ruby/object:Gem::Version
87
- version: 2.8.0
98
+ version: 1.0.0
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *70289492986120
101
+ version_requirements: *70362130687820
91
102
  - !ruby/object:Gem::Dependency
92
- name: purdytest
93
- requirement: &70289492984040 !ruby/object:Gem::Requirement
103
+ name: minitest-rails
104
+ requirement: &70362130686860 !ruby/object:Gem::Requirement
94
105
  none: false
95
106
  requirements:
96
107
  - - ~>
97
108
  - !ruby/object:Gem::Version
98
- version: 1.0.0
109
+ version: 0.0.5
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70362130686860
113
+ - !ruby/object:Gem::Dependency
114
+ name: tzinfo
115
+ requirement: &70362130686180 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
99
121
  type: :development
100
122
  prerelease: false
101
- version_requirements: *70289492984040
123
+ version_requirements: *70362130686180
102
124
  description: Redis session store for ActionPack
103
125
  email:
104
126
  - guidi.luca@gmail.com
@@ -115,7 +137,20 @@ files:
115
137
  - lib/redis-actionpack.rb
116
138
  - lib/redis/actionpack/version.rb
117
139
  - redis-actionpack.gemspec
118
- - test/action_dispatch/middleware/session/redis_store_test.rb
140
+ - test/dummy/.gitignore
141
+ - test/dummy/Rakefile
142
+ - test/dummy/app/controllers/test_controller.rb
143
+ - test/dummy/config.ru
144
+ - test/dummy/config/application.rb
145
+ - test/dummy/config/boot.rb
146
+ - test/dummy/config/environment.rb
147
+ - test/dummy/config/environments/test.rb
148
+ - test/dummy/config/initializers/secret_token.rb
149
+ - test/dummy/config/initializers/session_store.rb
150
+ - test/dummy/config/routes.rb
151
+ - test/dummy/script/rails
152
+ - test/fixtures/session_autoload_test/session_autoload_test/foo.rb
153
+ - test/integration/redis_store_integration_test.rb
119
154
  - test/redis/actionpack/version_test.rb
120
155
  - test/test_helper.rb
121
156
  homepage: http://jodosha.github.com/redis-store
@@ -143,6 +178,19 @@ signing_key:
143
178
  specification_version: 3
144
179
  summary: Redis session store for ActionPack
145
180
  test_files:
146
- - test/action_dispatch/middleware/session/redis_store_test.rb
181
+ - test/dummy/.gitignore
182
+ - test/dummy/Rakefile
183
+ - test/dummy/app/controllers/test_controller.rb
184
+ - test/dummy/config.ru
185
+ - test/dummy/config/application.rb
186
+ - test/dummy/config/boot.rb
187
+ - test/dummy/config/environment.rb
188
+ - test/dummy/config/environments/test.rb
189
+ - test/dummy/config/initializers/secret_token.rb
190
+ - test/dummy/config/initializers/session_store.rb
191
+ - test/dummy/config/routes.rb
192
+ - test/dummy/script/rails
193
+ - test/fixtures/session_autoload_test/session_autoload_test/foo.rb
194
+ - test/integration/redis_store_integration_test.rb
147
195
  - test/redis/actionpack/version_test.rb
148
196
  - test/test_helper.rb
@@ -1,77 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe ActionDispatch::Session::RedisSessionStore do
4
- attr_reader :app
5
-
6
- before do
7
- @app = Object.new
8
- @store = ActionDispatch::Session::RedisSessionStore.new(app)
9
- @dstore = ActionDispatch::Session::RedisSessionStore.new app, :servers => ["redis://127.0.0.1:6380/1", "redis://127.0.0.1:6381/1"]
10
- @rabbit = OpenStruct.new :name => "bunny"
11
- @white_rabbit = OpenStruct.new :color => "white"
12
- @sid = "rabbit"
13
- @env = {'rack.session.options' => {:id => @sid}}
14
- with_store_management do |store|
15
- class << store
16
- attr_reader :pool
17
- public :get_session, :set_session, :destroy
18
- end
19
- store.set_session(@env, @sid, @rabbit)
20
- store.pool.del "counter"
21
- store.pool.del "rub-a-dub"
22
- end
23
- end
24
-
25
- it "reads the data" do
26
- with_store_management do |store|
27
- store.get_session(@env, @sid).must_equal([@sid, @rabbit])
28
- end
29
- end
30
-
31
- it "should write the data" do
32
- with_store_management do |store|
33
- store.set_session(@env, @sid, @white_rabbit)
34
- store.get_session(@env, @sid).must_equal([@sid, @white_rabbit])
35
- end
36
- end
37
-
38
- it "should delete the data" do
39
- with_store_management do |store|
40
- store.destroy(@env)
41
- store.get_session(@env, @sid).must_equal([@sid, {}])
42
- end
43
- end
44
-
45
- it "should write the data with expiration time" do
46
- with_store_management do |store|
47
- @env['rack.session.options'].merge!(:expires_in => 1.second)
48
- store.set_session(@env, @sid, @white_rabbit); sleep 2
49
- store.get_session(@env, @sid).must_equal([@sid, {}])
50
- end
51
- end
52
-
53
- describe "namespace" do
54
- before do
55
- @namespace = "theplaylist"
56
- @store = ActionDispatch::Session::RedisSessionStore.new(lambda {|| }, :servers => [{ :namespace => @namespace }])
57
- @pool = @store.instance_variable_get(:@pool)
58
- @client = @pool.instance_variable_get(:@client)
59
- end
60
-
61
- it "should read the data" do
62
- @client.expects(:call).with([:get, "#{@namespace}:#{@sid}"])
63
- @store.send :get_session, @env, @sid
64
- end
65
-
66
- it "should write the data" do
67
- @client.expects(:call).with([:set, "#{@namespace}:#{@sid}", Marshal.dump(@white_rabbit)])
68
- @store.send :set_session, @env, @sid, @white_rabbit
69
- end
70
- end
71
-
72
- private
73
- def with_store_management
74
- yield @store
75
- yield @dstore
76
- end
77
- end