rack-oauth2 0.11.0 → 0.12.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/.gitignore +1 -1
- data/Gemfile.lock +29 -22
- data/Rakefile +10 -3
- data/VERSION +1 -1
- data/lib/rack/oauth2/access_token/mac.rb +1 -1
- data/lib/rack/oauth2/client.rb +1 -1
- data/lib/rack/oauth2/client/grant.rb +1 -1
- data/lib/rack/oauth2/server/token.rb +32 -22
- data/lib/rack/oauth2/server/token/extension.rb +12 -0
- data/lib/rack/oauth2/server/token/extension/jwt.rb +34 -0
- data/rack-oauth2.gemspec +5 -1
- data/spec/rack/oauth2/client/grant/authorization_code_spec.rb +2 -2
- data/spec/rack/oauth2/client/grant/client_credentials_spec.rb +1 -1
- data/spec/rack/oauth2/client/grant/password_spec.rb +1 -1
- data/spec/rack/oauth2/client/grant/refresh_token_spec.rb +1 -1
- data/spec/rack/oauth2/server/authorize/code_spec.rb +4 -4
- data/spec/rack/oauth2/server/authorize/token_spec.rb +4 -4
- data/spec/rack/oauth2/server/authorize_spec.rb +1 -1
- data/spec/rack/oauth2/server/token_spec.rb +31 -0
- data/spec/spec_helper.rb +7 -0
- metadata +101 -103
    
        data/.gitignore
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                rack-oauth2 (0. | 
| 4 | 
            +
                rack-oauth2 (0.11.0)
         | 
| 5 5 | 
             
                  activesupport (>= 2.3)
         | 
| 6 6 | 
             
                  attr_required (>= 0.0.3)
         | 
| 7 7 | 
             
                  httpclient (>= 2.2.0.2)
         | 
| @@ -12,43 +12,50 @@ PATH | |
| 12 12 | 
             
            GEM
         | 
| 13 13 | 
             
              remote: http://rubygems.org/
         | 
| 14 14 | 
             
              specs:
         | 
| 15 | 
            -
                activesupport (3.1 | 
| 15 | 
            +
                activesupport (3.2.1)
         | 
| 16 | 
            +
                  i18n (~> 0.6)
         | 
| 16 17 | 
             
                  multi_json (~> 1.0)
         | 
| 17 18 | 
             
                addressable (2.2.6)
         | 
| 18 19 | 
             
                attr_required (0.0.3)
         | 
| 19 20 | 
             
                bouncy-castle-java (1.5.0146.1)
         | 
| 20 | 
            -
                 | 
| 21 | 
            +
                configatron (2.9.0)
         | 
| 22 | 
            +
                  yamler (>= 0.1.0)
         | 
| 23 | 
            +
                cover_me (1.2.0)
         | 
| 24 | 
            +
                  configatron
         | 
| 25 | 
            +
                  hashie
         | 
| 26 | 
            +
                crack (0.3.1)
         | 
| 21 27 | 
             
                diff-lcs (1.1.3)
         | 
| 22 | 
            -
                 | 
| 28 | 
            +
                hashie (1.2.0)
         | 
| 29 | 
            +
                httpclient (2.2.4)
         | 
| 23 30 | 
             
                i18n (0.6.0)
         | 
| 24 | 
            -
                jruby-openssl (0.7. | 
| 25 | 
            -
                  bouncy-castle-java
         | 
| 26 | 
            -
                json (1.6. | 
| 27 | 
            -
                 | 
| 28 | 
            -
                 | 
| 29 | 
            -
                 | 
| 30 | 
            -
                 | 
| 31 | 
            -
                 | 
| 32 | 
            -
             | 
| 33 | 
            -
                  rspec- | 
| 34 | 
            -
                  rspec- | 
| 35 | 
            -
             | 
| 36 | 
            -
                rspec- | 
| 37 | 
            -
                rspec-expectations (2.6.0)
         | 
| 31 | 
            +
                jruby-openssl (0.7.5)
         | 
| 32 | 
            +
                  bouncy-castle-java (>= 1.5.0146.1)
         | 
| 33 | 
            +
                json (1.6.5)
         | 
| 34 | 
            +
                json (1.6.5-java)
         | 
| 35 | 
            +
                multi_json (1.0.4)
         | 
| 36 | 
            +
                rack (1.4.1)
         | 
| 37 | 
            +
                rake (0.9.2.2)
         | 
| 38 | 
            +
                rspec (2.8.0)
         | 
| 39 | 
            +
                  rspec-core (~> 2.8.0)
         | 
| 40 | 
            +
                  rspec-expectations (~> 2.8.0)
         | 
| 41 | 
            +
                  rspec-mocks (~> 2.8.0)
         | 
| 42 | 
            +
                rspec-core (2.8.0)
         | 
| 43 | 
            +
                rspec-expectations (2.8.0)
         | 
| 38 44 | 
             
                  diff-lcs (~> 1.1.2)
         | 
| 39 | 
            -
                rspec-mocks (2. | 
| 40 | 
            -
                webmock (1.7. | 
| 41 | 
            -
                  addressable ( | 
| 45 | 
            +
                rspec-mocks (2.8.0)
         | 
| 46 | 
            +
                webmock (1.7.10)
         | 
| 47 | 
            +
                  addressable (~> 2.2, > 2.2.5)
         | 
| 42 48 | 
             
                  crack (>= 0.1.7)
         | 
| 49 | 
            +
                yamler (0.1.0)
         | 
| 43 50 |  | 
| 44 51 | 
             
            PLATFORMS
         | 
| 45 52 | 
             
              java
         | 
| 46 53 | 
             
              ruby
         | 
| 47 54 |  | 
| 48 55 | 
             
            DEPENDENCIES
         | 
| 56 | 
            +
              cover_me (>= 1.2.0)
         | 
| 49 57 | 
             
              jruby-openssl (>= 0.7)
         | 
| 50 58 | 
             
              rack-oauth2!
         | 
| 51 59 | 
             
              rake (>= 0.8)
         | 
| 52 | 
            -
              rcov (>= 0.9)
         | 
| 53 60 | 
             
              rspec (>= 2)
         | 
| 54 61 | 
             
              webmock (>= 1.6.2)
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -4,9 +4,16 @@ Bundler::GemHelper.install_tasks | |
| 4 4 | 
             
            require 'rspec/core/rake_task'
         | 
| 5 5 | 
             
            RSpec::Core::RakeTask.new(:spec)
         | 
| 6 6 |  | 
| 7 | 
            -
             | 
| 8 | 
            -
               | 
| 9 | 
            -
               | 
| 7 | 
            +
            if RUBY_VERSION >= '1.9'
         | 
| 8 | 
            +
              require 'cover_me'
         | 
| 9 | 
            +
              CoverMe.config do |c|
         | 
| 10 | 
            +
                c.file_pattern = /(#{CoverMe.config.project.root}\/lib\/.+\.rb)/i
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
            else
         | 
| 13 | 
            +
              RSpec::Core::RakeTask.new(:rcov) do |spec|
         | 
| 14 | 
            +
                spec.rcov = true
         | 
| 15 | 
            +
                spec.rcov_opts = ['-Ilib -Ispec --exclude spec,gems']
         | 
| 16 | 
            +
              end
         | 
| 10 17 | 
             
            end
         | 
| 11 18 |  | 
| 12 19 | 
             
            task :default => :spec
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0. | 
| 1 | 
            +
            0.12.0
         | 
    
        data/lib/rack/oauth2/client.rb
    CHANGED
    
    
| @@ -6,11 +6,38 @@ module Rack | |
| 6 6 | 
             
                  class Token < Abstract::Handler
         | 
| 7 7 | 
             
                    def call(env)
         | 
| 8 8 | 
             
                      request = Request.new(env)
         | 
| 9 | 
            -
                      request. | 
| 9 | 
            +
                      grant_type_for(request).new(&@authenticator).call(env).finish
         | 
| 10 10 | 
             
                    rescue Rack::OAuth2::Server::Abstract::Error => e
         | 
| 11 11 | 
             
                      e.finish
         | 
| 12 12 | 
             
                    end
         | 
| 13 13 |  | 
| 14 | 
            +
                    private
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    def grant_type_for(request)
         | 
| 17 | 
            +
                      case request.grant_type
         | 
| 18 | 
            +
                      when 'authorization_code'
         | 
| 19 | 
            +
                        AuthorizationCode
         | 
| 20 | 
            +
                      when 'password'
         | 
| 21 | 
            +
                        Password
         | 
| 22 | 
            +
                      when 'client_credentials'
         | 
| 23 | 
            +
                        ClientCredentials
         | 
| 24 | 
            +
                      when 'refresh_token'
         | 
| 25 | 
            +
                        RefreshToken
         | 
| 26 | 
            +
                      when ''
         | 
| 27 | 
            +
                        request.attr_missing!
         | 
| 28 | 
            +
                      else
         | 
| 29 | 
            +
                        extensions.detect do |extension|
         | 
| 30 | 
            +
                          extension.grant_type_for? request.grant_type
         | 
| 31 | 
            +
                        end || request.unsupported_grant_type!
         | 
| 32 | 
            +
                      end
         | 
| 33 | 
            +
                    end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    def extensions
         | 
| 36 | 
            +
                      Extension.constants.sort.collect do |key|
         | 
| 37 | 
            +
                        Extension.const_get key
         | 
| 38 | 
            +
                      end
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
             | 
| 14 41 | 
             
                    class Request < Abstract::Request
         | 
| 15 42 | 
             
                      attr_required :grant_type
         | 
| 16 43 | 
             
                      attr_optional :client_secret
         | 
| @@ -24,25 +51,7 @@ module Rack | |
| 24 51 | 
             
                          super
         | 
| 25 52 | 
             
                          @client_secret = params['client_secret']
         | 
| 26 53 | 
             
                        end
         | 
| 27 | 
            -
                        @grant_type = params['grant_type']
         | 
| 28 | 
            -
                      end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                      def profile
         | 
| 31 | 
            -
                        case params['grant_type'].to_s
         | 
| 32 | 
            -
                        when 'authorization_code'
         | 
| 33 | 
            -
                          AuthorizationCode
         | 
| 34 | 
            -
                        when 'password'
         | 
| 35 | 
            -
                          Password
         | 
| 36 | 
            -
                        when 'client_credentials'
         | 
| 37 | 
            -
                          ClientCredentials
         | 
| 38 | 
            -
                        when 'refresh_token'
         | 
| 39 | 
            -
                          RefreshToken
         | 
| 40 | 
            -
                        when ''
         | 
| 41 | 
            -
                          attr_missing!
         | 
| 42 | 
            -
                        else
         | 
| 43 | 
            -
                          # TODO: support extensions
         | 
| 44 | 
            -
                          unsupported_grant_type!("'#{params['grant_type']}' isn't supported.")
         | 
| 45 | 
            -
                        end
         | 
| 54 | 
            +
                        @grant_type = params['grant_type'].to_s
         | 
| 46 55 | 
             
                      end
         | 
| 47 56 | 
             
                    end
         | 
| 48 57 |  | 
| @@ -67,8 +76,9 @@ module Rack | |
| 67 76 | 
             
              end
         | 
| 68 77 | 
             
            end
         | 
| 69 78 |  | 
| 70 | 
            -
            require 'rack/oauth2/server/token/error'
         | 
| 71 79 | 
             
            require 'rack/oauth2/server/token/authorization_code'
         | 
| 72 80 | 
             
            require 'rack/oauth2/server/token/password'
         | 
| 73 81 | 
             
            require 'rack/oauth2/server/token/client_credentials'
         | 
| 74 | 
            -
            require 'rack/oauth2/server/token/refresh_token'
         | 
| 82 | 
            +
            require 'rack/oauth2/server/token/refresh_token'
         | 
| 83 | 
            +
            require 'rack/oauth2/server/token/extension'
         | 
| 84 | 
            +
            require 'rack/oauth2/server/token/error'
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            module Rack
         | 
| 2 | 
            +
              module OAuth2
         | 
| 3 | 
            +
                module Server
         | 
| 4 | 
            +
                  class Token
         | 
| 5 | 
            +
                    module Extension
         | 
| 6 | 
            +
                      class JWT < Abstract::Handler
         | 
| 7 | 
            +
                        class << self
         | 
| 8 | 
            +
                          def grant_type_for?(grant_type)
         | 
| 9 | 
            +
                            grant_type == 'urn:ietf:params:oauth:grant-type:jwt-bearer'
         | 
| 10 | 
            +
                          end
         | 
| 11 | 
            +
                        end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                        def call(env)
         | 
| 14 | 
            +
                          @request  = Request.new env
         | 
| 15 | 
            +
                          @response = Response.new request
         | 
| 16 | 
            +
                          super
         | 
| 17 | 
            +
                        end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                        class Request < Authorize::Token::Request
         | 
| 20 | 
            +
                          attr_required :assertion
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                          def initialize(env)
         | 
| 23 | 
            +
                            super
         | 
| 24 | 
            +
                            @grant_type = :jwt
         | 
| 25 | 
            +
                            @assertion = params['assertion']
         | 
| 26 | 
            +
                            attr_missing!
         | 
| 27 | 
            +
                          end
         | 
| 28 | 
            +
                        end
         | 
| 29 | 
            +
                      end
         | 
| 30 | 
            +
                    end
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
            end
         | 
    
        data/rack-oauth2.gemspec
    CHANGED
    
    | @@ -20,7 +20,11 @@ Gem::Specification.new do |s| | |
| 20 20 | 
             
              s.add_runtime_dependency "i18n"
         | 
| 21 21 | 
             
              s.add_runtime_dependency "attr_required", ">= 0.0.3"
         | 
| 22 22 | 
             
              s.add_development_dependency "rake", ">= 0.8"
         | 
| 23 | 
            -
               | 
| 23 | 
            +
              if RUBY_VERSION >= '1.9'
         | 
| 24 | 
            +
                s.add_development_dependency "cover_me", ">= 1.2.0"
         | 
| 25 | 
            +
              else
         | 
| 26 | 
            +
                s.add_development_dependency "rcov", ">= 0.9"
         | 
| 27 | 
            +
              end
         | 
| 24 28 | 
             
              s.add_development_dependency "rspec", ">= 2"
         | 
| 25 29 | 
             
              s.add_development_dependency "webmock", ">= 1.6.2"
         | 
| 26 30 | 
             
            end
         | 
| @@ -15,7 +15,7 @@ describe Rack::OAuth2::Client::Grant::AuthorizationCode do | |
| 15 15 | 
             
                  end
         | 
| 16 16 | 
             
                  subject { grant.new attributes }
         | 
| 17 17 | 
             
                  its(:redirect_uri) { should == redirect_uri }
         | 
| 18 | 
            -
                  its(: | 
| 18 | 
            +
                  its(:as_json) do
         | 
| 19 19 | 
             
                    should == {:grant_type => :authorization_code, :code => 'code', :redirect_uri => redirect_uri}
         | 
| 20 20 | 
             
                  end
         | 
| 21 21 | 
             
                end
         | 
| @@ -23,7 +23,7 @@ describe Rack::OAuth2::Client::Grant::AuthorizationCode do | |
| 23 23 | 
             
                context 'otherwise' do
         | 
| 24 24 | 
             
                  subject { grant.new attributes }
         | 
| 25 25 | 
             
                  its(:redirect_uri) { should be_nil }
         | 
| 26 | 
            -
                  its(: | 
| 26 | 
            +
                  its(:as_json) do
         | 
| 27 27 | 
             
                    should == {:grant_type => :authorization_code, :code => 'code', :redirect_uri => nil}
         | 
| 28 28 | 
             
                  end
         | 
| 29 29 | 
             
                end
         | 
| @@ -13,7 +13,7 @@ describe Rack::OAuth2::Client::Grant::Password do | |
| 13 13 | 
             
                    {:username => 'username', :password => 'password'}
         | 
| 14 14 | 
             
                  end
         | 
| 15 15 | 
             
                  subject { grant.new attributes }
         | 
| 16 | 
            -
                  its(: | 
| 16 | 
            +
                  its(:as_json) do
         | 
| 17 17 | 
             
                    should == {:grant_type => :password, :username => 'username', :password => 'password'}
         | 
| 18 18 | 
             
                  end
         | 
| 19 19 | 
             
                end
         | 
| @@ -8,7 +8,7 @@ describe Rack::OAuth2::Client::Grant::RefreshToken do | |
| 8 8 | 
             
                  {:refresh_token => 'refresh_token'}
         | 
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
                subject { grant.new attributes }
         | 
| 11 | 
            -
                its(: | 
| 11 | 
            +
                its(:as_json) do
         | 
| 12 12 | 
             
                  should == {:grant_type => :refresh_token, :refresh_token => 'refresh_token'}
         | 
| 13 13 | 
             
                end
         | 
| 14 14 | 
             
              end
         | 
| @@ -4,7 +4,7 @@ describe Rack::OAuth2::Server::Authorize::Code do | |
| 4 4 | 
             
              let(:request)            { Rack::MockRequest.new app }
         | 
| 5 5 | 
             
              let(:redirect_uri)       { 'http://client.example.com/callback' }
         | 
| 6 6 | 
             
              let(:authorization_code) { 'authorization_code' }  
         | 
| 7 | 
            -
              let(:response)           { request.get "/?response_type=code&client_id=client&redirect_uri=#{redirect_uri}" }
         | 
| 7 | 
            +
              let(:response)           { request.get "/?response_type=code&client_id=client&redirect_uri=#{redirect_uri}&state=state" }
         | 
| 8 8 |  | 
| 9 9 | 
             
              context 'when approved' do
         | 
| 10 10 | 
             
                subject { response }
         | 
| @@ -16,11 +16,11 @@ describe Rack::OAuth2::Server::Authorize::Code do | |
| 16 16 | 
             
                  end
         | 
| 17 17 | 
             
                end
         | 
| 18 18 | 
             
                its(:status)   { should == 302 }
         | 
| 19 | 
            -
                its(:location) { should == "#{redirect_uri}?code=#{authorization_code}" }
         | 
| 19 | 
            +
                its(:location) { should == "#{redirect_uri}?code=#{authorization_code}&state=state" }
         | 
| 20 20 |  | 
| 21 21 | 
             
                context 'when redirect_uri already includes query' do
         | 
| 22 22 | 
             
                  let(:redirect_uri) { 'http://client.example.com/callback?k=v' }
         | 
| 23 | 
            -
                  its(:location)     { should == "#{redirect_uri}&code=#{authorization_code}" }
         | 
| 23 | 
            +
                  its(:location)     { should == "#{redirect_uri}&code=#{authorization_code}&state=state" }
         | 
| 24 24 | 
             
                end
         | 
| 25 25 |  | 
| 26 26 | 
             
                context 'when redirect_uri is missing' do
         | 
| @@ -51,7 +51,7 @@ describe Rack::OAuth2::Server::Authorize::Code do | |
| 51 51 | 
             
                    :error => :access_denied,
         | 
| 52 52 | 
             
                    :error_description => Rack::OAuth2::Server::Authorize::ErrorMethods::DEFAULT_DESCRIPTION[:access_denied]
         | 
| 53 53 | 
             
                  }
         | 
| 54 | 
            -
                  response.location.should == "#{redirect_uri}?#{error_message.to_query}"
         | 
| 54 | 
            +
                  response.location.should == "#{redirect_uri}?#{error_message.to_query}&state=state"
         | 
| 55 55 | 
             
                end
         | 
| 56 56 | 
             
              end
         | 
| 57 57 | 
             
            end
         | 
| @@ -4,7 +4,7 @@ describe Rack::OAuth2::Server::Authorize::Token do | |
| 4 4 | 
             
              let(:request)      { Rack::MockRequest.new app }
         | 
| 5 5 | 
             
              let(:redirect_uri) { 'http://client.example.com/callback' }
         | 
| 6 6 | 
             
              let(:access_token) { 'access_token' }
         | 
| 7 | 
            -
              let(:response)     { request.get("/?response_type=token&client_id=client&redirect_uri=#{redirect_uri}") }
         | 
| 7 | 
            +
              let(:response)     { request.get("/?response_type=token&client_id=client&redirect_uri=#{redirect_uri}&state=state") }
         | 
| 8 8 |  | 
| 9 9 | 
             
              context "when approved" do
         | 
| 10 10 | 
             
                subject { response }
         | 
| @@ -17,7 +17,7 @@ describe Rack::OAuth2::Server::Authorize::Token do | |
| 17 17 | 
             
                  end
         | 
| 18 18 | 
             
                end
         | 
| 19 19 | 
             
                its(:status)   { should == 302 }
         | 
| 20 | 
            -
                its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&token_type=bearer" }
         | 
| 20 | 
            +
                its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&state=state&token_type=bearer" }
         | 
| 21 21 |  | 
| 22 22 | 
             
                context 'when refresh_token is given' do
         | 
| 23 23 | 
             
                  let :bearer_token do
         | 
| @@ -26,7 +26,7 @@ describe Rack::OAuth2::Server::Authorize::Token do | |
| 26 26 | 
             
                      :refresh_token => 'refresh'
         | 
| 27 27 | 
             
                    )
         | 
| 28 28 | 
             
                  end
         | 
| 29 | 
            -
                  its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&token_type=bearer" }
         | 
| 29 | 
            +
                  its(:location) { should == "#{redirect_uri}#access_token=#{access_token}&state=state&token_type=bearer" }
         | 
| 30 30 | 
             
                end
         | 
| 31 31 |  | 
| 32 32 | 
             
                context 'when redirect_uri is missing' do
         | 
| @@ -67,7 +67,7 @@ describe Rack::OAuth2::Server::Authorize::Token do | |
| 67 67 | 
             
                    :error => :access_denied,
         | 
| 68 68 | 
             
                    :error_description => Rack::OAuth2::Server::Authorize::ErrorMethods::DEFAULT_DESCRIPTION[:access_denied]
         | 
| 69 69 | 
             
                  }
         | 
| 70 | 
            -
                  response.location.should == "#{redirect_uri}##{error_message.to_query}"
         | 
| 70 | 
            +
                  response.location.should == "#{redirect_uri}##{error_message.to_query}&state=state"
         | 
| 71 71 | 
             
                end
         | 
| 72 72 | 
             
              end
         | 
| 73 73 | 
             
            end
         | 
| @@ -100,4 +100,35 @@ describe Rack::OAuth2::Server::Token do | |
| 100 100 | 
             
                  end
         | 
| 101 101 | 
             
                end
         | 
| 102 102 | 
             
              end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
              describe 'extensibility' do
         | 
| 105 | 
            +
                before do
         | 
| 106 | 
            +
                  require 'rack/oauth2/server/token/extension/jwt'
         | 
| 107 | 
            +
                end
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                subject { app }
         | 
| 110 | 
            +
                let(:env) do
         | 
| 111 | 
            +
                  Rack::MockRequest.env_for(
         | 
| 112 | 
            +
                    '/token',
         | 
| 113 | 
            +
                    :params => params
         | 
| 114 | 
            +
                  )
         | 
| 115 | 
            +
                end
         | 
| 116 | 
            +
                let(:request) { Rack::OAuth2::Server::Token::Request.new env }
         | 
| 117 | 
            +
                its(:extensions) { should == [Rack::OAuth2::Server::Token::Extension::JWT] }
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                describe 'JWT assertion' do
         | 
| 120 | 
            +
                  let(:params) do
         | 
| 121 | 
            +
                    {
         | 
| 122 | 
            +
                      :grant_type => 'urn:ietf:params:oauth:grant-type:jwt-bearer',
         | 
| 123 | 
            +
                      :assertion => 'header.payload.signature'
         | 
| 124 | 
            +
                    }
         | 
| 125 | 
            +
                  end
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                  it do
         | 
| 128 | 
            +
                    app.send(
         | 
| 129 | 
            +
                      :grant_type_for, request
         | 
| 130 | 
            +
                    ).should == Rack::OAuth2::Server::Token::Extension::JWT
         | 
| 131 | 
            +
                  end
         | 
| 132 | 
            +
                end
         | 
| 133 | 
            +
              end
         | 
| 103 134 | 
             
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,137 +1,135 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rack-oauth2
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.12.0
         | 
| 4 5 | 
             
              prerelease: 
         | 
| 5 | 
            -
              version: 0.11.0
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 | 
            -
            authors: | 
| 7 | 
            +
            authors:
         | 
| 8 8 | 
             
            - nov matake
         | 
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 12 | 
            +
            date: 2012-02-01 00:00:00.000000000Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 16 15 | 
             
              name: rack
         | 
| 17 | 
            -
               | 
| 18 | 
            -
              requirement: &id001 !ruby/object:Gem::Requirement 
         | 
| 16 | 
            +
              requirement: &70151141124580 !ruby/object:Gem::Requirement
         | 
| 19 17 | 
             
                none: false
         | 
| 20 | 
            -
                requirements: | 
| 21 | 
            -
                - -  | 
| 22 | 
            -
                  - !ruby/object:Gem::Version | 
| 23 | 
            -
                    version:  | 
| 18 | 
            +
                requirements:
         | 
| 19 | 
            +
                - - ! '>='
         | 
| 20 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            +
                    version: '1.1'
         | 
| 24 22 | 
             
              type: :runtime
         | 
| 25 | 
            -
              version_requirements: *id001
         | 
| 26 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 27 | 
            -
              name: json
         | 
| 28 23 | 
             
              prerelease: false
         | 
| 29 | 
            -
               | 
| 24 | 
            +
              version_requirements: *70151141124580
         | 
| 25 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 26 | 
            +
              name: json
         | 
| 27 | 
            +
              requirement: &70151141124100 !ruby/object:Gem::Requirement
         | 
| 30 28 | 
             
                none: false
         | 
| 31 | 
            -
                requirements: | 
| 32 | 
            -
                - -  | 
| 33 | 
            -
                  - !ruby/object:Gem::Version | 
| 29 | 
            +
                requirements:
         | 
| 30 | 
            +
                - - ! '>='
         | 
| 31 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 34 32 | 
             
                    version: 1.4.3
         | 
| 35 33 | 
             
              type: :runtime
         | 
| 36 | 
            -
              version_requirements: *id002
         | 
| 37 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 38 | 
            -
              name: httpclient
         | 
| 39 34 | 
             
              prerelease: false
         | 
| 40 | 
            -
               | 
| 35 | 
            +
              version_requirements: *70151141124100
         | 
| 36 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 37 | 
            +
              name: httpclient
         | 
| 38 | 
            +
              requirement: &70151141123620 !ruby/object:Gem::Requirement
         | 
| 41 39 | 
             
                none: false
         | 
| 42 | 
            -
                requirements: | 
| 43 | 
            -
                - -  | 
| 44 | 
            -
                  - !ruby/object:Gem::Version | 
| 40 | 
            +
                requirements:
         | 
| 41 | 
            +
                - - ! '>='
         | 
| 42 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 45 43 | 
             
                    version: 2.2.0.2
         | 
| 46 44 | 
             
              type: :runtime
         | 
| 47 | 
            -
              version_requirements: *id003
         | 
| 48 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 49 | 
            -
              name: activesupport
         | 
| 50 45 | 
             
              prerelease: false
         | 
| 51 | 
            -
               | 
| 46 | 
            +
              version_requirements: *70151141123620
         | 
| 47 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            +
              name: activesupport
         | 
| 49 | 
            +
              requirement: &70151141123100 !ruby/object:Gem::Requirement
         | 
| 52 50 | 
             
                none: false
         | 
| 53 | 
            -
                requirements: | 
| 54 | 
            -
                - -  | 
| 55 | 
            -
                  - !ruby/object:Gem::Version | 
| 56 | 
            -
                    version:  | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ! '>='
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '2.3'
         | 
| 57 55 | 
             
              type: :runtime
         | 
| 58 | 
            -
              version_requirements: *id004
         | 
| 59 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 60 | 
            -
              name: i18n
         | 
| 61 56 | 
             
              prerelease: false
         | 
| 62 | 
            -
               | 
| 57 | 
            +
              version_requirements: *70151141123100
         | 
| 58 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 59 | 
            +
              name: i18n
         | 
| 60 | 
            +
              requirement: &70151141122640 !ruby/object:Gem::Requirement
         | 
| 63 61 | 
             
                none: false
         | 
| 64 | 
            -
                requirements: | 
| 65 | 
            -
                - -  | 
| 66 | 
            -
                  - !ruby/object:Gem::Version | 
| 67 | 
            -
                    version:  | 
| 62 | 
            +
                requirements:
         | 
| 63 | 
            +
                - - ! '>='
         | 
| 64 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 65 | 
            +
                    version: '0'
         | 
| 68 66 | 
             
              type: :runtime
         | 
| 69 | 
            -
              version_requirements: *id005
         | 
| 70 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 71 | 
            -
              name: attr_required
         | 
| 72 67 | 
             
              prerelease: false
         | 
| 73 | 
            -
               | 
| 68 | 
            +
              version_requirements: *70151141122640
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: attr_required
         | 
| 71 | 
            +
              requirement: &70151141121940 !ruby/object:Gem::Requirement
         | 
| 74 72 | 
             
                none: false
         | 
| 75 | 
            -
                requirements: | 
| 76 | 
            -
                - -  | 
| 77 | 
            -
                  - !ruby/object:Gem::Version | 
| 73 | 
            +
                requirements:
         | 
| 74 | 
            +
                - - ! '>='
         | 
| 75 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 78 76 | 
             
                    version: 0.0.3
         | 
| 79 77 | 
             
              type: :runtime
         | 
| 80 | 
            -
              version_requirements: *id006
         | 
| 81 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 82 | 
            -
              name: rake
         | 
| 83 78 | 
             
              prerelease: false
         | 
| 84 | 
            -
               | 
| 79 | 
            +
              version_requirements: *70151141121940
         | 
| 80 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 81 | 
            +
              name: rake
         | 
| 82 | 
            +
              requirement: &70151141120640 !ruby/object:Gem::Requirement
         | 
| 85 83 | 
             
                none: false
         | 
| 86 | 
            -
                requirements: | 
| 87 | 
            -
                - -  | 
| 88 | 
            -
                  - !ruby/object:Gem::Version | 
| 89 | 
            -
                    version:  | 
| 84 | 
            +
                requirements:
         | 
| 85 | 
            +
                - - ! '>='
         | 
| 86 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 87 | 
            +
                    version: '0.8'
         | 
| 90 88 | 
             
              type: :development
         | 
| 91 | 
            -
              version_requirements: *id007
         | 
| 92 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 93 | 
            -
              name: rcov
         | 
| 94 89 | 
             
              prerelease: false
         | 
| 95 | 
            -
               | 
| 90 | 
            +
              version_requirements: *70151141120640
         | 
| 91 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 92 | 
            +
              name: cover_me
         | 
| 93 | 
            +
              requirement: &70151141120120 !ruby/object:Gem::Requirement
         | 
| 96 94 | 
             
                none: false
         | 
| 97 | 
            -
                requirements: | 
| 98 | 
            -
                - -  | 
| 99 | 
            -
                  - !ruby/object:Gem::Version | 
| 100 | 
            -
                    version:  | 
| 95 | 
            +
                requirements:
         | 
| 96 | 
            +
                - - ! '>='
         | 
| 97 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 98 | 
            +
                    version: 1.2.0
         | 
| 101 99 | 
             
              type: :development
         | 
| 102 | 
            -
              version_requirements: *id008
         | 
| 103 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 104 | 
            -
              name: rspec
         | 
| 105 100 | 
             
              prerelease: false
         | 
| 106 | 
            -
               | 
| 101 | 
            +
              version_requirements: *70151141120120
         | 
| 102 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 103 | 
            +
              name: rspec
         | 
| 104 | 
            +
              requirement: &70151141113400 !ruby/object:Gem::Requirement
         | 
| 107 105 | 
             
                none: false
         | 
| 108 | 
            -
                requirements: | 
| 109 | 
            -
                - -  | 
| 110 | 
            -
                  - !ruby/object:Gem::Version | 
| 111 | 
            -
                    version:  | 
| 106 | 
            +
                requirements:
         | 
| 107 | 
            +
                - - ! '>='
         | 
| 108 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 109 | 
            +
                    version: '2'
         | 
| 112 110 | 
             
              type: :development
         | 
| 113 | 
            -
              version_requirements: *id009
         | 
| 114 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 115 | 
            -
              name: webmock
         | 
| 116 111 | 
             
              prerelease: false
         | 
| 117 | 
            -
               | 
| 112 | 
            +
              version_requirements: *70151141113400
         | 
| 113 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 114 | 
            +
              name: webmock
         | 
| 115 | 
            +
              requirement: &70151141112480 !ruby/object:Gem::Requirement
         | 
| 118 116 | 
             
                none: false
         | 
| 119 | 
            -
                requirements: | 
| 120 | 
            -
                - -  | 
| 121 | 
            -
                  - !ruby/object:Gem::Version | 
| 117 | 
            +
                requirements:
         | 
| 118 | 
            +
                - - ! '>='
         | 
| 119 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 122 120 | 
             
                    version: 1.6.2
         | 
| 123 121 | 
             
              type: :development
         | 
| 124 | 
            -
               | 
| 125 | 
            -
             | 
| 122 | 
            +
              prerelease: false
         | 
| 123 | 
            +
              version_requirements: *70151141112480
         | 
| 124 | 
            +
            description: OAuth 2.0 Server & Client Library. Both Bearer and MAC token type are
         | 
| 125 | 
            +
              supported.
         | 
| 126 126 | 
             
            email: nov@matake.jp
         | 
| 127 127 | 
             
            executables: []
         | 
| 128 | 
            -
             | 
| 129 128 | 
             
            extensions: []
         | 
| 130 | 
            -
             | 
| 131 | 
            -
            extra_rdoc_files: 
         | 
| 129 | 
            +
            extra_rdoc_files:
         | 
| 132 130 | 
             
            - LICENSE
         | 
| 133 131 | 
             
            - README.rdoc
         | 
| 134 | 
            -
            files: | 
| 132 | 
            +
            files:
         | 
| 135 133 | 
             
            - .document
         | 
| 136 134 | 
             
            - .gitignore
         | 
| 137 135 | 
             
            - .rspec
         | 
| @@ -182,6 +180,8 @@ files: | |
| 182 180 | 
             
            - lib/rack/oauth2/server/token/authorization_code.rb
         | 
| 183 181 | 
             
            - lib/rack/oauth2/server/token/client_credentials.rb
         | 
| 184 182 | 
             
            - lib/rack/oauth2/server/token/error.rb
         | 
| 183 | 
            +
            - lib/rack/oauth2/server/token/extension.rb
         | 
| 184 | 
            +
            - lib/rack/oauth2/server/token/extension/jwt.rb
         | 
| 185 185 | 
             
            - lib/rack/oauth2/server/token/password.rb
         | 
| 186 186 | 
             
            - lib/rack/oauth2/server/token/refresh_token.rb
         | 
| 187 187 | 
             
            - lib/rack/oauth2/util.rb
         | 
| @@ -235,32 +235,30 @@ files: | |
| 235 235 | 
             
            - spec/spec_helper.rb
         | 
| 236 236 | 
             
            homepage: http://github.com/nov/rack-oauth2
         | 
| 237 237 | 
             
            licenses: []
         | 
| 238 | 
            -
             | 
| 239 238 | 
             
            post_install_message: 
         | 
| 240 | 
            -
            rdoc_options: | 
| 239 | 
            +
            rdoc_options:
         | 
| 241 240 | 
             
            - --charset=UTF-8
         | 
| 242 | 
            -
            require_paths: | 
| 241 | 
            +
            require_paths:
         | 
| 243 242 | 
             
            - lib
         | 
| 244 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 243 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 245 244 | 
             
              none: false
         | 
| 246 | 
            -
              requirements: | 
| 247 | 
            -
              - -  | 
| 248 | 
            -
                - !ruby/object:Gem::Version | 
| 249 | 
            -
                  version:  | 
| 250 | 
            -
            required_rubygems_version: !ruby/object:Gem::Requirement | 
| 245 | 
            +
              requirements:
         | 
| 246 | 
            +
              - - ! '>='
         | 
| 247 | 
            +
                - !ruby/object:Gem::Version
         | 
| 248 | 
            +
                  version: '0'
         | 
| 249 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 251 250 | 
             
              none: false
         | 
| 252 | 
            -
              requirements: | 
| 253 | 
            -
              - -  | 
| 254 | 
            -
                - !ruby/object:Gem::Version | 
| 251 | 
            +
              requirements:
         | 
| 252 | 
            +
              - - ! '>='
         | 
| 253 | 
            +
                - !ruby/object:Gem::Version
         | 
| 255 254 | 
             
                  version: 1.3.6
         | 
| 256 255 | 
             
            requirements: []
         | 
| 257 | 
            -
             | 
| 258 256 | 
             
            rubyforge_project: 
         | 
| 259 | 
            -
            rubygems_version: 1.8. | 
| 257 | 
            +
            rubygems_version: 1.8.12
         | 
| 260 258 | 
             
            signing_key: 
         | 
| 261 259 | 
             
            specification_version: 3
         | 
| 262 260 | 
             
            summary: OAuth 2.0 Server & Client Library - Both Bearer and MAC token type are supported
         | 
| 263 | 
            -
            test_files: | 
| 261 | 
            +
            test_files:
         | 
| 264 262 | 
             
            - spec/helpers/time.rb
         | 
| 265 263 | 
             
            - spec/helpers/webmock_helper.rb
         | 
| 266 264 | 
             
            - spec/mock_response/errors/invalid_request.json
         |