Sha256: 377569fd58aa25d56d7e10cb93b1e516898106e566863432f6a25196c76acf70

Contents?: true

Size: 1.76 KB

Versions: 2

Compression:

Stored size: 1.76 KB

Contents

require 'spec_helper'

describe Restforce::Middleware::Authentication do
  let(:app)        { double('app')            }
  let(:env)        { { }  }
  let(:options)    { { host: 'login.salesforce.com' } }
  let(:middleware) { described_class.new app, nil, options }

  describe '.authenticate!' do
    it 'raises an error' do
      expect {
        middleware.authenticate!
      }.to raise_error RuntimeError, 'must subclass'
    end
  end

  describe '.call' do
    context 'when all is good' do
      before do
        app.should_receive(:call).once
      end

      it 'calls the next middlware' do
        middleware.call(env)
      end
    end

    context 'when an exception is thrown' do
      before do
        app.should_receive(:call).once.and_raise(Restforce::UnauthorizedError.new('something bad'))
        middleware.should_receive(:authenticate!)
        app.should_receive(:call).once
      end

      it 'attempts to authenticate' do
        middleware.call(env)
      end
    end
  end

  describe '.connection' do
    subject { middleware.connection }

    its(:url_prefix) { should eq URI.parse('https://login.salesforce.com') }

    describe '.builder' do
      subject { middleware.connection.builder }

      context 'with logging disabled' do
        before do
          Restforce.stub!(:log?).and_return(false)
        end

        its(:handlers) { should include FaradayMiddleware::ParseJson, Faraday::Adapter::NetHttp }
        its(:handlers) { should_not include Faraday::Response::Logger  }
      end

      context 'with logging enabled' do
        before do
          Restforce.stub!(:log?).and_return(true)
        end

        its(:handlers) { should include FaradayMiddleware::ParseJson, Faraday::Response::Logger, Faraday::Adapter::NetHttp }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
restforce-0.0.2 spec/lib/middleware/authentication_spec.rb
restforce-0.0.1 spec/lib/middleware/authentication_spec.rb