spec/omniauth/strategies/linkedin_spec.rb in omniauth-linkedin-oauth2-0.1.5 vs spec/omniauth/strategies/linkedin_spec.rb in omniauth-linkedin-oauth2-0.2.5

- old
+ new

@@ -3,96 +3,119 @@ describe OmniAuth::Strategies::LinkedIn do subject { OmniAuth::Strategies::LinkedIn.new(nil) } it 'should add a camelization for itself' do - OmniAuth::Utils.camelize('linkedin').should == 'LinkedIn' + expect(OmniAuth::Utils.camelize('linkedin')).to eq('LinkedIn') end describe '#client' do it 'has correct LinkedIn site' do - subject.client.site.should eq('https://api.linkedin.com') + expect(subject.client.site).to eq('https://api.linkedin.com') end it 'has correct authorize url' do - subject.client.options[:authorize_url].should eq('https://www.linkedin.com/uas/oauth2/authorization?response_type=code') + expect(subject.client.options[:authorize_url]).to eq('https://www.linkedin.com/oauth/v2/authorization?response_type=code') end it 'has correct token url' do - subject.client.options[:token_url].should eq('https://www.linkedin.com/uas/oauth2/accessToken') + expect(subject.client.options[:token_url]).to eq('https://www.linkedin.com/oauth/v2/accessToken') end end describe '#callback_path' do it 'has the correct callback path' do - subject.callback_path.should eq('/auth/linkedin/callback') + expect(subject.callback_path).to eq('/auth/linkedin/callback') end end describe '#uid' do before :each do - subject.stub(:raw_info) { { 'id' => 'uid' } } + allow(subject).to receive(:raw_info) { { 'id' => 'uid' } } end it 'returns the id from raw_info' do - subject.uid.should eq('uid') + expect(subject.uid).to eq('uid') end end describe '#info' do before :each do - subject.stub(:raw_info) { {} } + allow(subject).to receive(:raw_info) { {} } end context 'and therefore has all the necessary fields' do - it { subject.info.should have_key :name } - it { subject.info.should have_key :email } - it { subject.info.should have_key :nickname } - it { subject.info.should have_key :first_name } - it { subject.info.should have_key :last_name } - it { subject.info.should have_key :location } - it { subject.info.should have_key :description } - it { subject.info.should have_key :image } - it { subject.info.should have_key :urls } + it { expect(subject.info).to have_key :name } + it { expect(subject.info).to have_key :email } + it { expect(subject.info).to have_key :nickname } + it { expect(subject.info).to have_key :first_name } + it { expect(subject.info).to have_key :last_name } + it { expect(subject.info).to have_key :location } + it { expect(subject.info).to have_key :description } + it { expect(subject.info).to have_key :image } + it { expect(subject.info).to have_key :urls } end end describe '#extra' do before :each do - subject.stub(:raw_info) { { :foo => 'bar' } } + allow(subject).to receive(:raw_info) { { :foo => 'bar' } } end - it { subject.extra['raw_info'].should eq({ :foo => 'bar' }) } + it { expect(subject.extra['raw_info']).to eq({ :foo => 'bar' }) } end describe '#access_token' do before :each do - subject.stub(:oauth2_access_token) { double('oauth2 access token', :expires_in => 3600, :expires_at => 946688400).as_null_object } + allow(subject).to receive(:oauth2_access_token) { double('oauth2 access token', :expires_in => 3600, :expires_at => 946688400).as_null_object } end - it { subject.access_token.expires_in.should eq(3600) } - it { subject.access_token.expires_at.should eq(946688400) } + it { expect(subject.access_token.expires_in).to eq(3600) } + it { expect(subject.access_token.expires_at).to eq(946688400) } end describe '#raw_info' do before :each do + access_token = double('access token') response = double('response', :parsed => { :foo => 'bar' }) - subject.stub(:access_token) { double('access token', :get => response) } + expect(access_token).to receive(:get).with("/v1/people/~:(baz,qux)?format=json").and_return(response) + + allow(subject).to receive(:option_fields) { ['baz', 'qux'] } + allow(subject).to receive(:access_token) { access_token } end it 'returns parsed response from access token' do - subject.raw_info.should eq({ :foo => 'bar' }) + expect(subject.raw_info).to eq({ :foo => 'bar' }) end end describe '#authorize_params' do describe 'scope' do before :each do subject.stub(:session => {}) end it 'sets default scope' do - subject.authorize_params['scope'].should eq('r_basicprofile r_emailaddress') + expect(subject.authorize_params['scope']).to eq('r_basicprofile r_emailaddress') end + end + end + + describe '#option_fields' do + it 'returns options fields' do + subject.stub(:options => double('options', :fields => ['foo', 'bar']).as_null_object) + expect(subject.send(:option_fields)).to eq(['foo', 'bar']) + end + + it 'http avatar image by default' do + subject.stub(:options => double('options', :fields => ['picture-url'])) + allow(subject.options).to receive(:[]).with(:secure_image_url).and_return(false) + expect(subject.send(:option_fields)).to eq(['picture-url']) + end + + it 'https avatar image if secure_image_url truthy' do + subject.stub(:options => double('options', :fields => ['picture-url'])) + allow(subject.options).to receive(:[]).with(:secure_image_url).and_return(true) + expect(subject.send(:option_fields)).to eq(['picture-url;secure=true']) end end end