diff --git a/lib/omniauth/strategies/github.rb b/lib/omniauth/strategies/github.rb index c60b2d1..6e18276 100644 --- a/lib/omniauth/strategies/github.rb +++ b/lib/omniauth/strategies/github.rb @@ -39,7 +39,7 @@ def authorize_params end extra do - {:raw_info => raw_info, :all_emails => emails} + {:raw_info => raw_info, :all_emails => emails, :scope => scope } end def raw_info @@ -51,6 +51,10 @@ def email (email_access_allowed?) ? primary_email : raw_info['email'] end + def scope + access_token['scope'] + end + def primary_email primary = emails.find{ |i| i['primary'] && i['verified'] } primary && primary['email'] || nil diff --git a/spec/omniauth/strategies/github_spec.rb b/spec/omniauth/strategies/github_spec.rb index 302ee61..da23ea9 100644 --- a/spec/omniauth/strategies/github_spec.rb +++ b/spec/omniauth/strategies/github_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe OmniAuth::Strategies::GitHub do - let(:access_token) { instance_double('AccessToken', :options => {}) } + let(:access_token) { instance_double('AccessToken', :options => {}, :[] => 'user') } let(:parsed_response) { instance_double('ParsedResponse') } let(:response) { instance_double('Response', :parsed => parsed_response) } @@ -150,6 +150,12 @@ end end + context '#extra.scope' do + it 'returns the scope on the returned access_token' do + expect(subject.scope).to eq('user') + end + end + describe '#callback_url' do it 'is a combination of host, script name, and callback path' do allow(subject).to receive(:full_host).and_return('https://example.com')