Sha256: bed292f8e054bbe948ae76e23f3a6e6e8f71d956f5be963d7722f3a8137fd3db

Contents?: true

Size: 1.89 KB

Versions: 15

Compression:

Stored size: 1.89 KB

Contents

require 'spec_helper'
require 'active_support/all'
require 'active_model'
require 'doorkeeper/oauth/client_credentials_request'

module Doorkeeper::OAuth
  describe ClientCredentialsRequest do
    let(:server) { double default_scopes: nil }
    let(:client) { double }
    let(:token_creator) { double :issuer, create: true, token: double }

    subject { ClientCredentialsRequest.new(server, client) }

    before do
      subject.issuer = token_creator
    end

    it 'issues an access token for the current client' do
      expect(token_creator).to receive(:create).with(client, nil)
      subject.authorize
    end

    it 'has successful response when issue was created' do
      subject.authorize
      expect(subject.response).to be_a(TokenResponse)
    end

    context 'if issue was not created' do
      before do
        subject.issuer = double create: false, error: :invalid
      end

      it 'has an error response' do
        subject.authorize
        expect(subject.response).to be_a(Doorkeeper::OAuth::ErrorResponse)
      end

      it 'delegates the error to issuer' do
        subject.authorize
        expect(subject.error).to eq(:invalid)
      end
    end

    context 'with scopes' do
      let(:default_scopes) { Doorkeeper::OAuth::Scopes.from_string('public email') }

      before do
        allow(server).to receive(:default_scopes).and_return(default_scopes)
      end

      it 'issues an access token with default scopes if none was requested' do
        expect(token_creator).to receive(:create).with(client, default_scopes)
        subject.authorize
      end

      it 'issues an access token with requested scopes' do
        subject = ClientCredentialsRequest.new(server, client, scope: 'email')
        subject.issuer = token_creator
        expect(token_creator).to receive(:create).with(client, Doorkeeper::OAuth::Scopes.from_string('email'))
        subject.authorize
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
doorkeeper-1.4.2 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-2.1.3 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-2.1.2 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-2.1.1 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-2.1.0 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-2.0.1 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-1.4.1 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-2.0.0 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-2.0.0.rc3 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-2.0.0.rc2 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-2.0.0.alpha1 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-1.4.0 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-1.3.1 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-1.3.0 spec/lib/oauth/client_credentials_request_spec.rb
doorkeeper-1.2.0 spec/lib/oauth/client_credentials_request_spec.rb