warden 1.2.3 → 1.2.8

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.
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