warden 1.2.1 → 1.2.3
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 +1 -1
- data/History.rdoc +7 -0
- data/README.textile +2 -1
- data/lib/warden/mixins/common.rb +3 -2
- data/lib/warden/proxy.rb +1 -1
- data/lib/warden/session_serializer.rb +5 -1
- data/lib/warden/strategies.rb +2 -1
- data/lib/warden/version.rb +1 -1
- data/spec/helpers/request_helper.rb +1 -1
- data/spec/warden/proxy_spec.rb +23 -6
- data/spec/warden/session_serializer_spec.rb +5 -0
- data/spec/warden/strategies_spec.rb +11 -1
- data/warden.gemspec +1 -0
- metadata +37 -53
data/Gemfile
CHANGED
data/History.rdoc
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
== Version 1.2.3 / 2013-07-14
|
2
|
+
* Fix an issue with lazy loaded sessions
|
3
|
+
|
4
|
+
== Version 1.2.2 / 2013-07-12
|
5
|
+
* Support nil session stores on logout
|
6
|
+
* Fix strategies blowing up with undefined method base
|
7
|
+
|
1
8
|
== Version 1.2.1 / 2012-06-16
|
2
9
|
* Minor caching and speed improvements
|
3
10
|
* Add support to #lock in the proxy
|
data/README.textile
CHANGED
@@ -4,5 +4,6 @@ h2. Maintainers
|
|
4
4
|
|
5
5
|
* Daniel Neighman (hassox)
|
6
6
|
* José Valim (josevalim)
|
7
|
+
* Justin Smestad (jsmestad)
|
7
8
|
|
8
|
-
"A list of all contributors is available on Github.":https://github.com/hassox/warden/contributors
|
9
|
+
"A list of all contributors is available on Github.":https://github.com/hassox/warden/contributors
|
data/lib/warden/mixins/common.rb
CHANGED
@@ -24,7 +24,7 @@ module Warden
|
|
24
24
|
def warden_cookies
|
25
25
|
warn "warden_cookies was never functional and is going to be removed in next versions"
|
26
26
|
env['warden.cookies'] ||= {}
|
27
|
-
end #
|
27
|
+
end # warden_cookies
|
28
28
|
|
29
29
|
# Convenience method to access the rack request params
|
30
30
|
# :api: public
|
@@ -37,7 +37,8 @@ module Warden
|
|
37
37
|
# @api overwritable
|
38
38
|
def reset_session!
|
39
39
|
raw_session.clear
|
40
|
-
end
|
40
|
+
end # reset_session!
|
41
|
+
|
41
42
|
end # Common
|
42
43
|
end # Mixins
|
43
44
|
end # Warden
|
data/lib/warden/proxy.rb
CHANGED
@@ -261,7 +261,7 @@ module Warden
|
|
261
261
|
user = @users.delete(scope)
|
262
262
|
manager._run_callbacks(:before_logout, user, self, :scope => scope)
|
263
263
|
|
264
|
-
raw_session.delete("warden.user.#{scope}.session")
|
264
|
+
raw_session.delete("warden.user.#{scope}.session") unless raw_session.nil?
|
265
265
|
session_serializer.delete(scope, user)
|
266
266
|
end
|
267
267
|
|
@@ -2,7 +2,6 @@
|
|
2
2
|
module Warden
|
3
3
|
class SessionSerializer
|
4
4
|
attr_reader :env
|
5
|
-
include ::Warden::Mixins::Common
|
6
5
|
|
7
6
|
def initialize(env)
|
8
7
|
@env = env
|
@@ -44,5 +43,10 @@ module Warden
|
|
44
43
|
def delete(scope, user=nil)
|
45
44
|
session.delete(key_for(scope))
|
46
45
|
end
|
46
|
+
|
47
|
+
# We can't cache this result because the session can be lazy loaded
|
48
|
+
def session
|
49
|
+
env["rack.session"] || {}
|
50
|
+
end
|
47
51
|
end # SessionSerializer
|
48
52
|
end # Warden
|
data/lib/warden/strategies.rb
CHANGED
@@ -11,7 +11,8 @@ module Warden
|
|
11
11
|
raise NoMethodError, "authenticate! is not declared in the #{label.inspect} strategy"
|
12
12
|
end
|
13
13
|
|
14
|
-
|
14
|
+
base = Warden::Strategies::Base
|
15
|
+
unless strategy.ancestors.include?(base)
|
15
16
|
raise "#{label.inspect} is not a #{base}"
|
16
17
|
end
|
17
18
|
|
data/lib/warden/version.rb
CHANGED
@@ -18,7 +18,7 @@ module Warden::Spec
|
|
18
18
|
blk = opts[:configurator] || proc{}
|
19
19
|
|
20
20
|
Rack::Builder.new do
|
21
|
-
use opts[:session] || Warden::Spec::Helpers::Session
|
21
|
+
use opts[:session] || Warden::Spec::Helpers::Session unless opts[:nil_session]
|
22
22
|
use Warden::Manager, opts, &blk
|
23
23
|
run app
|
24
24
|
end
|
data/spec/warden/proxy_spec.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
4
|
describe Warden::Proxy do
|
5
|
-
|
6
5
|
before(:all) do
|
7
6
|
load_strategies
|
8
7
|
end
|
@@ -340,7 +339,6 @@ describe Warden::Proxy do
|
|
340
339
|
end
|
341
340
|
setup_rack(app).call(@env)
|
342
341
|
end
|
343
|
-
|
344
342
|
end
|
345
343
|
|
346
344
|
describe "set user" do
|
@@ -366,6 +364,17 @@ describe Warden::Proxy do
|
|
366
364
|
setup_rack(app).call(@env)
|
367
365
|
end
|
368
366
|
|
367
|
+
it "should not throw error when no session is configured and store is false" do
|
368
|
+
app = lambda do |env|
|
369
|
+
env['rack.session'] = nil
|
370
|
+
env['warden'].authenticate(:pass, :store => false)
|
371
|
+
env['warden'].should be_authenticated
|
372
|
+
env['warden'].user.should == "Valid User"
|
373
|
+
valid_response
|
374
|
+
end
|
375
|
+
setup_rack(app).call(@env)
|
376
|
+
end
|
377
|
+
|
369
378
|
it "should not run the callbacks when :run_callbacks is false" do
|
370
379
|
app = lambda do |env|
|
371
380
|
env['warden'].manager.should_not_receive(:_run_callbacks)
|
@@ -512,7 +521,6 @@ describe Warden::Proxy do
|
|
512
521
|
end
|
513
522
|
|
514
523
|
describe "logout" do
|
515
|
-
|
516
524
|
before(:each) do
|
517
525
|
@env['rack.session'] = {"warden.user.default.key" => "default key", "warden.user.foo.key" => "foo key", :foo => "bar"}
|
518
526
|
@app = lambda do |e|
|
@@ -549,6 +557,13 @@ describe Warden::Proxy do
|
|
549
557
|
@env['rack.session'].should be_empty
|
550
558
|
end
|
551
559
|
|
560
|
+
it "should not raise exception if raw_session is nil" do
|
561
|
+
@app = setup_rack(@app, { nil_session: true })
|
562
|
+
@env['rack.session'] = nil
|
563
|
+
@env['warden.spec.which_logout'] = :foo
|
564
|
+
expect { @app.call(@env) }.to_not raise_error(NoMethodError)
|
565
|
+
end
|
566
|
+
|
552
567
|
it "should clear the user when logging out" do
|
553
568
|
@env['rack.session'].should_not be_nil
|
554
569
|
app = lambda do |e|
|
@@ -665,7 +680,7 @@ describe Warden::Proxy do
|
|
665
680
|
app = lambda do |e|
|
666
681
|
e['warden'].should be_authenticated
|
667
682
|
end
|
668
|
-
|
683
|
+
setup_rack(app).call(@env)
|
669
684
|
end
|
670
685
|
|
671
686
|
it "should yield to a block when the block is passed and authenticated" do
|
@@ -700,7 +715,7 @@ describe Warden::Proxy do
|
|
700
715
|
app = lambda do |e|
|
701
716
|
e['warden'].should_not be_authenticated
|
702
717
|
end
|
703
|
-
|
718
|
+
setup_rack(app).call(@env)
|
704
719
|
end
|
705
720
|
|
706
721
|
it "should return false if scope cannot be retrieved from session" do
|
@@ -786,7 +801,7 @@ describe Warden::Proxy do
|
|
786
801
|
app = lambda do |e|
|
787
802
|
e['warden'].should be_unauthenticated
|
788
803
|
end
|
789
|
-
|
804
|
+
setup_rack(app).call(@env)
|
790
805
|
end
|
791
806
|
|
792
807
|
it "should yield to a block when the block is passed and authenticated" do
|
@@ -828,6 +843,8 @@ end
|
|
828
843
|
|
829
844
|
describe "dynamic default_strategies" do
|
830
845
|
before(:all) do
|
846
|
+
load_strategies
|
847
|
+
|
831
848
|
class ::DynamicDefaultStrategies
|
832
849
|
def initialize(app, &blk)
|
833
850
|
@app, @blk = app, blk
|
@@ -45,4 +45,9 @@ describe Warden::SessionSerializer do
|
|
45
45
|
@session.fetch(:default)
|
46
46
|
@env['rack.session'].should_not have_key("warden.user.default.key")
|
47
47
|
end
|
48
|
+
|
49
|
+
it "should support a nil session store" do
|
50
|
+
@env['rack.session'] = nil
|
51
|
+
@session.fetch(:default).should be_nil
|
52
|
+
end
|
48
53
|
end
|
@@ -11,13 +11,23 @@ describe Warden::Strategies do
|
|
11
11
|
Warden::Strategies[:strategy1].ancestors.should include(Warden::Strategies::Base)
|
12
12
|
end
|
13
13
|
|
14
|
-
it "should raise an error if I add a strategy via a block, that does not have an
|
14
|
+
it "should raise an error if I add a strategy via a block, that does not have an authenticate! method" do
|
15
15
|
lambda do
|
16
16
|
Warden::Strategies.add(:strategy2) do
|
17
17
|
end
|
18
18
|
end.should raise_error
|
19
19
|
end
|
20
20
|
|
21
|
+
it "should raise an error if I add a strategy that does not extend Warden::Strategies::Base" do
|
22
|
+
non_base = Class.new do
|
23
|
+
def authenticate!
|
24
|
+
end
|
25
|
+
end
|
26
|
+
expect do
|
27
|
+
Warden::Strategies.add(:strategy_non_base, non_base)
|
28
|
+
end.to raise_error(/is not a Warden::Strategies::Base/)
|
29
|
+
end
|
30
|
+
|
21
31
|
it "should allow me to get access to a particular strategy" do
|
22
32
|
Warden::Strategies.add(:strategy3) do
|
23
33
|
def authenticate!; end
|
data/warden.gemspec
CHANGED
metadata
CHANGED
@@ -1,48 +1,40 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: warden
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
hash: 29
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 1
|
8
|
-
- 2
|
9
|
-
- 1
|
10
|
-
version: 1.2.1
|
5
|
+
version: 1.2.3
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Daniel Neighman
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2013-07-14 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
none: false
|
22
21
|
name: rack
|
22
|
+
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
requirement:
|
24
|
+
requirement: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ! '>='
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '1.0'
|
25
29
|
none: false
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 15
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 0
|
33
|
-
version: "1.0"
|
34
|
-
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
30
|
description:
|
37
31
|
email: has.sox@gmail.com
|
38
32
|
executables: []
|
39
|
-
|
40
33
|
extensions: []
|
41
|
-
|
42
|
-
extra_rdoc_files:
|
34
|
+
extra_rdoc_files:
|
43
35
|
- LICENSE
|
44
36
|
- README.textile
|
45
|
-
files:
|
37
|
+
files:
|
46
38
|
- Gemfile
|
47
39
|
- History.rdoc
|
48
40
|
- lib/warden/config.rb
|
@@ -82,39 +74,31 @@ files:
|
|
82
74
|
- spec/warden/test/helpers_spec.rb
|
83
75
|
- spec/warden/test/test_mode_spec.rb
|
84
76
|
- warden.gemspec
|
85
|
-
has_rdoc: true
|
86
77
|
homepage: http://github.com/hassox/warden
|
87
|
-
licenses:
|
88
|
-
|
78
|
+
licenses:
|
79
|
+
- MIT
|
89
80
|
post_install_message:
|
90
|
-
rdoc_options:
|
81
|
+
rdoc_options:
|
91
82
|
- --charset=UTF-8
|
92
|
-
require_paths:
|
83
|
+
require_paths:
|
93
84
|
- lib
|
94
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
95
90
|
none: false
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
- 0
|
102
|
-
version: "0"
|
103
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
104
96
|
none: false
|
105
|
-
requirements:
|
106
|
-
- - ">="
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
hash: 3
|
109
|
-
segments:
|
110
|
-
- 0
|
111
|
-
version: "0"
|
112
97
|
requirements: []
|
113
|
-
|
114
98
|
rubyforge_project: warden
|
115
|
-
rubygems_version: 1.
|
99
|
+
rubygems_version: 1.8.23
|
116
100
|
signing_key:
|
117
101
|
specification_version: 3
|
118
102
|
summary: Rack middleware that provides authentication for rack applications
|
119
103
|
test_files: []
|
120
|
-
|
104
|
+
has_rdoc:
|