redis-actionpack 3.1.3.rc2 → 3.1.3.rc3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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