warden 1.2.4 → 1.2.9

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 +5 -5
  2. data/.github/workflows/ruby.yml +27 -0
  3. data/.gitignore +6 -0
  4. data/.rspec +3 -0
  5. data/{History.rdoc → CHANGELOG.md} +80 -36
  6. data/Gemfile +3 -2
  7. data/LICENSE +2 -1
  8. data/README.md +18 -0
  9. data/Rakefile +4 -8
  10. data/lib/warden.rb +2 -0
  11. data/lib/warden/config.rb +1 -0
  12. data/lib/warden/errors.rb +2 -1
  13. data/lib/warden/hooks.rb +1 -0
  14. data/lib/warden/manager.rb +2 -1
  15. data/lib/warden/mixins/common.rb +1 -0
  16. data/lib/warden/proxy.rb +24 -4
  17. data/lib/warden/session_serializer.rb +1 -0
  18. data/lib/warden/strategies.rb +1 -0
  19. data/lib/warden/strategies/base.rb +3 -1
  20. data/lib/warden/test/helpers.rb +2 -1
  21. data/lib/warden/test/mock.rb +69 -0
  22. data/lib/warden/test/warden_helpers.rb +1 -0
  23. data/lib/warden/version.rb +2 -1
  24. data/warden.gemspec +19 -18
  25. metadata +19 -35
  26. data/README.textile +0 -9
  27. data/spec/helpers/request_helper.rb +0 -51
  28. data/spec/helpers/strategies/fail_with_user.rb +0 -10
  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 -340
  41. data/spec/warden/proxy_spec.rb +0 -1050
  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 -94
  46. data/spec/warden/test/helpers_spec.rb +0 -93
  47. data/spec/warden/test/test_mode_spec.rb +0 -75
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  module Warden
3
4
  class SessionSerializer
4
5
  attr_reader :env
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  module Warden
3
4
  module Strategies
4
5
  class << self
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  module Warden
3
4
  module Strategies
4
5
  # A strategy is a place where you can put logic related to authentication. Any strategy inherits
@@ -44,6 +45,7 @@ module Warden
44
45
  @env, @scope = env, scope
45
46
  @status, @headers = nil, {}
46
47
  @halted, @performed = false, false
48
+ @result = nil
47
49
  end
48
50
 
49
51
  # The method that is called from above. This method calls the underlying authenticate! method
@@ -157,7 +159,7 @@ module Warden
157
159
  def redirect!(url, params = {}, opts = {})
158
160
  halt!
159
161
  @status = opts[:permanent] ? 301 : 302
160
- headers["Location"] = url
162
+ headers["Location"] = url.dup
161
163
  headers["Location"] << "?" << Rack::Utils.build_query(params) unless params.empty?
162
164
  headers["Content-Type"] = opts[:content_type] || 'text/plain'
163
165
 
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Warden
4
5
  module Test
@@ -6,7 +7,7 @@ module Warden
6
7
  # These provide the ability to login and logout on any given request
7
8
  # Note: During the teardown phase of your specs you should include: Warden.test_reset!
8
9
  module Helpers
9
- def self.included(base)
10
+ def self.included(_base)
10
11
  ::Warden.test_mode!
11
12
  end
12
13
 
@@ -0,0 +1,69 @@
1
+ # encoding: utf-8
2
+ # frozen_string_literal: true
3
+
4
+ require 'rack'
5
+
6
+ module Warden
7
+ module Test
8
+ # A mock of an application to get a Warden object to test on
9
+ # Note: During the teardown phase of your specs you should include: Warden.test_reset!
10
+ module Mock
11
+ def self.included(_base)
12
+ ::Warden.test_mode!
13
+ end
14
+
15
+ # A helper method that provides the warden object by mocking the env variable.
16
+ # @api public
17
+ def warden
18
+ @warden ||= begin
19
+ env['warden']
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def env
26
+ @env ||= begin
27
+ request = Rack::MockRequest.env_for(
28
+ "/?#{Rack::Utils.build_query({})}",
29
+ { 'HTTP_VERSION' => '1.1', 'REQUEST_METHOD' => 'GET' }
30
+ )
31
+ app.call(request)
32
+
33
+ request
34
+ end
35
+ end
36
+
37
+ def app
38
+ @app ||= begin
39
+ opts = {
40
+ failure_app: lambda { |_e|
41
+ [401, { 'Content-Type' => 'text/plain' }, ['You Fail!']]
42
+ },
43
+ default_strategies: :password,
44
+ default_serializers: :session
45
+ }
46
+ Rack::Builder.new do
47
+ use Warden::Test::Mock::Session
48
+ use Warden::Manager, opts, &proc {}
49
+ run lambda { |_e|
50
+ [200, { 'Content-Type' => 'text/plain' }, ['You Win']]
51
+ }
52
+ end
53
+ end
54
+ end
55
+
56
+ class Session
57
+ attr_accessor :app
58
+ def initialize(app, _configs={})
59
+ @app = app
60
+ end
61
+
62
+ def call(e)
63
+ e['rack.session'] ||= {}
64
+ @app.call(e)
65
+ end
66
+ end # session
67
+ end
68
+ end
69
+ end
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Warden
4
5
 
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  module Warden
3
- VERSION = "1.2.4".freeze
4
+ VERSION = "1.2.9"
4
5
  end
@@ -1,24 +1,25 @@
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
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.require_paths = ["lib"]
24
+ spec.add_dependency "rack", ">= 2.0.9"
23
25
  end
24
-
metadata CHANGED
@@ -1,14 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warden
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Neighman
8
+ - Justin Smestad
9
+ - Whitney Smestad
10
+ - José Valim
8
11
  autorequire:
9
12
  bindir: bin
10
13
  cert_chain: []
11
- date: 2015-12-09 00:00:00.000000000 Z
14
+ date: 2020-08-31 00:00:00.000000000 Z
12
15
  dependencies:
13
16
  - !ruby/object:Gem::Dependency
14
17
  name: rack
@@ -16,26 +19,29 @@ dependencies:
16
19
  requirements:
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
- version: '1.0'
22
+ version: 2.0.9
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: '1.0'
29
+ version: 2.0.9
27
30
  description:
28
- email: has.sox@gmail.com
31
+ email: hasox.sox@gmail.com justin.smestad@gmail.com whitcolorado@gmail.com
29
32
  executables: []
30
33
  extensions: []
31
34
  extra_rdoc_files:
32
35
  - LICENSE
33
- - README.textile
36
+ - README.md
34
37
  files:
38
+ - ".github/workflows/ruby.yml"
39
+ - ".gitignore"
40
+ - ".rspec"
41
+ - CHANGELOG.md
35
42
  - Gemfile
36
- - History.rdoc
37
43
  - LICENSE
38
- - README.textile
44
+ - README.md
39
45
  - Rakefile
40
46
  - lib/warden.rb
41
47
  - lib/warden/config.rb
@@ -48,37 +54,16 @@ files:
48
54
  - lib/warden/strategies.rb
49
55
  - lib/warden/strategies/base.rb
50
56
  - lib/warden/test/helpers.rb
57
+ - lib/warden/test/mock.rb
51
58
  - lib/warden/test/warden_helpers.rb
52
59
  - lib/warden/version.rb
53
- - spec/helpers/request_helper.rb
54
- - spec/helpers/strategies/fail_with_user.rb
55
- - spec/helpers/strategies/failz.rb
56
- - spec/helpers/strategies/invalid.rb
57
- - spec/helpers/strategies/pass.rb
58
- - spec/helpers/strategies/pass_with_message.rb
59
- - spec/helpers/strategies/password.rb
60
- - spec/helpers/strategies/single.rb
61
- - spec/spec_helper.rb
62
- - spec/warden/authenticated_data_store_spec.rb
63
- - spec/warden/config_spec.rb
64
- - spec/warden/errors_spec.rb
65
- - spec/warden/hooks_spec.rb
66
- - spec/warden/manager_spec.rb
67
- - spec/warden/proxy_spec.rb
68
- - spec/warden/scoped_session_serializer.rb
69
- - spec/warden/session_serializer_spec.rb
70
- - spec/warden/strategies/base_spec.rb
71
- - spec/warden/strategies_spec.rb
72
- - spec/warden/test/helpers_spec.rb
73
- - spec/warden/test/test_mode_spec.rb
74
60
  - warden.gemspec
75
- homepage: http://github.com/hassox/warden
61
+ homepage: https://github.com/hassox/warden
76
62
  licenses:
77
63
  - MIT
78
64
  metadata: {}
79
65
  post_install_message:
80
- rdoc_options:
81
- - "--charset=UTF-8"
66
+ rdoc_options: []
82
67
  require_paths:
83
68
  - lib
84
69
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -92,9 +77,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
77
  - !ruby/object:Gem::Version
93
78
  version: '0'
94
79
  requirements: []
95
- rubyforge_project: warden
96
- rubygems_version: 2.4.5.1
80
+ rubygems_version: 3.1.2
97
81
  signing_key:
98
82
  specification_version: 4
99
- summary: Rack middleware that provides authentication for rack applications
83
+ summary: An authentication library compatible with all Rack-based frameworks
100
84
  test_files: []
@@ -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,10 +0,0 @@
1
- # encoding: utf-8
2
- Warden::Strategies.add(:fail_with_user) do
3
- def authenticate!
4
- request.env['warden.spec.strategies'] ||= []
5
- request.env['warden.spec.strategies'] << :fail_with_user
6
- self.user = 'Valid User'
7
- fail!
8
- end
9
- end
10
-
@@ -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
@@ -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