Sha256: d4685740c6dff366f8133d5461f40a00be272892b389d4aa5b7142bd73823464

Contents?: true

Size: 1.83 KB

Versions: 5

Compression:

Stored size: 1.83 KB

Contents

# frozen_string_literal: true

require "spec_helper"

describe Doorkeeper::Server do
  let(:fake_class) { double :fake_class }

  subject do
    described_class.new
  end

  describe ".authorization_request" do
    it "raises error when strategy does not exist" do
      expect do
        subject.authorization_request(:duh)
      end.to raise_error(Doorkeeper::Errors::InvalidAuthorizationStrategy)
    end

    it "raises error when strategy does not match phase" do
      expect do
        subject.token_request(:code)
      end.to raise_error(Doorkeeper::Errors::InvalidTokenStrategy)
    end

    context "when only Authorization Code strategy is enabled" do
      before do
        allow(Doorkeeper.configuration)
          .to receive(:grant_flows)
          .and_return(["authorization_code"])
      end

      it "raises error when using the disabled Implicit strategy" do
        expect do
          subject.authorization_request(:token)
        end.to raise_error(Doorkeeper::Errors::InvalidAuthorizationStrategy)
      end

      it "raises error when using the disabled Client Credentials strategy" do
        expect do
          subject.token_request(:client_credentials)
        end.to raise_error(Doorkeeper::Errors::InvalidTokenStrategy)
      end
    end

    it "builds the request with selected strategy" do
      stub_const "Doorkeeper::Request::Code", fake_class
      expect(fake_class).to receive(:new).with(subject)
      subject.authorization_request :code
    end

    it "builds the request with composite strategy name" do
      allow(Doorkeeper.configuration)
        .to receive(:authorization_response_types)
        .and_return(["id_token token"])

      stub_const "Doorkeeper::Request::IdTokenToken", fake_class
      expect(fake_class).to receive(:new).with(subject)
      subject.authorization_request "id_token token"
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
doorkeeper-5.1.2 spec/lib/server_spec.rb
doorkeeper-5.1.1 spec/lib/server_spec.rb
doorkeeper-5.2.0.rc2 spec/lib/server_spec.rb
doorkeeper-5.2.0.rc1 spec/lib/server_spec.rb
doorkeeper-5.1.0 spec/lib/server_spec.rb