warden 0.5.3 → 0.6.0
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/History.rdoc +8 -5
- data/README.textile +1 -1
- data/lib/warden.rb +7 -4
- data/lib/warden/declarable.rb +43 -0
- data/lib/warden/hooks.rb +121 -0
- data/lib/warden/manager.rb +52 -21
- data/lib/warden/mixins/common.rb +11 -2
- data/lib/warden/proxy.rb +88 -32
- data/lib/warden/serializers.rb +20 -0
- data/lib/warden/serializers/base.rb +38 -0
- data/lib/warden/serializers/cookie.rb +34 -0
- data/lib/warden/serializers/session.rb +30 -0
- data/lib/warden/strategies.rb +18 -0
- data/lib/warden/{authentication/strategy_base.rb → strategies/base.rb} +27 -2
- data/lib/warden/version.rb +1 -1
- data/spec/helpers/request_helper.rb +14 -12
- data/spec/{warden → helpers}/strategies/failz.rb +0 -0
- data/spec/{warden → helpers}/strategies/invalid.rb +0 -0
- data/spec/{warden → helpers}/strategies/pass.rb +0 -0
- data/spec/{warden → helpers}/strategies/pass_without_user.rb +0 -0
- data/spec/{warden → helpers}/strategies/password.rb +0 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/warden/authenticated_data_store_spec.rb +4 -4
- data/spec/warden/manager_spec.rb +0 -8
- data/spec/warden/proxy_spec.rb +61 -10
- data/spec/warden/serializers/cookie_spec.rb +60 -0
- data/spec/warden/serializers/session_spec.rb +47 -0
- data/spec/warden/serializers_spec.rb +96 -0
- data/spec/warden/{strategy_base_spec.rb → strategies/base_spec.rb} +1 -1
- data/spec/warden/strategies_spec.rb +19 -15
- data/warden.gemspec +28 -18
- metadata +28 -18
- data/VERSION +0 -1
- data/lib/warden/authentication/hooks.rb +0 -124
- data/lib/warden/authentication/strategies.rb +0 -59
@@ -0,0 +1,60 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
describe Warden::Serializers::Cookie do
|
4
|
+
before(:each) do
|
5
|
+
@env = env_with_params
|
6
|
+
@cookie = Warden::Serializers::Cookie.new(@env)
|
7
|
+
end
|
8
|
+
|
9
|
+
def set_cookie!
|
10
|
+
@env['HTTP_COOKIE'] = @cookie.response.headers['Set-Cookie']
|
11
|
+
end
|
12
|
+
|
13
|
+
def read_cookie
|
14
|
+
cookie = @cookie.response.headers['Set-Cookie']
|
15
|
+
cookie = cookie.first if cookie.is_a?(Array)
|
16
|
+
cookie.split(";").first
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should store data for the default scope" do
|
20
|
+
@cookie.store("user", :default)
|
21
|
+
read_cookie.should == "warden.user.default.key=user"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should check if a data is stored or not" do
|
25
|
+
@cookie.should_not be_stored(:default)
|
26
|
+
@cookie.store("user", :default)
|
27
|
+
set_cookie!
|
28
|
+
@cookie.should be_stored(:default)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should load an user from store" do
|
32
|
+
@cookie.fetch(:default).should be_nil
|
33
|
+
@cookie.store("user", :default)
|
34
|
+
set_cookie!
|
35
|
+
@cookie.fetch(:default).should == "user"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should store data based on the scope" do
|
39
|
+
@cookie.store("user", :default)
|
40
|
+
set_cookie!
|
41
|
+
@cookie.fetch(:default).should == "user"
|
42
|
+
@cookie.fetch(:another).should be_nil
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should delete data from store" do
|
46
|
+
@cookie.store("user", :default)
|
47
|
+
set_cookie!
|
48
|
+
@cookie.fetch(:default).should == "user"
|
49
|
+
@cookie.delete(:default)
|
50
|
+
read_cookie.should == "warden.user.default.key="
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should delete information from store if user cannot be retrieved" do
|
54
|
+
@cookie.store("user", :default)
|
55
|
+
set_cookie!
|
56
|
+
@cookie.instance_eval "def deserialize(key); nil; end"
|
57
|
+
@cookie.fetch(:default)
|
58
|
+
read_cookie.should == "warden.user.default.key="
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
describe Warden::Serializers::Session do
|
4
|
+
before(:each) do
|
5
|
+
@env = env_with_params
|
6
|
+
@env['rack.session'] ||= {}
|
7
|
+
@session = Warden::Serializers::Session.new(@env)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should store data for the default scope" do
|
11
|
+
@session.store("user", :default)
|
12
|
+
@env['rack.session'].should == { "warden.user.default.key"=>"user" }
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should check if a data is stored or not" do
|
16
|
+
@session.should_not be_stored(:default)
|
17
|
+
@session.store("user", :default)
|
18
|
+
@session.should be_stored(:default)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should load an user from store" do
|
22
|
+
@session.fetch(:default).should be_nil
|
23
|
+
@session.store("user", :default)
|
24
|
+
@session.fetch(:default).should == "user"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should store data based on the scope" do
|
28
|
+
@session.store("user", :default)
|
29
|
+
@session.fetch(:default).should == "user"
|
30
|
+
@session.fetch(:another).should be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should delete data from store" do
|
34
|
+
@session.store("user", :default)
|
35
|
+
@session.fetch(:default).should == "user"
|
36
|
+
@session.delete(:default)
|
37
|
+
@session.fetch(:default).should be_nil
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should delete information from store if user cannot be retrieved" do
|
41
|
+
@session.store("user", :default)
|
42
|
+
@env['rack.session'].should have_key("warden.user.default.key")
|
43
|
+
@session.instance_eval "def deserialize(key); nil; end"
|
44
|
+
@session.fetch(:default)
|
45
|
+
@env['rack.session'].should_not have_key("warden.user.default.key")
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe Warden::Serializers do
|
4
|
+
it "should let me add a serializer via a block" do
|
5
|
+
Warden::Serializers.add(:serializer1) do
|
6
|
+
def fetch; end
|
7
|
+
def store; end
|
8
|
+
def stored?; end
|
9
|
+
def delete; end
|
10
|
+
end
|
11
|
+
Warden::Serializers[:serializer1].ancestors.should include(Warden::Serializers::Base)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should raise an error if I add a serializer via a block, that does not have an autheniticate! method" do
|
15
|
+
lambda do
|
16
|
+
Warden::Serializers.add(:serializer2) do
|
17
|
+
end
|
18
|
+
end.should raise_error
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should allow me to get access to a particular serializer" do
|
22
|
+
Warden::Serializers.add(:serializer3) do
|
23
|
+
def fetch; end
|
24
|
+
def store; end
|
25
|
+
def stored?; end
|
26
|
+
def delete; end
|
27
|
+
end
|
28
|
+
serializer = Warden::Serializers[:serializer3]
|
29
|
+
serializer.should_not be_nil
|
30
|
+
serializer.ancestors.should include(Warden::Serializers::Base)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should allow me to add a serializer with the required methods" do
|
34
|
+
class MySerializer < Warden::Serializers::Base
|
35
|
+
def fetch; end
|
36
|
+
def store; end
|
37
|
+
def stored?; end
|
38
|
+
def delete; end
|
39
|
+
end
|
40
|
+
lambda do
|
41
|
+
Warden::Serializers.add(:serializer4, MySerializer)
|
42
|
+
end.should_not raise_error
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should not allow a serializer that does not have any required method" do
|
46
|
+
class MyOtherSerializer
|
47
|
+
end
|
48
|
+
lambda do
|
49
|
+
Warden::Serializers.add(:serializer5, MyOtherSerializer)
|
50
|
+
end.should raise_error
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should allow me to change a class when providing a block and class" do
|
54
|
+
class MySerializer < Warden::Serializers::Base
|
55
|
+
end
|
56
|
+
|
57
|
+
Warden::Serializers.add(:foo, MySerializer) do
|
58
|
+
def fetch; end
|
59
|
+
def store; end
|
60
|
+
def stored?; end
|
61
|
+
def delete; end
|
62
|
+
end
|
63
|
+
|
64
|
+
Warden::Serializers[:foo].ancestors.should include(MySerializer)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should allow me to update a previously given serializer" do
|
68
|
+
class MySerializer < Warden::Serializers::Base
|
69
|
+
def fetch; end
|
70
|
+
def store; end
|
71
|
+
def stored?; end
|
72
|
+
def delete; end
|
73
|
+
end
|
74
|
+
|
75
|
+
Warden::Serializers.add(:serializer6, MySerializer)
|
76
|
+
|
77
|
+
new_module = Module.new
|
78
|
+
Warden::Serializers.update(:serializer6) do
|
79
|
+
include new_module
|
80
|
+
end
|
81
|
+
|
82
|
+
Warden::Serializers[:serializer6].ancestors.should include(new_module)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should allow me to clear the Serializers" do
|
86
|
+
Warden::Serializers.add(:foobar) do
|
87
|
+
def fetch; end
|
88
|
+
def store; end
|
89
|
+
def stored?; end
|
90
|
+
def delete; end
|
91
|
+
end
|
92
|
+
Warden::Serializers[:foobar].should_not be_nil
|
93
|
+
Warden::Serializers.clear!
|
94
|
+
Warden::Serializers[:foobar].should be_nil
|
95
|
+
end
|
96
|
+
end
|
@@ -17,7 +17,7 @@ describe Warden::Strategies do
|
|
17
17
|
end.should raise_error
|
18
18
|
end
|
19
19
|
|
20
|
-
it "should allow me to get access to a particular
|
20
|
+
it "should allow me to get access to a particular strategy" do
|
21
21
|
Warden::Strategies.add(:strategy3) do
|
22
22
|
def authenticate!; end
|
23
23
|
end
|
@@ -35,7 +35,7 @@ describe Warden::Strategies do
|
|
35
35
|
end.should_not raise_error
|
36
36
|
end
|
37
37
|
|
38
|
-
it "should not allow a strategy that does not have
|
38
|
+
it "should not allow a strategy that does not have an authenticate! method" do
|
39
39
|
class MyOtherStrategy
|
40
40
|
end
|
41
41
|
lambda do
|
@@ -43,28 +43,32 @@ describe Warden::Strategies do
|
|
43
43
|
end.should raise_error
|
44
44
|
end
|
45
45
|
|
46
|
-
it "should allow me to
|
46
|
+
it "should allow me to change a class when providing a block and class" do
|
47
47
|
class MyStrategy < Warden::Strategies::Base
|
48
|
-
def authenticate!
|
49
|
-
self.call
|
50
|
-
end
|
51
|
-
|
52
|
-
def call
|
53
|
-
request.env['warden.spec.strategies'] ||= []
|
54
|
-
request.env['warden.spec.strategies'] << :inherited
|
55
|
-
end
|
56
48
|
end
|
57
49
|
|
58
50
|
Warden::Strategies.add(:foo, MyStrategy) do
|
59
|
-
def authenticate
|
60
|
-
self.call
|
61
|
-
end
|
51
|
+
def authenticate!; end
|
62
52
|
end
|
63
53
|
|
64
54
|
Warden::Strategies[:foo].ancestors.should include(MyStrategy)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should allow me to update a previously given strategy" do
|
58
|
+
class MyStrategy < Warden::Strategies::Base
|
59
|
+
def authenticate!; end
|
60
|
+
end
|
61
|
+
|
62
|
+
Warden::Strategies.add(:strategy6, MyStrategy)
|
65
63
|
|
64
|
+
new_module = Module.new
|
65
|
+
Warden::Strategies.update(:strategy6) do
|
66
|
+
include new_module
|
67
|
+
end
|
68
|
+
|
69
|
+
Warden::Strategies[:strategy6].ancestors.should include(new_module)
|
66
70
|
end
|
67
|
-
|
71
|
+
|
68
72
|
it "should allow me to clear the strategies" do
|
69
73
|
Warden::Strategies.add(:foobar) do
|
70
74
|
def authenticate!
|
data/warden.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{warden}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.6.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Daniel Neighman"]
|
12
|
-
s.date = %q{2009-11-
|
12
|
+
s.date = %q{2009-11-15}
|
13
13
|
s.email = %q{has.sox@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
@@ -22,32 +22,39 @@ Gem::Specification.new do |s|
|
|
22
22
|
"README.textile",
|
23
23
|
"Rakefile",
|
24
24
|
"TODO.textile",
|
25
|
-
"VERSION",
|
26
25
|
"lib/warden.rb",
|
27
|
-
"lib/warden/
|
28
|
-
"lib/warden/authentication/strategies.rb",
|
29
|
-
"lib/warden/authentication/strategy_base.rb",
|
26
|
+
"lib/warden/declarable.rb",
|
30
27
|
"lib/warden/errors.rb",
|
28
|
+
"lib/warden/hooks.rb",
|
31
29
|
"lib/warden/manager.rb",
|
32
30
|
"lib/warden/mixins/common.rb",
|
33
31
|
"lib/warden/proxy.rb",
|
32
|
+
"lib/warden/serializers.rb",
|
33
|
+
"lib/warden/serializers/base.rb",
|
34
|
+
"lib/warden/serializers/cookie.rb",
|
35
|
+
"lib/warden/serializers/session.rb",
|
36
|
+
"lib/warden/strategies.rb",
|
37
|
+
"lib/warden/strategies/base.rb",
|
34
38
|
"lib/warden/version.rb",
|
35
39
|
"script/destroy",
|
36
40
|
"script/generate",
|
37
41
|
"spec/helpers/request_helper.rb",
|
42
|
+
"spec/helpers/strategies/failz.rb",
|
43
|
+
"spec/helpers/strategies/invalid.rb",
|
44
|
+
"spec/helpers/strategies/pass.rb",
|
45
|
+
"spec/helpers/strategies/pass_without_user.rb",
|
46
|
+
"spec/helpers/strategies/password.rb",
|
38
47
|
"spec/spec_helper.rb",
|
39
48
|
"spec/warden/authenticated_data_store_spec.rb",
|
40
49
|
"spec/warden/errors_spec.rb",
|
41
50
|
"spec/warden/hooks_spec.rb",
|
42
51
|
"spec/warden/manager_spec.rb",
|
43
52
|
"spec/warden/proxy_spec.rb",
|
44
|
-
"spec/warden/
|
45
|
-
"spec/warden/
|
46
|
-
"spec/warden/
|
47
|
-
"spec/warden/strategies/
|
48
|
-
"spec/warden/strategies/password.rb",
|
53
|
+
"spec/warden/serializers/cookie_spec.rb",
|
54
|
+
"spec/warden/serializers/session_spec.rb",
|
55
|
+
"spec/warden/serializers_spec.rb",
|
56
|
+
"spec/warden/strategies/base_spec.rb",
|
49
57
|
"spec/warden/strategies_spec.rb",
|
50
|
-
"spec/warden/strategy_base_spec.rb",
|
51
58
|
"spec/warden_spec.rb",
|
52
59
|
"warden.gemspec"
|
53
60
|
]
|
@@ -59,19 +66,22 @@ Gem::Specification.new do |s|
|
|
59
66
|
s.summary = %q{Rack middleware that provides authentication for rack applications}
|
60
67
|
s.test_files = [
|
61
68
|
"spec/helpers/request_helper.rb",
|
69
|
+
"spec/helpers/strategies/failz.rb",
|
70
|
+
"spec/helpers/strategies/invalid.rb",
|
71
|
+
"spec/helpers/strategies/pass.rb",
|
72
|
+
"spec/helpers/strategies/pass_without_user.rb",
|
73
|
+
"spec/helpers/strategies/password.rb",
|
62
74
|
"spec/spec_helper.rb",
|
63
75
|
"spec/warden/authenticated_data_store_spec.rb",
|
64
76
|
"spec/warden/errors_spec.rb",
|
65
77
|
"spec/warden/hooks_spec.rb",
|
66
78
|
"spec/warden/manager_spec.rb",
|
67
79
|
"spec/warden/proxy_spec.rb",
|
68
|
-
"spec/warden/
|
69
|
-
"spec/warden/
|
70
|
-
"spec/warden/
|
71
|
-
"spec/warden/strategies/
|
72
|
-
"spec/warden/strategies/password.rb",
|
80
|
+
"spec/warden/serializers/cookie_spec.rb",
|
81
|
+
"spec/warden/serializers/session_spec.rb",
|
82
|
+
"spec/warden/serializers_spec.rb",
|
83
|
+
"spec/warden/strategies/base_spec.rb",
|
73
84
|
"spec/warden/strategies_spec.rb",
|
74
|
-
"spec/warden/strategy_base_spec.rb",
|
75
85
|
"spec/warden_spec.rb"
|
76
86
|
]
|
77
87
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warden
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Neighman
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-15 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -38,32 +38,39 @@ files:
|
|
38
38
|
- README.textile
|
39
39
|
- Rakefile
|
40
40
|
- TODO.textile
|
41
|
-
- VERSION
|
42
41
|
- lib/warden.rb
|
43
|
-
- lib/warden/
|
44
|
-
- lib/warden/authentication/strategies.rb
|
45
|
-
- lib/warden/authentication/strategy_base.rb
|
42
|
+
- lib/warden/declarable.rb
|
46
43
|
- lib/warden/errors.rb
|
44
|
+
- lib/warden/hooks.rb
|
47
45
|
- lib/warden/manager.rb
|
48
46
|
- lib/warden/mixins/common.rb
|
49
47
|
- lib/warden/proxy.rb
|
48
|
+
- lib/warden/serializers.rb
|
49
|
+
- lib/warden/serializers/base.rb
|
50
|
+
- lib/warden/serializers/cookie.rb
|
51
|
+
- lib/warden/serializers/session.rb
|
52
|
+
- lib/warden/strategies.rb
|
53
|
+
- lib/warden/strategies/base.rb
|
50
54
|
- lib/warden/version.rb
|
51
55
|
- script/destroy
|
52
56
|
- script/generate
|
53
57
|
- spec/helpers/request_helper.rb
|
58
|
+
- spec/helpers/strategies/failz.rb
|
59
|
+
- spec/helpers/strategies/invalid.rb
|
60
|
+
- spec/helpers/strategies/pass.rb
|
61
|
+
- spec/helpers/strategies/pass_without_user.rb
|
62
|
+
- spec/helpers/strategies/password.rb
|
54
63
|
- spec/spec_helper.rb
|
55
64
|
- spec/warden/authenticated_data_store_spec.rb
|
56
65
|
- spec/warden/errors_spec.rb
|
57
66
|
- spec/warden/hooks_spec.rb
|
58
67
|
- spec/warden/manager_spec.rb
|
59
68
|
- spec/warden/proxy_spec.rb
|
60
|
-
- spec/warden/
|
61
|
-
- spec/warden/
|
62
|
-
- spec/warden/
|
63
|
-
- spec/warden/strategies/
|
64
|
-
- spec/warden/strategies/password.rb
|
69
|
+
- spec/warden/serializers/cookie_spec.rb
|
70
|
+
- spec/warden/serializers/session_spec.rb
|
71
|
+
- spec/warden/serializers_spec.rb
|
72
|
+
- spec/warden/strategies/base_spec.rb
|
65
73
|
- spec/warden/strategies_spec.rb
|
66
|
-
- spec/warden/strategy_base_spec.rb
|
67
74
|
- spec/warden_spec.rb
|
68
75
|
- warden.gemspec
|
69
76
|
has_rdoc: true
|
@@ -96,17 +103,20 @@ specification_version: 3
|
|
96
103
|
summary: Rack middleware that provides authentication for rack applications
|
97
104
|
test_files:
|
98
105
|
- spec/helpers/request_helper.rb
|
106
|
+
- spec/helpers/strategies/failz.rb
|
107
|
+
- spec/helpers/strategies/invalid.rb
|
108
|
+
- spec/helpers/strategies/pass.rb
|
109
|
+
- spec/helpers/strategies/pass_without_user.rb
|
110
|
+
- spec/helpers/strategies/password.rb
|
99
111
|
- spec/spec_helper.rb
|
100
112
|
- spec/warden/authenticated_data_store_spec.rb
|
101
113
|
- spec/warden/errors_spec.rb
|
102
114
|
- spec/warden/hooks_spec.rb
|
103
115
|
- spec/warden/manager_spec.rb
|
104
116
|
- spec/warden/proxy_spec.rb
|
105
|
-
- spec/warden/
|
106
|
-
- spec/warden/
|
107
|
-
- spec/warden/
|
108
|
-
- spec/warden/strategies/
|
109
|
-
- spec/warden/strategies/password.rb
|
117
|
+
- spec/warden/serializers/cookie_spec.rb
|
118
|
+
- spec/warden/serializers/session_spec.rb
|
119
|
+
- spec/warden/serializers_spec.rb
|
120
|
+
- spec/warden/strategies/base_spec.rb
|
110
121
|
- spec/warden/strategies_spec.rb
|
111
|
-
- spec/warden/strategy_base_spec.rb
|
112
122
|
- spec/warden_spec.rb
|