Sha256: de12a4eae5d7b4f2829a84fc2f9d70d35a53c17cf53c238049ad5a8175920234

Contents?: true

Size: 1.94 KB

Versions: 19

Compression:

Stored size: 1.94 KB

Contents

require 'spec_helper'
require 'active_model'
require 'doorkeeper/oauth/error'
require 'doorkeeper/oauth/error_response'

module Doorkeeper::OAuth
  describe ErrorResponse do
    describe '#status' do
      it 'should have a status of unauthorized' do
        expect(subject.status).to eq(:unauthorized)
      end
    end

    describe :from_request do
      it 'has the error from request' do
        error = ErrorResponse.from_request double(error: :some_error)
        expect(error.name).to eq(:some_error)
      end

      it 'ignores state if request does not respond to state' do
        error = ErrorResponse.from_request double(error: :some_error)
        expect(error.state).to be_nil
      end

      it 'has state if request responds to state' do
        error = ErrorResponse.from_request double(error: :some_error, state: :hello)
        expect(error.state).to eq(:hello)
      end
    end

    it 'ignores empty error values' do
      subject = ErrorResponse.new(error: :some_error, state: nil)
      expect(subject.body).not_to have_key(:state)
    end

    describe '.body' do
      subject { ErrorResponse.new(name: :some_error, state: :some_state).body }

      describe '#body' do
        it { expect(subject).to have_key(:error) }
        it { expect(subject).to have_key(:error_description) }
        it { expect(subject).to have_key(:state) }
      end
    end

    describe '.headers' do
      let(:error_response) { ErrorResponse.new(name: :some_error, state: :some_state) }
      subject { error_response.headers }

      it { expect(subject).to include 'WWW-Authenticate' }

      describe "WWW-Authenticate header" do
        subject { error_response.headers["WWW-Authenticate"] }

        it { expect(subject).to include("realm=\"#{error_response.realm}\"") }
        it { expect(subject).to include("error=\"#{error_response.name}\"") }
        it { expect(subject).to include("error_description=\"#{error_response.description}\"") }
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 3 rubygems

Version Path
doorkeeper-mongodb-4.2.0 spec/lib/oauth/error_response_spec.rb
doorkeeper-sequel-1.5.0 spec/lib/oauth/error_response_spec.rb
doorkeeper-4.4.3 spec/lib/oauth/error_response_spec.rb
doorkeeper-4.4.2 spec/lib/oauth/error_response_spec.rb
doorkeeper-4.4.1 spec/lib/oauth/error_response_spec.rb
doorkeeper-4.4.0 spec/lib/oauth/error_response_spec.rb
doorkeeper-mongodb-4.1.0 spec/lib/oauth/error_response_spec.rb
doorkeeper-4.3.2 spec/lib/oauth/error_response_spec.rb
doorkeeper-4.3.1 spec/lib/oauth/error_response_spec.rb
doorkeeper-4.3.0 spec/lib/oauth/error_response_spec.rb
doorkeeper-sequel-1.4.0 spec/lib/oauth/error_response_spec.rb
doorkeeper-mongodb-4.0.1 spec/lib/oauth/error_response_spec.rb
doorkeeper-mongodb-4.0.0 spec/lib/oauth/error_response_spec.rb
doorkeeper-sequel-1.3.1 spec/lib/oauth/error_response_spec.rb
doorkeeper-sequel-1.3.0 spec/lib/oauth/error_response_spec.rb
doorkeeper-sequel-1.2.3 spec/lib/oauth/error_response_spec.rb
doorkeeper-sequel-1.2.2 spec/lib/oauth/error_response_spec.rb
doorkeeper-4.2.6 spec/lib/oauth/error_response_spec.rb
doorkeeper-4.2.5 spec/lib/oauth/error_response_spec.rb