github_api 0.5.1 → 0.5.2
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/features/cassettes/gists/gists/public_all.yml +41 -0
- data/features/cassettes/users/emails/add.yml +44 -0
- data/features/cassettes/users/emails/all.yml +44 -0
- data/features/cassettes/users/emails/delete.yml +40 -0
- data/features/gists.feature +17 -20
- data/features/gists/comments.feature +4 -4
- data/features/git_data/references.feature +6 -6
- data/features/pagination.feature +12 -12
- data/features/repos.feature +12 -12
- data/features/settings.yml +1 -0
- data/features/settings.yml.sample +1 -0
- data/features/step_definitions/common_steps.rb +12 -5
- data/features/support/settings.rb +1 -1
- data/features/support/vcr.rb +1 -0
- data/features/users/emails.feature +37 -0
- data/lib/github_api/connection.rb +2 -1
- data/lib/github_api/gists.rb +6 -7
- data/lib/github_api/issues.rb +6 -4
- data/lib/github_api/request.rb +3 -2
- data/lib/github_api/request/jsonize.rb +46 -0
- data/lib/github_api/request/oauth2.rb +19 -10
- data/lib/github_api/resource.rb +6 -0
- data/lib/github_api/users/emails.rb +3 -2
- data/lib/github_api/utils/url.rb +10 -0
- data/lib/github_api/version.rb +1 -1
- data/spec/github/gists_spec.rb +5 -5
- data/spec/github/issues_spec.rb +7 -6
- data/spec/github/request/jsonize_spec.rb +88 -0
- data/spec/github/request/oauth2_spec.rb +70 -0
- data/spec/github/users/emails_spec.rb +4 -5
- data/spec/github/utils/url_spec.rb +12 -0
- metadata +51 -43
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Github::Request::OAuth2 do
|
4
|
+
include Github::Utils::Url
|
5
|
+
|
6
|
+
def auth_header(env)
|
7
|
+
env[:request_headers]['Authorization']
|
8
|
+
end
|
9
|
+
|
10
|
+
def middleware
|
11
|
+
described_class.new(lambda { |env| env }, options)
|
12
|
+
end
|
13
|
+
|
14
|
+
def process(params={}, headers={})
|
15
|
+
env = {
|
16
|
+
:url => URI('http://example.com/?' + build_query(params)),
|
17
|
+
:request_headers => headers
|
18
|
+
}
|
19
|
+
middleware.call(env)
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'no token configured' do
|
23
|
+
let(:options) { nil }
|
24
|
+
|
25
|
+
it "doesn't add params" do
|
26
|
+
result = process(:q => 'query')
|
27
|
+
result[:url].query.should eql 'q=query'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "doesn't add headers" do
|
31
|
+
auth_header(process).should be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
it "allows for ad hoc access token" do
|
35
|
+
result = process(:q => 'query', :access_token => 'abc123')
|
36
|
+
result[:url].query.should eql 'access_token=abc123&q=query'
|
37
|
+
end
|
38
|
+
|
39
|
+
it "creates header for ad hoc access token" do
|
40
|
+
result = process(:q => 'query', :access_token => 'abc123')
|
41
|
+
auth_header(result).should eql 'Token token="abc123"'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'default token configured' do
|
46
|
+
let(:options) { 'ABC' }
|
47
|
+
|
48
|
+
it "adds access token to params" do
|
49
|
+
result = process(:q => 'query')
|
50
|
+
result[:url].query.should eql 'access_token=ABC&q=query'
|
51
|
+
end
|
52
|
+
|
53
|
+
it "creates header for access token" do
|
54
|
+
auth_header(process).should eql 'Token token="ABC"'
|
55
|
+
end
|
56
|
+
|
57
|
+
it "overrides default with explicit token" do
|
58
|
+
result = process(:q => 'query', :access_token => 'abc123')
|
59
|
+
result[:url].query.should eql 'access_token=abc123&q=query'
|
60
|
+
auth_header(result).should eql 'Token token="abc123"'
|
61
|
+
end
|
62
|
+
|
63
|
+
it "clears default token with explicit one" do
|
64
|
+
result = process(:q => 'query', :access_token => nil)
|
65
|
+
result[:url].query.should eql 'q=query&access_token'
|
66
|
+
auth_header(result).should be_nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end # Github::Request::OAuth2
|
@@ -88,22 +88,21 @@ describe Github::Users::Emails do
|
|
88
88
|
|
89
89
|
before do
|
90
90
|
stub_delete("/user/emails").
|
91
|
-
with(:query => { :access_token => "#{OAUTH_TOKEN}"
|
92
|
-
to_return(:body => fixture('users/emails.json'),
|
93
|
-
:status => 200,
|
91
|
+
with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
|
92
|
+
to_return(:body => fixture('users/emails.json'), :status => 204,
|
94
93
|
:headers => {:content_type => "application/json; charset=utf-8"})
|
95
94
|
end
|
96
95
|
|
97
96
|
it 'extracts request parameters and email data' do
|
98
97
|
github.users.emails.should_receive(:delete_request).
|
99
|
-
with("/user/emails", { "per_page" => 21, "page" => 1,
|
98
|
+
with("/user/emails", { "per_page" => 21, "page" => 1, 'data' => [email] })
|
100
99
|
github.users.emails.delete email, params
|
101
100
|
end
|
102
101
|
|
103
102
|
it 'submits request successfully' do
|
104
103
|
github.users.emails.delete email
|
105
104
|
a_delete("/user/emails").
|
106
|
-
with(:query => { :access_token => "#{OAUTH_TOKEN}"
|
105
|
+
with(:query => { :access_token => "#{OAUTH_TOKEN}" } ).
|
107
106
|
should have_been_made
|
108
107
|
end
|
109
108
|
end # delete
|
@@ -2,6 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Github::Utils::Url do
|
4
4
|
|
5
|
+
def eq_query_to(query)
|
6
|
+
parts = query.split('&')
|
7
|
+
lambda { |other| (parts & other.split('&')) == parts }
|
8
|
+
end
|
9
|
+
|
5
10
|
it 'escapes correctly' do
|
6
11
|
described_class.escape('<html>').should eql '%3Chtml%3E'
|
7
12
|
described_class.escape('a space').should eql 'a+space'
|
@@ -21,6 +26,13 @@ describe Github::Utils::Url do
|
|
21
26
|
it { described_class.parse_query("a+b=%28c%29").should eq 'a b' => '(c)' }
|
22
27
|
end
|
23
28
|
|
29
|
+
context 'builds query strings correctly' do
|
30
|
+
it { described_class.build_query("a" => "b").should eq "a=b" }
|
31
|
+
it { described_class.build_query("a" => ["b", "c"]).should eq "a=b&a=c" }
|
32
|
+
it { described_class.build_query("a" => ["b", "c"]).should eq "a=b&a=c" }
|
33
|
+
it { described_class.build_query("a" => 1, "b" => 2).should eq "a=1&b=2"}
|
34
|
+
end
|
35
|
+
|
24
36
|
context 'parse_query_for_param' do
|
25
37
|
it 'returns nil if cannot find parameter' do
|
26
38
|
described_class.parse_query_for_param("param1=a;param2=b", 'param3').
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-20 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hashie
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153991400 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,21 +21,21 @@ dependencies:
|
|
21
21
|
version: 1.2.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153991400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: faraday
|
27
|
-
requirement: &
|
27
|
+
requirement: &2153990900 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
32
|
+
version: 0.8.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2153990900
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: multi_json
|
38
|
-
requirement: &
|
38
|
+
requirement: &2153990440 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,21 +43,21 @@ dependencies:
|
|
43
43
|
version: '1.3'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2153990440
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: oauth2
|
49
|
-
requirement: &
|
49
|
+
requirement: &2153989980 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: '0.7'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2153989980
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: nokogiri
|
60
|
-
requirement: &
|
60
|
+
requirement: &2153989520 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.5.2
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2153989520
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
|
-
requirement: &
|
71
|
+
requirement: &2153989060 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2153989060
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: cucumber
|
82
|
-
requirement: &
|
82
|
+
requirement: &2153988600 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2153988600
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: yajl-ruby
|
93
|
-
requirement: &
|
93
|
+
requirement: &2153988140 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: 1.1.0
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2153988140
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: webmock
|
104
|
-
requirement: &
|
104
|
+
requirement: &2153987680 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: 1.8.0
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *2153987680
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: vcr
|
115
|
-
requirement: &
|
115
|
+
requirement: &2153987220 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 2.1.0
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *2153987220
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: simplecov
|
126
|
-
requirement: &
|
126
|
+
requirement: &2154003140 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,43 +131,43 @@ dependencies:
|
|
131
131
|
version: 0.6.1
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *2154003140
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: guard
|
137
|
-
requirement: &
|
137
|
+
requirement: &2154002760 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
|
-
- -
|
140
|
+
- - ! '>='
|
141
141
|
- !ruby/object:Gem::Version
|
142
|
-
version: 0
|
142
|
+
version: '0'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *2154002760
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: guard-rspec
|
148
|
-
requirement: &
|
148
|
+
requirement: &2154002300 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
|
-
- -
|
151
|
+
- - ! '>='
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: 0
|
153
|
+
version: '0'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *2154002300
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: guard-cucumber
|
159
|
-
requirement: &
|
159
|
+
requirement: &2154001880 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
|
-
- -
|
162
|
+
- - ! '>='
|
163
163
|
- !ruby/object:Gem::Version
|
164
|
-
version: 0
|
164
|
+
version: '0'
|
165
165
|
type: :development
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *2154001880
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
169
|
name: rake
|
170
|
-
requirement: &
|
170
|
+
requirement: &2154001460 !ruby/object:Gem::Requirement
|
171
171
|
none: false
|
172
172
|
requirements:
|
173
173
|
- - ! '>='
|
@@ -175,10 +175,10 @@ dependencies:
|
|
175
175
|
version: '0'
|
176
176
|
type: :development
|
177
177
|
prerelease: false
|
178
|
-
version_requirements: *
|
178
|
+
version_requirements: *2154001460
|
179
179
|
- !ruby/object:Gem::Dependency
|
180
180
|
name: bundler
|
181
|
-
requirement: &
|
181
|
+
requirement: &2154001040 !ruby/object:Gem::Requirement
|
182
182
|
none: false
|
183
183
|
requirements:
|
184
184
|
- - ! '>='
|
@@ -186,7 +186,7 @@ dependencies:
|
|
186
186
|
version: '0'
|
187
187
|
type: :development
|
188
188
|
prerelease: false
|
189
|
-
version_requirements: *
|
189
|
+
version_requirements: *2154001040
|
190
190
|
description: ! ' Ruby wrapper that supports all of the GitHub API v3 methods(nearly
|
191
191
|
200). It''s build in a modular way, that is, you can either instantiate the whole
|
192
192
|
api wrapper Github.new or use parts of it e.i. Github::Repos.new if working solely
|
@@ -224,6 +224,9 @@ files:
|
|
224
224
|
- features/cassettes/repos/list.yml
|
225
225
|
- features/cassettes/repos/tags.yml
|
226
226
|
- features/cassettes/repos/teams.yml
|
227
|
+
- features/cassettes/users/emails/add.yml
|
228
|
+
- features/cassettes/users/emails/all.yml
|
229
|
+
- features/cassettes/users/emails/delete.yml
|
227
230
|
- features/error_codes.feature
|
228
231
|
- features/gists/comments.feature
|
229
232
|
- features/gists.feature
|
@@ -241,6 +244,7 @@ files:
|
|
241
244
|
- features/support/helpers.rb
|
242
245
|
- features/support/settings.rb
|
243
246
|
- features/support/vcr.rb
|
247
|
+
- features/users/emails.feature
|
244
248
|
- lib/github_api/api/actions.rb
|
245
249
|
- lib/github_api/api.rb
|
246
250
|
- lib/github_api/api_factory.rb
|
@@ -304,8 +308,10 @@ files:
|
|
304
308
|
- lib/github_api/repos/watching.rb
|
305
309
|
- lib/github_api/repos.rb
|
306
310
|
- lib/github_api/request/basic_auth.rb
|
311
|
+
- lib/github_api/request/jsonize.rb
|
307
312
|
- lib/github_api/request/oauth2.rb
|
308
313
|
- lib/github_api/request.rb
|
314
|
+
- lib/github_api/resource.rb
|
309
315
|
- lib/github_api/response/helpers.rb
|
310
316
|
- lib/github_api/response/jsonize.rb
|
311
317
|
- lib/github_api/response/mashify.rb
|
@@ -438,6 +444,8 @@ files:
|
|
438
444
|
- spec/github/repos/pub_sub_hubbub_spec.rb
|
439
445
|
- spec/github/repos/watching_spec.rb
|
440
446
|
- spec/github/repos_spec.rb
|
447
|
+
- spec/github/request/jsonize_spec.rb
|
448
|
+
- spec/github/request/oauth2_spec.rb
|
441
449
|
- spec/github/request_spec.rb
|
442
450
|
- spec/github/response/helpers_spec.rb
|
443
451
|
- spec/github/result_spec.rb
|
@@ -463,7 +471,7 @@ files:
|
|
463
471
|
homepage: https://github.com/peter-murach/github
|
464
472
|
licenses: []
|
465
473
|
post_install_message: ! "\n--------------------------------------------------------------------------------\nThank
|
466
|
-
you for installing github_api-0.5.
|
474
|
+
you for installing github_api-0.5.2.\n\n*NOTE*: Version 0.5.0 introduces breaking
|
467
475
|
changes to the way github api is queried.\nThe interface has been rewritten to be
|
468
476
|
more consistent with REST verbs that\ninteract with GitHub hypermedia resources.
|
469
477
|
Thus, to list resources 'list' or 'all'\nverbs are used, to retrieve individual
|