omniauth-github 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Rakefile CHANGED
@@ -2,10 +2,6 @@
2
2
  require "bundler/gem_tasks"
3
3
  require 'rspec/core/rake_task'
4
4
 
5
- desc 'Default: run specs.'
6
- task :default => :spec
7
-
8
- desc "Run specs"
9
5
  RSpec::Core::RakeTask.new
10
6
 
11
7
  desc 'Run specs'
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module GitHub
3
- VERSION = "1.0.2"
3
+ VERSION = "1.0.3"
4
4
  end
5
5
  end
@@ -13,7 +13,7 @@ module OmniAuth
13
13
  super
14
14
  end
15
15
 
16
- uid { raw_info['id'] }
16
+ uid { raw_info['id'].to_s }
17
17
 
18
18
  info do
19
19
  {
@@ -38,13 +38,18 @@ module OmniAuth
38
38
  end
39
39
 
40
40
  def email
41
- raw_info['email'] || emails.first
41
+ raw_info['email'] || (email_access_allowed? ? emails.first : nil)
42
42
  end
43
43
 
44
44
  def emails
45
45
  access_token.options[:mode] = :query
46
46
  @emails ||= access_token.get('/user/emails').parsed
47
47
  end
48
+
49
+ def email_access_allowed?
50
+ options['scope'] && !(options['scope'] == 'public')
51
+ end
52
+
48
53
  end
49
54
  end
50
55
  end
@@ -18,4 +18,51 @@ describe OmniAuth::Strategies::GitHub do
18
18
  subject.options.client_options.token_url.should eq('https://github.com/login/oauth/access_token')
19
19
  end
20
20
  end
21
+
22
+ context "#email_access_allowed?" do
23
+ it "should not allow email if scope is nil" do
24
+ subject.options['scope'].should be_nil
25
+ subject.should_not be_email_access_allowed
26
+ end
27
+
28
+ it "should not allow email if scope is 'public'" do
29
+ subject.options['scope'] = 'public'
30
+ subject.should_not be_email_access_allowed
31
+ end
32
+
33
+ it "should allow email if scope is user" do
34
+ subject.options['scope'] = 'user'
35
+ subject.should be_email_access_allowed
36
+ end
37
+
38
+ it "should allow email if scope is scope is a bunch of stuff" do
39
+ subject.options['scope'] = 'user,public_repo,repo,delete_repo,gist'
40
+ subject.should be_email_access_allowed
41
+ end
42
+
43
+ it "should assume email access allowed if scope is scope is something currently not documented " do
44
+ subject.options['scope'] = 'currently_not_documented'
45
+ subject.should be_email_access_allowed
46
+ end
47
+ end
48
+
49
+ context "#email" do
50
+ it "should return email from raw_info if available" do
51
+ subject.stub!(:raw_info).and_return({'email' => 'you@example.com'})
52
+ subject.email.should eq('you@example.com')
53
+ end
54
+
55
+ it "should return nil if there is no raw_info and email access is not allowed" do
56
+ subject.stub!(:raw_info).and_return({})
57
+ subject.email.should be_nil
58
+ end
59
+
60
+ it "should return the first email if there is no raw_info and email access is allowed" do
61
+ subject.stub!(:raw_info).and_return({})
62
+ subject.options['scope'] = 'user'
63
+ subject.stub!(:emails).and_return([ 'you@example.com' ])
64
+ subject.email.should eq('you@example.com')
65
+ end
66
+ end
67
+
21
68
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-github
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-06 00:00:00.000000000 Z
12
+ date: 2012-08-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: omniauth