warden 0.10.3 → 0.10.4
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/.gitignore +3 -1
- data/lib/warden/config.rb +1 -1
- data/lib/warden/manager.rb +4 -2
- data/lib/warden/manager_deprecation.rb +36 -0
- data/lib/warden/proxy.rb +3 -2
- data/lib/warden/proxy_deprecation.rb +11 -0
- data/lib/warden/test/helpers.rb +1 -0
- data/lib/warden/version.rb +1 -1
- data/spec/warden/proxy_spec.rb +33 -13
- data/warden.gemspec +4 -2
- metadata +5 -3
    
        data/.gitignore
    CHANGED
    
    
    
        data/lib/warden/config.rb
    CHANGED
    
    
    
        data/lib/warden/manager.rb
    CHANGED
    
    | @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 2 | 
             
            require 'warden/hooks'
         | 
| 3 3 | 
             
            require 'warden/config'
         | 
| 4 | 
            +
            require 'warden/manager_deprecation'
         | 
| 4 5 |  | 
| 5 6 | 
             
            module Warden
         | 
| 6 7 | 
             
              # The middleware for Rack Authentication
         | 
| @@ -9,6 +10,7 @@ module Warden | |
| 9 10 | 
             
              # the rack environment hash
         | 
| 10 11 | 
             
              class Manager
         | 
| 11 12 | 
             
                extend Warden::Hooks
         | 
| 13 | 
            +
                extend Warden::ManagerDeprecation
         | 
| 12 14 |  | 
| 13 15 | 
             
                attr_accessor :config
         | 
| 14 16 |  | 
| @@ -28,7 +30,7 @@ module Warden | |
| 28 30 | 
             
                # If this is downstream from another warden instance, don't do anything.
         | 
| 29 31 | 
             
                # :api: private
         | 
| 30 32 | 
             
                def call(env) # :nodoc:
         | 
| 31 | 
            -
                  return @app.call(env)  | 
| 33 | 
            +
                  return @app.call(env) unless env['warden'].nil? || env['warden'].manager == self
         | 
| 32 34 |  | 
| 33 35 | 
             
                  env['warden'] = Proxy.new(env, self)
         | 
| 34 36 | 
             
                  result = catch(:warden) do
         | 
| @@ -85,7 +87,7 @@ module Warden | |
| 85 87 | 
             
                # It looks at the result of the proxy to see if it's been executed and what action to take.
         | 
| 86 88 | 
             
                # :api: private
         | 
| 87 89 | 
             
                def process_unauthenticated(env, options={})
         | 
| 88 | 
            -
                  options[:action] ||=  | 
| 90 | 
            +
                  options[:action] ||= "unauthenticated"
         | 
| 89 91 |  | 
| 90 92 | 
             
                  proxy  = env['warden']
         | 
| 91 93 | 
             
                  result = options[:result] || proxy.result
         | 
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            module Warden
         | 
| 3 | 
            +
              module ManagerDeprecation
         | 
| 4 | 
            +
                class Dummy
         | 
| 5 | 
            +
                  def update(type, &block)
         | 
| 6 | 
            +
                    if type == :session
         | 
| 7 | 
            +
                      warn "[DEPRECATION] warden.serializers.update(:session) is deprecated. " <<
         | 
| 8 | 
            +
                           "Please use Warden::Manager.serialize_from_session and Warden::Manager.serialize_into_session"
         | 
| 9 | 
            +
                      Warden::SessionSerializer.class_eval(&block)
         | 
| 10 | 
            +
                    else
         | 
| 11 | 
            +
                      method_missing(update)
         | 
| 12 | 
            +
                    end
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  def method_missing(method, *args)
         | 
| 16 | 
            +
                    warn "[DEPRECATION] warden.serializers.#{method} is deprecated."
         | 
| 17 | 
            +
                    nil
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                # Read the default scope from Warden
         | 
| 22 | 
            +
                def default_scope
         | 
| 23 | 
            +
                  warn "[DEPRECATION] Warden::Manager.default_scope is deprecated. It's now accessible in the Warden::Manager instance."
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                # Set the default scope for Warden.
         | 
| 27 | 
            +
                def default_scope=(scope)
         | 
| 28 | 
            +
                  warn "[DEPRECATION] Warden::Manager.default_scope= is deprecated. Please set it in the Warden::Manager instance."
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                def serializers
         | 
| 32 | 
            +
                  warn "[DEPRECATION] warden.serializers is deprecated since Warden::Serializers were merged into Warden::Strategies."
         | 
| 33 | 
            +
                  Dummy.new
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
            end
         | 
    
        data/lib/warden/proxy.rb
    CHANGED
    
    | @@ -1,9 +1,11 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 | 
            +
            require 'warden/proxy_deprecation'
         | 
| 2 3 |  | 
| 3 4 | 
             
            module Warden
         | 
| 4 5 | 
             
              class UserNotSet < RuntimeError; end
         | 
| 5 6 |  | 
| 6 7 | 
             
              class Proxy
         | 
| 8 | 
            +
                include ProxyDeprecation
         | 
| 7 9 | 
             
                # An accessor to the winning strategy
         | 
| 8 10 | 
             
                # :api: private
         | 
| 9 11 | 
             
                attr_accessor :winning_strategy
         | 
| @@ -267,14 +269,13 @@ module Warden | |
| 267 269 | 
             
                def _retrieve_scope_and_opts(args) #:nodoc:
         | 
| 268 270 | 
             
                  opts  = args.last.is_a?(Hash) ? args.pop : {}
         | 
| 269 271 | 
             
                  scope = opts[:scope] || @config.default_scope
         | 
| 272 | 
            +
                  opts  = (config[:scope_defaults][scope] || {}).merge(opts)
         | 
| 270 273 | 
             
                  [scope, opts]
         | 
| 271 274 | 
             
                end
         | 
| 272 275 |  | 
| 273 276 | 
             
                # Run the strategies for a given scope
         | 
| 274 277 | 
             
                def _run_strategies_for(scope, args) #:nodoc:
         | 
| 275 278 | 
             
                  self.winning_strategy = @winning_strategies[scope]
         | 
| 276 | 
            -
                  return if winning_strategy && winning_strategy.halted?
         | 
| 277 | 
            -
             | 
| 278 279 | 
             
                  strategies = args.empty? ? default_strategies(:scope => scope) : args
         | 
| 279 280 |  | 
| 280 281 | 
             
                  strategies.each do |name|
         | 
| @@ -0,0 +1,11 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            module Warden
         | 
| 3 | 
            +
              # Sets up a place for deprecation of methods from the main proxy
         | 
| 4 | 
            +
              module ProxyDeprecation
         | 
| 5 | 
            +
                def default_strategies=(*strategies)
         | 
| 6 | 
            +
                  warn "[DEPRECATION] warden.default_strategies= is deprecated. Instead use warden.default_strategies(*strategies) with an optional :scope => :scope)"
         | 
| 7 | 
            +
                  strategies.push(:scope => @config.default_scope)
         | 
| 8 | 
            +
                  default_strategies(*strategies)
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
            end
         | 
    
        data/lib/warden/test/helpers.rb
    CHANGED
    
    
    
        data/lib/warden/version.rb
    CHANGED
    
    
    
        data/spec/warden/proxy_spec.rb
    CHANGED
    
    | @@ -220,6 +220,18 @@ describe Warden::Proxy do | |
| 220 220 | 
             
                  setup_rack(app).call(env)
         | 
| 221 221 | 
             
                end
         | 
| 222 222 |  | 
| 223 | 
            +
                it "should store the last winning strategy per scope" do
         | 
| 224 | 
            +
                  env = env_with_params("/")
         | 
| 225 | 
            +
                  app = lambda do |env|
         | 
| 226 | 
            +
                    env['warden'].authenticate(:failz)
         | 
| 227 | 
            +
                    env['warden'].should_not be_authenticated
         | 
| 228 | 
            +
                    env['warden'].authenticate(:failz)
         | 
| 229 | 
            +
                    env['warden'].winning_strategy.message.should == "The Fails Strategy Has Failed You"
         | 
| 230 | 
            +
                    valid_response
         | 
| 231 | 
            +
                  end
         | 
| 232 | 
            +
                  setup_rack(app).call(env)
         | 
| 233 | 
            +
                end
         | 
| 234 | 
            +
             | 
| 223 235 | 
             
                it "should run strategies for a given scope several times if cache is cleaned" do
         | 
| 224 236 | 
             
                  env = env_with_params("/")
         | 
| 225 237 | 
             
                  app = lambda do |env|
         | 
| @@ -256,19 +268,6 @@ describe Warden::Proxy do | |
| 256 268 | 
             
                  end
         | 
| 257 269 | 
             
                  setup_rack(app).call(env)
         | 
| 258 270 | 
             
                end
         | 
| 259 | 
            -
             | 
| 260 | 
            -
                it "should not run strategies until cache is cleaned if latest winning strategy halted" do
         | 
| 261 | 
            -
                  env = env_with_params("/")
         | 
| 262 | 
            -
                  app = lambda do |env|
         | 
| 263 | 
            -
                    env['warden'].authenticate(:failz)
         | 
| 264 | 
            -
                    env['warden'].should_not be_authenticated
         | 
| 265 | 
            -
                    env['warden'].authenticate(:pass)
         | 
| 266 | 
            -
                    env['warden'].winning_strategy.message.should == "The Fails Strategy Has Failed You"
         | 
| 267 | 
            -
                    valid_response
         | 
| 268 | 
            -
                  end
         | 
| 269 | 
            -
                  setup_rack(app).call(env)
         | 
| 270 | 
            -
                end
         | 
| 271 | 
            -
             | 
| 272 271 | 
             
              end
         | 
| 273 272 |  | 
| 274 273 | 
             
              describe "set user" do
         | 
| @@ -774,6 +773,27 @@ describe "dynamic default_strategies" do | |
| 774 773 | 
             
              end
         | 
| 775 774 |  | 
| 776 775 | 
             
              describe "default scope options" do
         | 
| 776 | 
            +
             | 
| 777 | 
            +
                it "should allow me to set a default action for a given scope" do
         | 
| 778 | 
            +
                  $captures = []
         | 
| 779 | 
            +
                  builder = Rack::Builder.new do
         | 
| 780 | 
            +
                    use Warden::Manager do |config|
         | 
| 781 | 
            +
                      config.scope_defaults :foo, :strategies => [:two], :action => "some_bad_action"
         | 
| 782 | 
            +
                      config.failure_app = Warden::Spec::Helpers::FAILURE_APP
         | 
| 783 | 
            +
                    end
         | 
| 784 | 
            +
             | 
| 785 | 
            +
                    run(lambda do |e|
         | 
| 786 | 
            +
                      e['warden'].authenticate!(:scope => :foo)
         | 
| 787 | 
            +
                    end)
         | 
| 788 | 
            +
                  end
         | 
| 789 | 
            +
             | 
| 790 | 
            +
                  env = env_with_params("/foo")
         | 
| 791 | 
            +
                  env["rack.session"] = {}
         | 
| 792 | 
            +
                  builder.to_app.call(env)
         | 
| 793 | 
            +
                  request = Rack::Request.new(env)
         | 
| 794 | 
            +
                  request.path.should == "/some_bad_action"
         | 
| 795 | 
            +
                end
         | 
| 796 | 
            +
             | 
| 777 797 | 
             
                it "should allow me to set store, false on a given scope" do
         | 
| 778 798 | 
             
                  $captures = []
         | 
| 779 799 | 
             
                  builder = Rack::Builder.new do
         | 
    
        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.10. | 
| 8 | 
            +
              s.version = "0.10.4"
         | 
| 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{2010- | 
| 12 | 
            +
              s.date = %q{2010-05-14}
         | 
| 13 13 | 
             
              s.email = %q{has.sox@gmail.com}
         | 
| 14 14 | 
             
              s.extra_rdoc_files = [
         | 
| 15 15 | 
             
                "LICENSE",
         | 
| @@ -27,8 +27,10 @@ Gem::Specification.new do |s| | |
| 27 27 | 
             
                 "lib/warden/errors.rb",
         | 
| 28 28 | 
             
                 "lib/warden/hooks.rb",
         | 
| 29 29 | 
             
                 "lib/warden/manager.rb",
         | 
| 30 | 
            +
                 "lib/warden/manager_deprecation.rb",
         | 
| 30 31 | 
             
                 "lib/warden/mixins/common.rb",
         | 
| 31 32 | 
             
                 "lib/warden/proxy.rb",
         | 
| 33 | 
            +
                 "lib/warden/proxy_deprecation.rb",
         | 
| 32 34 | 
             
                 "lib/warden/session_serializer.rb",
         | 
| 33 35 | 
             
                 "lib/warden/strategies.rb",
         | 
| 34 36 | 
             
                 "lib/warden/strategies/base.rb",
         | 
    
        metadata
    CHANGED
    
    | @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version | |
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 0
         | 
| 7 7 | 
             
              - 10
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              version: 0.10. | 
| 8 | 
            +
              - 4
         | 
| 9 | 
            +
              version: 0.10.4
         | 
| 10 10 | 
             
            platform: ruby
         | 
| 11 11 | 
             
            authors: 
         | 
| 12 12 | 
             
            - Daniel Neighman
         | 
| @@ -14,7 +14,7 @@ autorequire: | |
| 14 14 | 
             
            bindir: bin
         | 
| 15 15 | 
             
            cert_chain: []
         | 
| 16 16 |  | 
| 17 | 
            -
            date: 2010- | 
| 17 | 
            +
            date: 2010-05-14 00:00:00 +10:00
         | 
| 18 18 | 
             
            default_executable: 
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -66,8 +66,10 @@ files: | |
| 66 66 | 
             
            - lib/warden/errors.rb
         | 
| 67 67 | 
             
            - lib/warden/hooks.rb
         | 
| 68 68 | 
             
            - lib/warden/manager.rb
         | 
| 69 | 
            +
            - lib/warden/manager_deprecation.rb
         | 
| 69 70 | 
             
            - lib/warden/mixins/common.rb
         | 
| 70 71 | 
             
            - lib/warden/proxy.rb
         | 
| 72 | 
            +
            - lib/warden/proxy_deprecation.rb
         | 
| 71 73 | 
             
            - lib/warden/session_serializer.rb
         | 
| 72 74 | 
             
            - lib/warden/strategies.rb
         | 
| 73 75 | 
             
            - lib/warden/strategies/base.rb
         |