warden 1.2.3 → 1.2.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +7 -0
  5. data/{History.rdoc → CHANGELOG.md} +16 -3
  6. data/Gemfile +3 -2
  7. data/Gemfile.lock +40 -0
  8. data/LICENSE +1 -1
  9. data/README.md +18 -0
  10. data/Rakefile +4 -8
  11. data/lib/warden/config.rb +3 -3
  12. data/lib/warden/errors.rb +2 -1
  13. data/lib/warden/hooks.rb +10 -9
  14. data/lib/warden/manager.rb +23 -10
  15. data/lib/warden/mixins/common.rb +2 -1
  16. data/lib/warden/proxy.rb +27 -11
  17. data/lib/warden/session_serializer.rb +1 -0
  18. data/lib/warden/strategies/base.rb +14 -8
  19. data/lib/warden/strategies.rb +1 -0
  20. data/lib/warden/test/helpers.rb +3 -2
  21. data/lib/warden/test/mock.rb +69 -0
  22. data/lib/warden/test/warden_helpers.rb +2 -1
  23. data/lib/warden/version.rb +2 -1
  24. data/lib/warden.rb +2 -0
  25. data/warden.gemspec +21 -18
  26. metadata +33 -50
  27. data/README.textile +0 -9
  28. data/spec/helpers/request_helper.rb +0 -51
  29. data/spec/helpers/strategies/failz.rb +0 -8
  30. data/spec/helpers/strategies/invalid.rb +0 -8
  31. data/spec/helpers/strategies/pass.rb +0 -8
  32. data/spec/helpers/strategies/pass_with_message.rb +0 -8
  33. data/spec/helpers/strategies/password.rb +0 -13
  34. data/spec/helpers/strategies/single.rb +0 -12
  35. data/spec/spec_helper.rb +0 -24
  36. data/spec/warden/authenticated_data_store_spec.rb +0 -114
  37. data/spec/warden/config_spec.rb +0 -48
  38. data/spec/warden/errors_spec.rb +0 -47
  39. data/spec/warden/hooks_spec.rb +0 -373
  40. data/spec/warden/manager_spec.rb +0 -316
  41. data/spec/warden/proxy_spec.rb +0 -1041
  42. data/spec/warden/scoped_session_serializer.rb +0 -123
  43. data/spec/warden/session_serializer_spec.rb +0 -53
  44. data/spec/warden/strategies/base_spec.rb +0 -313
  45. data/spec/warden/strategies_spec.rb +0 -93
  46. data/spec/warden/test/helpers_spec.rb +0 -93
  47. data/spec/warden/test/test_mode_spec.rb +0 -76
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  module Warden
3
- VERSION = "1.2.3".freeze
4
+ VERSION = "1.2.8"
4
5
  end
data/lib/warden.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  require 'forwardable'
3
4
 
4
5
  require 'warden/mixins/common'
@@ -15,6 +16,7 @@ module Warden
15
16
  module Test
16
17
  autoload :WardenHelpers, 'warden/test/warden_helpers'
17
18
  autoload :Helpers, 'warden/test/helpers'
19
+ autoload :Mock, 'warden/test/mock'
18
20
  end
19
21
 
20
22
  # Provides helper methods to warden for testing.
data/warden.gemspec CHANGED
@@ -1,24 +1,27 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ # frozen_string_literal: true
2
3
 
3
- require './lib/warden/version'
4
+ lib = File.expand_path("../lib", __FILE__)
5
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
+ require 'warden/version'
4
7
 
5
- Gem::Specification.new do |s|
6
- s.name = %q{warden}
7
- s.version = Warden::VERSION.dup
8
- s.authors = ["Daniel Neighman"]
9
- s.email = %q{has.sox@gmail.com}
10
- s.license = "MIT"
11
- s.extra_rdoc_files = [
8
+ Gem::Specification.new do |spec|
9
+ spec.name = "warden"
10
+ spec.version = Warden::VERSION.dup
11
+ spec.authors = ["Daniel Neighman", "Justin Smestad", "Whitney Smestad", "José Valim"]
12
+ spec.email = %q{hasox.sox@gmail.com justin.smestad@gmail.com whitcolorado@gmail.com}
13
+ spec.homepage = "https://github.com/hassox/warden"
14
+ spec.summary = "An authentication library compatible with all Rack-based frameworks"
15
+ spec.license = "MIT"
16
+ spec.extra_rdoc_files = [
12
17
  "LICENSE",
13
- "README.textile"
18
+ "README.md"
14
19
  ]
15
- s.files = Dir["**/*"] - Dir["*.gem"] - ["Gemfile.lock"]
16
- s.homepage = %q{http://github.com/hassox/warden}
17
- s.rdoc_options = ["--charset=UTF-8"]
18
- s.require_paths = ["lib"]
19
- s.rubyforge_project = %q{warden}
20
- s.rubygems_version = %q{1.3.7}
21
- s.summary = %q{Rack middleware that provides authentication for rack applications}
22
- s.add_dependency "rack", ">= 1.0"
20
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
21
+ f.match(%r{^(test|spec|features)/})
22
+ end
23
+ spec.rdoc_options = ["--charset=UTF-8"]
24
+ spec.require_paths = ["lib"]
25
+ spec.rubyforge_project = %q{warden}
26
+ spec.add_dependency "rack", ">= 2.0.6"
23
27
  end
24
-
metadata CHANGED
@@ -1,42 +1,50 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warden
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.2.3
4
+ version: 1.2.8
6
5
  platform: ruby
7
6
  authors:
8
7
  - Daniel Neighman
8
+ - Justin Smestad
9
+ - Whitney Smestad
10
+ - José Valim
9
11
  autorequire:
10
12
  bindir: bin
11
13
  cert_chain: []
12
- date: 2013-07-14 00:00:00.000000000 Z
14
+ date: 2018-11-15 00:00:00.000000000 Z
13
15
  dependencies:
14
16
  - !ruby/object:Gem::Dependency
15
- version_requirements: !ruby/object:Gem::Requirement
17
+ name: rack
18
+ requirement: !ruby/object:Gem::Requirement
16
19
  requirements:
17
- - - ! '>='
20
+ - - ">="
18
21
  - !ruby/object:Gem::Version
19
- version: '1.0'
20
- none: false
21
- name: rack
22
+ version: 2.0.6
22
23
  type: :runtime
23
24
  prerelease: false
24
- requirement: !ruby/object:Gem::Requirement
25
+ version_requirements: !ruby/object:Gem::Requirement
25
26
  requirements:
26
- - - ! '>='
27
+ - - ">="
27
28
  - !ruby/object:Gem::Version
28
- version: '1.0'
29
- none: false
29
+ version: 2.0.6
30
30
  description:
31
- email: has.sox@gmail.com
31
+ email: hasox.sox@gmail.com justin.smestad@gmail.com whitcolorado@gmail.com
32
32
  executables: []
33
33
  extensions: []
34
34
  extra_rdoc_files:
35
35
  - LICENSE
36
- - README.textile
36
+ - README.md
37
37
  files:
38
+ - ".gitignore"
39
+ - ".rspec"
40
+ - ".travis.yml"
41
+ - CHANGELOG.md
38
42
  - Gemfile
39
- - History.rdoc
43
+ - Gemfile.lock
44
+ - LICENSE
45
+ - README.md
46
+ - Rakefile
47
+ - lib/warden.rb
40
48
  - lib/warden/config.rb
41
49
  - lib/warden/errors.rb
42
50
  - lib/warden/hooks.rb
@@ -44,61 +52,36 @@ files:
44
52
  - lib/warden/mixins/common.rb
45
53
  - lib/warden/proxy.rb
46
54
  - lib/warden/session_serializer.rb
47
- - lib/warden/strategies/base.rb
48
55
  - lib/warden/strategies.rb
56
+ - lib/warden/strategies/base.rb
49
57
  - lib/warden/test/helpers.rb
58
+ - lib/warden/test/mock.rb
50
59
  - lib/warden/test/warden_helpers.rb
51
60
  - lib/warden/version.rb
52
- - lib/warden.rb
53
- - LICENSE
54
- - Rakefile
55
- - README.textile
56
- - spec/helpers/request_helper.rb
57
- - spec/helpers/strategies/failz.rb
58
- - spec/helpers/strategies/invalid.rb
59
- - spec/helpers/strategies/pass.rb
60
- - spec/helpers/strategies/pass_with_message.rb
61
- - spec/helpers/strategies/password.rb
62
- - spec/helpers/strategies/single.rb
63
- - spec/spec_helper.rb
64
- - spec/warden/authenticated_data_store_spec.rb
65
- - spec/warden/config_spec.rb
66
- - spec/warden/errors_spec.rb
67
- - spec/warden/hooks_spec.rb
68
- - spec/warden/manager_spec.rb
69
- - spec/warden/proxy_spec.rb
70
- - spec/warden/scoped_session_serializer.rb
71
- - spec/warden/session_serializer_spec.rb
72
- - spec/warden/strategies/base_spec.rb
73
- - spec/warden/strategies_spec.rb
74
- - spec/warden/test/helpers_spec.rb
75
- - spec/warden/test/test_mode_spec.rb
76
61
  - warden.gemspec
77
- homepage: http://github.com/hassox/warden
62
+ homepage: https://github.com/hassox/warden
78
63
  licenses:
79
64
  - MIT
65
+ metadata: {}
80
66
  post_install_message:
81
67
  rdoc_options:
82
- - --charset=UTF-8
68
+ - "--charset=UTF-8"
83
69
  require_paths:
84
70
  - lib
85
71
  required_ruby_version: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - ! '>='
73
+ - - ">="
88
74
  - !ruby/object:Gem::Version
89
75
  version: '0'
90
- none: false
91
76
  required_rubygems_version: !ruby/object:Gem::Requirement
92
77
  requirements:
93
- - - ! '>='
78
+ - - ">="
94
79
  - !ruby/object:Gem::Version
95
80
  version: '0'
96
- none: false
97
81
  requirements: []
98
82
  rubyforge_project: warden
99
- rubygems_version: 1.8.23
83
+ rubygems_version: 2.7.6
100
84
  signing_key:
101
- specification_version: 3
102
- summary: Rack middleware that provides authentication for rack applications
85
+ specification_version: 4
86
+ summary: An authentication library compatible with all Rack-based frameworks
103
87
  test_files: []
104
- has_rdoc:
data/README.textile DELETED
@@ -1,9 +0,0 @@
1
- Please see the "Warden Wiki":http://wiki.github.com/hassox/warden for overview documentation.
2
-
3
- h2. Maintainers
4
-
5
- * Daniel Neighman (hassox)
6
- * José Valim (josevalim)
7
- * Justin Smestad (jsmestad)
8
-
9
- "A list of all contributors is available on Github.":https://github.com/hassox/warden/contributors
@@ -1,51 +0,0 @@
1
- # encoding: utf-8
2
- module Warden::Spec
3
- module Helpers
4
- FAILURE_APP = lambda{|e|[401, {"Content-Type" => "text/plain"}, ["You Fail!"]] }
5
-
6
- def env_with_params(path = "/", params = {}, env = {})
7
- method = params.delete(:method) || "GET"
8
- env = { 'HTTP_VERSION' => '1.1', 'REQUEST_METHOD' => "#{method}" }.merge(env)
9
- Rack::MockRequest.env_for("#{path}?#{Rack::Utils.build_query(params)}", env)
10
- end
11
-
12
- def setup_rack(app = nil, opts = {}, &block)
13
- app ||= block if block_given?
14
-
15
- opts[:failure_app] ||= failure_app
16
- opts[:default_strategies] ||= [:password]
17
- opts[:default_serializers] ||= [:session]
18
- blk = opts[:configurator] || proc{}
19
-
20
- Rack::Builder.new do
21
- use opts[:session] || Warden::Spec::Helpers::Session unless opts[:nil_session]
22
- use Warden::Manager, opts, &blk
23
- run app
24
- end
25
- end
26
-
27
- def valid_response
28
- Rack::Response.new("OK").finish
29
- end
30
-
31
- def failure_app
32
- Warden::Spec::Helpers::FAILURE_APP
33
- end
34
-
35
- def success_app
36
- lambda{|e| [200, {"Content-Type" => "text/plain"}, ["You Win"]]}
37
- end
38
-
39
- class Session
40
- attr_accessor :app
41
- def initialize(app,configs = {})
42
- @app = app
43
- end
44
-
45
- def call(e)
46
- e['rack.session'] ||= {}
47
- @app.call(e)
48
- end
49
- end # session
50
- end
51
- end
@@ -1,8 +0,0 @@
1
- # encoding: utf-8
2
- Warden::Strategies.add(:failz) do
3
- def authenticate!
4
- request.env['warden.spec.strategies'] ||= []
5
- request.env['warden.spec.strategies'] << :failz
6
- fail!("The Fails Strategy Has Failed You")
7
- end
8
- end
@@ -1,8 +0,0 @@
1
- # encoding: utf-8
2
- Warden::Strategies.add(:invalid) do
3
- def valid?
4
- false
5
- end
6
-
7
- def authenticate!; end
8
- end
@@ -1,8 +0,0 @@
1
- # encoding: utf-8
2
- Warden::Strategies.add(:pass) do
3
- def authenticate!
4
- request.env['warden.spec.strategies'] ||= []
5
- request.env['warden.spec.strategies'] << :pass
6
- success!("Valid User") unless scope == :failz
7
- end
8
- end
@@ -1,8 +0,0 @@
1
- # encoding: utf-8
2
- Warden::Strategies.add(:pass_with_message) do
3
- def authenticate!
4
- request.env['warden.spec.strategies'] ||= []
5
- request.env['warden.spec.strategies'] << :pass_with_message
6
- success!("Valid User", "The Success Strategy Has Accepted You") unless scope == :failz
7
- end
8
- end
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
- Warden::Strategies.add(:password) do
3
- def authenticate!
4
- request.env['warden.spec.strategies'] ||= []
5
- request.env['warden.spec.strategies'] << :password
6
- if params["password"] || params["username"]
7
- params["password"] == "sekrit" && params["username"] == "fred" ?
8
- success!("Authenticated User") : fail!("Username or password is incorrect")
9
- else
10
- pass
11
- end
12
- end
13
- end
@@ -1,12 +0,0 @@
1
- # encoding: utf-8
2
- Warden::Strategies.add(:single) do
3
- def authenticate!
4
- request.env['warden.spec.strategies'] ||= []
5
- request.env['warden.spec.strategies'] << :single
6
- success!("Valid User")
7
- end
8
-
9
- def store?
10
- false
11
- end
12
- end
data/spec/spec_helper.rb DELETED
@@ -1,24 +0,0 @@
1
- # encoding: utf-8
2
- $TESTING=true
3
-
4
- $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
5
- $:.unshift File.expand_path(File.join(File.dirname(__FILE__)))
6
- require 'warden'
7
-
8
- require 'rubygems'
9
- require 'rack'
10
-
11
- Dir[File.join(File.dirname(__FILE__), "helpers", "**/*.rb")].each do |f|
12
- require f
13
- end
14
-
15
- RSpec.configure do |config|
16
- config.include(Warden::Spec::Helpers)
17
- config.include(Warden::Test::Helpers)
18
-
19
- def load_strategies
20
- Dir[File.join(File.dirname(__FILE__), "helpers", "strategies", "**/*.rb")].each do |f|
21
- load f
22
- end
23
- end
24
- end
@@ -1,114 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe "authenticated data store" do
5
-
6
- before(:each) do
7
- @env = env_with_params
8
- @env['rack.session'] = {
9
- "warden.user.foo.key" => "foo user",
10
- "warden.user.default.key" => "default user",
11
- :foo => "bar"
12
- }
13
- end
14
-
15
- it "should store data for the default scope" do
16
- app = lambda do |e|
17
- e['warden'].authenticate(:pass)
18
- e['warden'].authenticate(:pass, :scope => :foo)
19
- e['warden'].should be_authenticated
20
- e['warden'].should be_authenticated(:foo)
21
-
22
- # Store the data for :default
23
- e['warden'].session[:key] = "value"
24
- valid_response
25
- end
26
- setup_rack(app).call(@env)
27
- @env['rack.session']['warden.user.default.session'].should == {:key => "value"}
28
- @env['rack.session']['warden.user.foo.session'].should be_nil
29
- end
30
-
31
- it "should store data for the foo user" do
32
- app = lambda do |e|
33
- e['warden'].session(:foo)[:key] = "value"
34
- valid_response
35
- end
36
- setup_rack(app).call(@env)
37
- @env['rack.session']['warden.user.foo.session'].should == {:key => "value"}
38
- end
39
-
40
- it "should store the data seperately" do
41
- app = lambda do |e|
42
- e['warden'].session[:key] = "value"
43
- e['warden'].session(:foo)[:key] = "another value"
44
- valid_response
45
- end
46
- setup_rack(app).call(@env)
47
- @env['rack.session']['warden.user.default.session'].should == {:key => "value"}
48
- @env['rack.session']['warden.user.foo.session' ].should == {:key => "another value"}
49
- end
50
-
51
- it "should clear the foo scoped data when foo logs out" do
52
- app = lambda do |e|
53
- e['warden'].session[:key] = "value"
54
- e['warden'].session(:foo)[:key] = "another value"
55
- e['warden'].logout(:foo)
56
- valid_response
57
- end
58
- setup_rack(app).call(@env)
59
- @env['rack.session']['warden.user.default.session'].should == {:key => "value"}
60
- @env['rack.session']['warden.user.foo.session' ].should be_nil
61
- end
62
-
63
- it "should clear out the default data when :default logs out" do
64
- app = lambda do |e|
65
- e['warden'].session[:key] = "value"
66
- e['warden'].session(:foo)[:key] = "another value"
67
- e['warden'].logout(:default)
68
- valid_response
69
- end
70
- setup_rack(app).call(@env)
71
- @env['rack.session']['warden.user.default.session'].should be_nil
72
- @env['rack.session']['warden.user.foo.session' ].should == {:key => "another value"}
73
- end
74
-
75
- it "should clear out all data when a general logout is performed" do
76
- app = lambda do |e|
77
- e['warden'].session[:key] = "value"
78
- e['warden'].session(:foo)[:key] = "another value"
79
- e['warden'].logout
80
- valid_response
81
- end
82
- setup_rack(app).call(@env)
83
- @env['rack.session']['warden.user.default.session'].should be_nil
84
- @env['rack.session']['warden.user.foo.session' ].should be_nil
85
- end
86
-
87
- it "should logout multuiple personas at once" do
88
- @env['rack.session']['warden.user.bar.key'] = "bar user"
89
-
90
- app = lambda do |e|
91
- e['warden'].session[:key] = "value"
92
- e['warden'].session(:foo)[:key] = "another value"
93
- e['warden'].session(:bar)[:key] = "yet another"
94
- e['warden'].logout(:bar, :default)
95
- valid_response
96
- end
97
- setup_rack(app).call(@env)
98
- @env['rack.session']['warden.user.default.session'].should be_nil
99
- @env['rack.session']['warden.user.foo.session' ].should == {:key => "another value"}
100
- @env['rack.session']['warden.user.bar.session' ].should be_nil
101
- end
102
-
103
- it "should not store data for a user who is not logged in" do
104
- @env['rack.session']
105
- app = lambda do |e|
106
- e['warden'].session(:not_here)[:key] = "value"
107
- valid_response
108
- end
109
-
110
- lambda do
111
- setup_rack(app).call(@env)
112
- end.should raise_error(Warden::NotAuthenticated)
113
- end
114
- end
@@ -1,48 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe Warden::Config do
5
-
6
- before(:each) do
7
- @config = Warden::Config.new
8
- end
9
-
10
- it "should behave like a hash" do
11
- @config[:foo] = :bar
12
- @config[:foo].should == :bar
13
- end
14
-
15
- it "should provide hash accessors" do
16
- @config.failure_app = :foo
17
- @config[:failure_app].should == :foo
18
- @config[:failure_app] = :bar
19
- @config.failure_app.should == :bar
20
- end
21
-
22
- it "should allow to read and set default strategies" do
23
- @config.default_strategies :foo, :bar
24
- @config.default_strategies.should == [:foo, :bar]
25
- end
26
-
27
- it "should allow to silence missing strategies" do
28
- @config.silence_missing_strategies!
29
- @config.silence_missing_strategies?.should be_true
30
- end
31
-
32
- it "should set the default_scope" do
33
- @config.default_scope.should == :default
34
- @config.default_scope = :foo
35
- @config.default_scope.should == :foo
36
- end
37
-
38
- it "should merge given options on initialization" do
39
- Warden::Config.new(:foo => :bar)[:foo].should == :bar
40
- end
41
-
42
- it "should setup defaults with the scope_defaults method" do
43
- c = Warden::Config.new
44
- c.scope_defaults :foo, :strategies => [:foo, :bar], :store => false
45
- c.default_strategies(:scope => :foo).should == [:foo, :bar]
46
- c.scope_defaults(:foo).should == {:store => false}
47
- end
48
- end
@@ -1,47 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe Warden::Proxy::Errors do
5
-
6
- before(:each) do
7
- @errors = Warden::Proxy::Errors.new
8
- end
9
-
10
- it "should report that it is empty on first creation" do
11
- @errors.empty?.should == true
12
- end
13
-
14
- it "should continue to report that it is empty even after being checked" do
15
- @errors.on(:foo)
16
- @errors.empty?.should == true
17
- end
18
-
19
- it "should add an error" do
20
- @errors.add(:login, "Login or password incorrect")
21
- @errors[:login].should == ["Login or password incorrect"]
22
- end
23
-
24
- it "should allow many errors to be added to the same field" do
25
- @errors.add(:login, "bad 1")
26
- @errors.add(:login, "bad 2")
27
- @errors.on(:login).should == ["bad 1", "bad 2"]
28
- end
29
-
30
- it "should give the full messages for an error" do
31
- @errors.add(:login, "login wrong")
32
- @errors.add(:password, "password wrong")
33
- ["password wrong", "login wrong"].each do |msg|
34
- @errors.full_messages.should include(msg)
35
- end
36
- end
37
-
38
- it "should return the error for a specific field / label" do
39
- @errors.add(:login, "wrong")
40
- @errors.on(:login).should == ["wrong"]
41
- end
42
-
43
- it "should return nil for a specific field if it's not been set" do
44
- @errors.on(:not_there).should be_nil
45
- end
46
-
47
- end