omniauth-angellist 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MjFiNWM0NjhlYTExMzllZDczM2VkMmQzNWIwZmIwNGY4ZmY1MzJiYg==
5
- data.tar.gz: !binary |-
6
- ZmVhMjg0NjMzNTE3NmJjYTExZGFjZjNhNmJjNDE0YjBhYzg0NmRlYg==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MjRlN2MyZWNmNjk1MGVkNWFhZjMxZDY4MDc3M2UzNDc3YWFmYTU3YjljMzdj
10
- MzI2MzlkOWM4YjBhMjg1Y2MyNDgwZjVlNmJkODkyZDI2MGMwYjU3Mzg2ZmUy
11
- OGUyMDg3ZWVjNmRkMWU0YmJiYWU2MWY0YjRjOWRjNTkyMzg4MGM=
12
- data.tar.gz: !binary |-
13
- NmI5MWU1OWFjMWU3YjZlODQ3NGY1YWU3MDA2NGFkYTI0OWE1NGFlYzc5Y2Qx
14
- ZmRiMjg3OWNlN2E0MTcyY2E3MjhkZTRkYWQ5MTVkOTM0MTg4MjUzMjliNTUy
15
- MTczY2JjMGRmZTgyY2ViMGFmZTM0N2M1YTJjNzFiN2RjYWI0Zjg=
2
+ SHA1:
3
+ metadata.gz: 5d02de312e74a1c39067c64ec3795cce577d54e1
4
+ data.tar.gz: 461c3811dd49d2676db0b94c6b9416195b43bdad
5
+ SHA512:
6
+ metadata.gz: 3575930f7915ae7b4c22d559da759e184ded99fe4dc0e36aa34a511604072bcb192c0aa5e49d87bf52ed2e8ef318adf358eb41404b7bd3f4fc5017789dcdc349
7
+ data.tar.gz: 767c0b1577b289ffe97e83f9df7b2b79ccef1f1e88963642491d5664d6fec051bce2334c017eb9af277f3124399164f7f9f002e4997acbdbc4b9f9c3671ba971
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module AngelList
3
- VERSION = "0.0.5"
3
+ VERSION = "0.0.6"
4
4
  end
5
5
  end
@@ -25,7 +25,7 @@ module OmniAuth
25
25
  uid { raw_info['id'] }
26
26
 
27
27
  info do
28
- {
28
+ prune!({
29
29
  "name" => raw_info["name"],
30
30
  "email" => raw_info["email"],
31
31
  "bio" => raw_info["bio"],
@@ -40,13 +40,25 @@ module OmniAuth
40
40
  "roles" => raw_info["roles"],
41
41
  "angellist_url" => raw_info["angellist_url"],
42
42
  "image" => raw_info["image"],
43
- "skills" => raw_info["skills"],
44
- "scopes" => raw_info["scopes"]
45
- }
43
+ "skills" => raw_info["skills"]
44
+ })
45
+ end
46
+
47
+ credentials do
48
+ hash = {'token' => access_token.token}
49
+ hash.merge!('refresh_token' => access_token.refresh_token) if access_token.expires? && access_token.refresh_token
50
+ hash.merge!('expires_at' => access_token.expires_at) if access_token.expires?
51
+ hash.merge!('expires' => access_token.expires?)
52
+ hash.merge!('scope' => raw_info["scopes"] ? raw_info["scopes"].join(" ") : nil)
53
+ prune!(hash)
46
54
  end
47
55
 
48
56
  def raw_info
49
- @raw_info ||= access_token.get('https://api.angel.co/1/me').parsed
57
+ unless skip_info?
58
+ @raw_info ||= access_token.get('https://api.angel.co/1/me').parsed
59
+ else
60
+ {}
61
+ end
50
62
  end
51
63
 
52
64
  def authorize_params
@@ -63,8 +75,16 @@ module OmniAuth
63
75
  params[:scope] ||= DEFAULT_SCOPE
64
76
  end
65
77
  end
78
+
79
+ private
80
+ def prune!(hash)
81
+ hash.delete_if do |_, value|
82
+ prune!(value) if value.is_a?(Hash)
83
+ value.nil? || (value.respond_to?(:empty?) && value.empty?)
84
+ end
85
+ end
66
86
  end
67
87
  end
68
88
  end
69
89
 
70
- OmniAuth.config.add_camelization 'angellist', 'AngelList'
90
+ OmniAuth.config.add_camelization 'angellist', 'AngelList'
@@ -7,8 +7,41 @@ describe OmniAuth::Strategies::AngelList do
7
7
  @request.stub(:params) { {} }
8
8
  @client_id = '123'
9
9
  @client_secret = 'afalsf'
10
+ @raw_info = {
11
+ 'name' => 'Sebastian Rabuini',
12
+ 'email' => 'sebas@wasabit.com.ar',
13
+ 'bio' => 'Sebas',
14
+ 'blog_url' => 'sebas_blog',
15
+ 'online_bio_url' => 'http://wasabitlabs.com',
16
+ 'twitter_url' => 'http://twitter.com/#!/sebasr',
17
+ 'facebook_url' => 'http://www.facebook.com/sebastian.rabuini',
18
+ 'linkedin_url' => 'http://www.linkedin.com/in/srabuini',
19
+ 'follower_count' => 6,
20
+ 'investor' => false,
21
+ 'locations' => [
22
+ {'id' => 1963, 'tag_type' => 'LocationTag', 'name' => 'buenos aires',
23
+ 'display_name' => 'Buenos Aires',
24
+ 'angellist_url' => 'https://angel.co/buenos-aires'}
25
+ ],
26
+ 'roles' => [
27
+ {'id' => 14726, 'tag_type' => 'RoleTag', 'name' => 'developer',
28
+ 'display_name' => 'Developer',
29
+ 'angellist_url' => 'https://angel.co/developer'},
30
+ {'id' => 14725, 'tag_type' => 'RoleTag', 'name' => 'entrepreneur',
31
+ 'display_name' => 'Entrepreneur',
32
+ 'angellist_url' => 'https://angel.co/entrepreneur-1'}
33
+ ],
34
+ 'skills' => [
35
+ {"id" => 82532, "tag_type" => "SkillTag", "name" => "ruby on rails",
36
+ "display_name" => "Ruby on Rails",
37
+ "angellist_url" => "https://angel.co/ruby-on-rails-1"}
38
+ ],
39
+ 'scopes' => ["email","comment","message","talent"],
40
+ 'angellist_url' => 'https://angel.co/sebasr',
41
+ 'image' => 'https://s3.amazonaws.com/photos.angel.co/users/90585-medium_jpg?1327684569'
42
+ }
10
43
  end
11
-
44
+
12
45
  subject do
13
46
  args = [@client_id, @client_secret, @options].compact
14
47
  OmniAuth::Strategies::AngelList.new(nil, *args).tap do |strategy|
@@ -34,42 +67,9 @@ describe OmniAuth::Strategies::AngelList do
34
67
 
35
68
  describe '#info' do
36
69
  before :each do
37
- @raw_info = {
38
- 'name' => 'Sebastian Rabuini',
39
- 'email' => 'sebas@wasabit.com.ar',
40
- 'bio' => 'Sebas',
41
- 'blog_url' => 'sebas_blog',
42
- 'online_bio_url' => 'http://wasabitlabs.com',
43
- 'twitter_url' => 'http://twitter.com/#!/sebasr',
44
- 'facebook_url' => 'http://www.facebook.com/sebastian.rabuini',
45
- 'linkedin_url' => 'http://www.linkedin.com/in/srabuini',
46
- 'follower_count' => 6,
47
- 'investor' => false,
48
- 'locations' => [
49
- {'id' => 1963, 'tag_type' => 'LocationTag', 'name' => 'buenos aires',
50
- 'display_name' => 'Buenos Aires',
51
- 'angellist_url' => 'https://angel.co/buenos-aires'}
52
- ],
53
- 'roles' => [
54
- {'id' => 14726, 'tag_type' => 'RoleTag', 'name' => 'developer',
55
- 'display_name' => 'Developer',
56
- 'angellist_url' => 'https://angel.co/developer'},
57
- {'id' => 14725, 'tag_type' => 'RoleTag', 'name' => 'entrepreneur',
58
- 'display_name' => 'Entrepreneur',
59
- 'angellist_url' => 'https://angel.co/entrepreneur-1'}
60
- ],
61
- 'skills' => [
62
- {"id" => 82532, "tag_type" => "SkillTag", "name" => "ruby on rails",
63
- "display_name" => "Ruby on Rails",
64
- "angellist_url" => "https://angel.co/ruby-on-rails-1"}
65
- ],
66
- 'scopes' => ["email","comment","message","talent"],
67
- 'angellist_url' => 'https://angel.co/sebasr',
68
- 'image' => 'https://s3.amazonaws.com/photos.angel.co/users/90585-medium_jpg?1327684569'
69
- }
70
70
  subject.stub(:raw_info) { @raw_info }
71
71
  end
72
-
72
+
73
73
  context 'when data is present in raw info' do
74
74
  it 'returns the combined name' do
75
75
  subject.info['name'].should eq('Sebastian Rabuini')
@@ -78,7 +78,7 @@ describe OmniAuth::Strategies::AngelList do
78
78
  it 'returns the bio' do
79
79
  subject.info['bio'].should eq('Sebas')
80
80
  end
81
-
81
+
82
82
  it 'returns the image' do
83
83
  subject.info['image'].should eq(@raw_info['image'])
84
84
  end
@@ -87,10 +87,6 @@ describe OmniAuth::Strategies::AngelList do
87
87
  subject.info['email'].should eq('sebas@wasabit.com.ar')
88
88
  end
89
89
 
90
- it "return scopes" do
91
- subject.info['scopes'].should eq(["email","comment","message","talent"])
92
- end
93
-
94
90
  it "return skills" do
95
91
  subject.info['skills'].first['name'].should eq("ruby on rails")
96
92
  end
@@ -106,34 +102,38 @@ describe OmniAuth::Strategies::AngelList do
106
102
  subject.authorize_params['scope'].should eq('email')
107
103
  end
108
104
  end
109
-
105
+
110
106
  describe '#credentials' do
111
107
  before :each do
112
108
  @access_token = double('OAuth2::AccessToken')
113
- @access_token.stub(:token)
109
+ @access_token.stub(:token) { '123' } # Token is always required
114
110
  @access_token.stub(:expires?)
115
111
  @access_token.stub(:expires_at)
116
112
  @access_token.stub(:refresh_token)
117
113
  subject.stub(:access_token) { @access_token }
114
+ subject.stub(:raw_info) { @raw_info }
118
115
  end
119
-
116
+
120
117
  it 'returns a Hash' do
121
118
  subject.credentials.should be_a(Hash)
122
119
  end
123
-
120
+
124
121
  it 'returns the token' do
125
- @access_token.stub(:token) { '123' }
126
122
  subject.credentials['token'].should eq('123')
127
123
  end
128
-
124
+
125
+ it "return scopes" do
126
+ subject.credentials['scope'].should eq("email comment message talent")
127
+ end
128
+
129
129
  it 'returns the expiry status' do
130
130
  @access_token.stub(:expires?) { true }
131
131
  subject.credentials['expires'].should eq(true)
132
-
132
+
133
133
  @access_token.stub(:expires?) { false }
134
134
  subject.credentials['expires'].should eq(false)
135
135
  end
136
-
136
+
137
137
  it 'returns the refresh token and expiry time when expiring' do
138
138
  ten_mins_from_now = (Time.now + 360).to_i
139
139
  @access_token.stub(:expires?) { true }
@@ -142,14 +142,14 @@ describe OmniAuth::Strategies::AngelList do
142
142
  subject.credentials['refresh_token'].should eq('321')
143
143
  subject.credentials['expires_at'].should eq(ten_mins_from_now)
144
144
  end
145
-
145
+
146
146
  it 'does not return the refresh token when it is nil and expiring' do
147
147
  @access_token.stub(:expires?) { true }
148
148
  @access_token.stub(:refresh_token) { nil }
149
149
  subject.credentials['refresh_token'].should be_nil
150
150
  subject.credentials.should_not have_key('refresh_token')
151
151
  end
152
-
152
+
153
153
  it 'does not return the refresh token when not expiring' do
154
154
  @access_token.stub(:expires?) { false }
155
155
  @access_token.stub(:refresh_token) { 'XXX' }
@@ -157,4 +157,4 @@ describe OmniAuth::Strategies::AngelList do
157
157
  subject.credentials.should_not have_key('refresh_token')
158
158
  end
159
159
  end
160
- end
160
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-angellist
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Rabuini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-08 00:00:00.000000000 Z
11
+ date: 2013-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth-oauth2
@@ -42,42 +42,42 @@ dependencies:
42
42
  name: rack-test
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: simplecov
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: webmock
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: AngelList OAuth strategy for OmniAuth
@@ -107,12 +107,12 @@ require_paths:
107
107
  - lib
108
108
  required_ruby_version: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - ! '>='
110
+ - - '>='
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ! '>='
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  requirements: []