github_api 0.4.7 → 0.4.8

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.
@@ -117,7 +117,7 @@ module Github
117
117
  # TODO add to core extensions
118
118
  def _extract_parameters(array)
119
119
  if array.last.is_a?(Hash) && array.last.instance_of?(Hash)
120
- pop
120
+ array.pop
121
121
  else
122
122
  {}
123
123
  end
@@ -42,7 +42,7 @@ module Github
42
42
  # @github.repos.hooks 'user-name', 'repo-name'
43
43
  # @github.repos.hooks 'user-name', 'repo-name' { |hook| ... }
44
44
  #
45
- def hooks(user_name=nil, repo_name=nil, params={})
45
+ def hooks(user_name, repo_name, params={})
46
46
  _update_user_repo_params(user_name, repo_name)
47
47
  _validate_user_repo_params(user, repo) unless user? && repo?
48
48
  _normalize_params_keys(params)
@@ -9,9 +9,13 @@ module Github
9
9
  # = Examples
10
10
  # @github = Github.new :oauth_token => '...'
11
11
  # @github.users.emails
12
+ # @github.users.emails { |email| ... }
12
13
  #
13
14
  def emails(params={})
14
- get("/user/emails", params)
15
+ _normalize_params_keys(params)
16
+ response = get("/user/emails", params)
17
+ return response unless block_given?
18
+ response.each { |el| yield el }
15
19
  end
16
20
 
17
21
  # Add email address(es) for the authenticated user
@@ -25,7 +29,8 @@ module Github
25
29
  #
26
30
  def add_email(*args)
27
31
  params = _extract_parameters(args)
28
- params['data'] = [args].flatten
32
+ _normalize_params_keys(params)
33
+ params['data'] = [args].flatten if args
29
34
  post("/user/emails", params)
30
35
  end
31
36
 
@@ -38,8 +43,9 @@ module Github
38
43
  # @github = Github.new :oauth_token => '...'
39
44
  # @github.users.delete_email "octocat@github.com", "support@github.com"
40
45
  #
41
- def add_email(*args)
46
+ def delete_email(*args)
42
47
  params = _extract_parameters(args)
48
+ _normalize_params_keys(params)
43
49
  params['data'] = [args].flatten
44
50
  delete("/user/emails", params)
45
51
  end
@@ -13,12 +13,13 @@ module Github
13
13
  # @github.users.public_keys
14
14
  # @github.users.public_keys { |key| ... }
15
15
  #
16
- def public_keys(params={})
16
+ def keys(params={})
17
17
  _normalize_params_keys(params)
18
18
  response = get("/user/keys", params)
19
19
  return response unless block_given?
20
20
  response.each { |el| yield el }
21
21
  end
22
+ alias :public_keys :keys
22
23
 
23
24
  # Get a single pulic key for the authenticated user
24
25
  #
@@ -26,11 +27,12 @@ module Github
26
27
  # @github = Github.new :oauth_token => '...'
27
28
  # @github.users.public_key 'key-id'
28
29
  #
29
- def public_key(key_id, params={})
30
+ def key(key_id, params={})
30
31
  _validate_presence_of key_id
31
32
  _normalize_params_keys(params)
32
33
  get("/user/keys/#{key_id}", params)
33
34
  end
35
+ alias :public_key :key
34
36
 
35
37
  # Create a public key for the authenticated user
36
38
  #
@@ -4,7 +4,7 @@ module Github
4
4
  module VERSION
5
5
  MAJOR = 0
6
6
  MINOR = 4
7
- PATCH = 7
7
+ PATCH = 8
8
8
  BUILD = nil
9
9
 
10
10
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.');
@@ -4,7 +4,8 @@ describe Github::Repos::Commits do
4
4
  let(:github) { Github.new }
5
5
  let(:user) { 'peter-murach' }
6
6
  let(:repo) { 'github' }
7
- after { github.user, github.repo = nil, nil }
7
+
8
+ after { github.user, github.repo, github.oauth_token = nil, nil, nil }
8
9
 
9
10
  describe "commits" do
10
11
  context "resource found" do
@@ -27,7 +27,6 @@ describe Github::Repos::Hooks do
27
27
  end
28
28
 
29
29
  it "should fail to get resource without username" do
30
- github.user, github.repo = nil, nil
31
30
  expect { github.repos.hooks }.to raise_error(ArgumentError)
32
31
  end
33
32
 
@@ -1,5 +1,109 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Github::Users::Emails, :type => :base do
4
- pending
3
+ describe Github::Users::Emails do
4
+ let(:github) { Github.new }
5
+ let(:email) { "octocat@github.com" }
6
+
7
+ before { github.oauth_token = OAUTH_TOKEN }
8
+ after { reset_authentication_for github }
9
+
10
+ describe "#emails" do
11
+ context "resource found for an authenticated user" do
12
+ before do
13
+ stub_get("/user/emails").
14
+ with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
15
+ to_return(:body => fixture('users/emails.json'),
16
+ :status => 200,
17
+ :headers => {:content_type => "application/json; charset=utf-8"})
18
+ end
19
+
20
+ it "should get the resources" do
21
+ github.users.emails
22
+ a_get("/user/emails").
23
+ with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
24
+ should have_been_made
25
+ end
26
+
27
+ it "should return resource" do
28
+ emails = github.users.emails
29
+ emails.should be_an Array
30
+ emails.should have(2).items
31
+ end
32
+
33
+ it "should get emails information" do
34
+ emails = github.users.emails
35
+ emails.first.should == email
36
+ end
37
+
38
+ it "should yield to a block" do
39
+ github.users.should_receive(:emails).and_yield('web')
40
+ github.users.emails { |param| 'web' }
41
+ end
42
+ end
43
+
44
+ context "resource not found for a user" do
45
+ before do
46
+ stub_get("/user/emails").
47
+ with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
48
+ to_return(:body => "", :status => [404, "Not Found"])
49
+ end
50
+
51
+ it "should return 404 with a message 'Not Found'" do
52
+ expect {
53
+ github.users.emails
54
+ }.to raise_error(Github::Error::NotFound)
55
+ end
56
+ end
57
+ end # emails
58
+
59
+ context '#add_email' do
60
+ let(:params) { { :per_page => 21, :page => 1 }}
61
+
62
+ before do
63
+ stub_post("/user/emails").
64
+ with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
65
+ to_return(:body => fixture('users/emails.json'),
66
+ :status => 200,
67
+ :headers => {:content_type => "application/json; charset=utf-8"})
68
+ end
69
+
70
+ it 'extracts request parameters and email data' do
71
+ github.users.should_receive(:post).
72
+ with("/user/emails", { "per_page" => 21, "page" => 1, "data" => [email] })
73
+ github.users.add_email email, params
74
+ end
75
+
76
+ it 'submits request successfully' do
77
+ github.users.add_email email
78
+ a_post("/user/emails").
79
+ with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
80
+ should have_been_made
81
+ end
82
+ end # add_email
83
+
84
+ context '#delete_email' do
85
+ let(:params) { { :per_page => 21, :page => 1 }}
86
+
87
+ before do
88
+ stub_delete("/user/emails").
89
+ with(:query => { :access_token => "#{OAUTH_TOKEN}", :data => email}).
90
+ to_return(:body => fixture('users/emails.json'),
91
+ :status => 200,
92
+ :headers => {:content_type => "application/json; charset=utf-8"})
93
+ end
94
+
95
+ it 'extracts request parameters and email data' do
96
+ github.users.should_receive(:delete).
97
+ with("/user/emails", { "per_page" => 21, "page" => 1, "data" => [email] })
98
+ github.users.delete_email email, params
99
+ end
100
+
101
+ it 'submits request successfully' do
102
+ github.users.delete_email email
103
+ a_delete("/user/emails").
104
+ with(:query => { :access_token => "#{OAUTH_TOKEN}", :data => email } ).
105
+ should have_been_made
106
+ end
107
+ end # delete_email
108
+
5
109
  end # Github::Users::Emails
@@ -1,5 +1,252 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Github::Users::Keys, :type => :base do
4
- pending
3
+ describe Github::Users::Keys do
4
+ let(:github) { Github.new }
5
+ let(:key_id) { 1 }
6
+
7
+ before { github.oauth_token = OAUTH_TOKEN }
8
+ after { reset_authentication_for github }
9
+
10
+ describe "#keys" do
11
+ context "resource found for an authenticated user" do
12
+ before do
13
+ stub_get("/user/keys").
14
+ with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
15
+ to_return(:body => fixture('users/keys.json'),
16
+ :status => 200,
17
+ :headers => {:content_type => "application/json; charset=utf-8"})
18
+ end
19
+
20
+ it "should get the resources" do
21
+ github.users.keys
22
+ a_get("/user/keys").
23
+ with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
24
+ should have_been_made
25
+ end
26
+
27
+ it "should return resource" do
28
+ keys = github.users.keys
29
+ keys.should be_an Array
30
+ keys.should have(1).item
31
+ end
32
+
33
+ it "should get keys information" do
34
+ keys = github.users.keys
35
+ keys.first.id.should == key_id
36
+ end
37
+
38
+ it "should yield to a block" do
39
+ github.users.should_receive(:keys).and_yield('web')
40
+ github.users.keys { |param| 'web' }
41
+ end
42
+ end
43
+
44
+ context "resource not found for a user" do
45
+ before do
46
+ stub_get("/user/keys").
47
+ with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
48
+ to_return(:body => "", :status => [404, "Not Found"])
49
+ end
50
+
51
+ it "should return 404 with a message 'Not Found'" do
52
+ expect {
53
+ github.users.keys
54
+ }.to raise_error(Github::Error::NotFound)
55
+ end
56
+ end
57
+ end # keys
58
+
59
+ describe "#key" do
60
+ context "resource found for an authenticated user" do
61
+ before do
62
+ stub_get("/user/keys/#{key_id}").
63
+ with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
64
+ to_return(:body => fixture('users/key.json'),
65
+ :status => 200,
66
+ :headers => {:content_type => "application/json; charset=utf-8"})
67
+ end
68
+
69
+ it "should fail to get resource without key id" do
70
+ expect { github.users.key nil }.to raise_error(ArgumentError)
71
+ end
72
+
73
+ it "should get the resource" do
74
+ github.users.key key_id
75
+ a_get("/user/keys/#{key_id}").
76
+ with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
77
+ should have_been_made
78
+ end
79
+
80
+ it "should get public key information" do
81
+ key = github.users.key key_id
82
+ key.id.should == key_id
83
+ key.title.should == 'octocat@octomac'
84
+ end
85
+
86
+ it "should return mash" do
87
+ key = github.users.key key_id
88
+ key.should be_a Hashie::Mash
89
+ end
90
+ end
91
+
92
+ context "resource not found" do
93
+ before do
94
+ stub_get("/user/keys/#{key_id}").
95
+ with(:query => { :access_token => "#{OAUTH_TOKEN}"}).
96
+ to_return(:body => fixture('users/key.json'),
97
+ :status => 404,
98
+ :headers => {:content_type => "application/json; charset=utf-8"})
99
+ end
100
+
101
+ it "should fail to retrive resource" do
102
+ expect {
103
+ github.users.key key_id
104
+ }.to raise_error(Github::Error::NotFound)
105
+ end
106
+ end
107
+ end # key
108
+
109
+ describe "create_key" do
110
+ let(:inputs) {
111
+ {
112
+ :title => "octocat@octomac",
113
+ :key => "ssh-rsa AAA...",
114
+ :unrelated => true
115
+ }
116
+ }
117
+
118
+ context "resouce created" do
119
+ before do
120
+ stub_post("/user/keys?access_token=#{OAUTH_TOKEN}").
121
+ with(:body => JSON.generate(inputs.except(:unrelated))).
122
+ to_return(:body => fixture('users/key.json'),
123
+ :status => 201,
124
+ :headers => {:content_type => "application/json; charset=utf-8"})
125
+ end
126
+
127
+ it "should create resource successfully" do
128
+ github.users.create_key inputs
129
+ a_post("/user/keys?access_token=#{OAUTH_TOKEN}").
130
+ with(inputs).should have_been_made
131
+ end
132
+
133
+ it "should return the resource" do
134
+ key = github.users.create_key inputs
135
+ key.should be_a Hashie::Mash
136
+ end
137
+
138
+ it "should get the key information" do
139
+ key = github.users.create_key inputs
140
+ key.title.should == 'octocat@octomac'
141
+ end
142
+ end
143
+
144
+ context "fail to create resource" do
145
+ before do
146
+ stub_post("/user/keys?access_token=#{OAUTH_TOKEN}").with(inputs).
147
+ to_return(:body => fixture('users/key.json'),
148
+ :status => 404,
149
+ :headers => {:content_type => "application/json; charset=utf-8"})
150
+ end
151
+
152
+ it "should fail to retrieve resource" do
153
+ expect {
154
+ github.users.create_key inputs
155
+ }.to raise_error(Github::Error::NotFound)
156
+ end
157
+ end
158
+ end # create_key
159
+
160
+ describe "#update_key" do
161
+ let(:inputs) {
162
+ {
163
+ :title => "octocat@octomac",
164
+ :key => "ssh-rsa AAA...",
165
+ :unrelated => true
166
+ }
167
+ }
168
+
169
+ context "resouce updated" do
170
+ before do
171
+ stub_patch("/user/keys/#{key_id}?access_token=#{OAUTH_TOKEN}").
172
+ with(:body => JSON.generate(inputs.except(:unrelated))).
173
+ to_return(:body => fixture('users/key.json'),
174
+ :status => 201,
175
+ :headers => {:content_type => "application/json; charset=utf-8"})
176
+ end
177
+
178
+ it "should fail to get resource without key id" do
179
+ expect { github.users.update_key nil }.to raise_error(ArgumentError)
180
+ end
181
+
182
+ it "should create resource successfully" do
183
+ github.users.update_key key_id, inputs
184
+ a_patch("/user/keys/#{key_id}?access_token=#{OAUTH_TOKEN}").
185
+ with(inputs).should have_been_made
186
+ end
187
+
188
+ it "should return the resource" do
189
+ key = github.users.update_key key_id, inputs
190
+ key.should be_a Hashie::Mash
191
+ end
192
+
193
+ it "should get the key information" do
194
+ key = github.users.update_key key_id, inputs
195
+ key.title.should == 'octocat@octomac'
196
+ end
197
+ end
198
+
199
+ context "fail to update resource" do
200
+ before do
201
+ stub_patch("/user/keys/#{key_id}?access_token=#{OAUTH_TOKEN}").
202
+ with(inputs).
203
+ to_return(:body => fixture('users/key.json'),
204
+ :status => 404,
205
+ :headers => {:content_type => "application/json; charset=utf-8"})
206
+ end
207
+
208
+ it "should fail to retrieve resource" do
209
+ expect {
210
+ github.users.update_key key_id, inputs
211
+ }.to raise_error(Github::Error::NotFound)
212
+ end
213
+ end
214
+ end # update_key
215
+
216
+ describe "#delete_key" do
217
+ context "resouce deleted" do
218
+ before do
219
+ stub_delete("/user/keys/#{key_id}?access_token=#{OAUTH_TOKEN}").
220
+ to_return(:body => fixture('users/key.json'),
221
+ :status => 204,
222
+ :headers => {:content_type => "application/json; charset=utf-8"})
223
+ end
224
+
225
+ it "should fail to get resource without key id" do
226
+ expect { github.users.delete_key nil }.to raise_error(ArgumentError)
227
+ end
228
+
229
+ it "should create resource successfully" do
230
+ github.users.delete_key key_id
231
+ a_delete("/user/keys/#{key_id}?access_token=#{OAUTH_TOKEN}").
232
+ should have_been_made
233
+ end
234
+ end
235
+
236
+ context "fail to delete resource" do
237
+ before do
238
+ stub_delete("/user/keys/#{key_id}?access_token=#{OAUTH_TOKEN}").
239
+ to_return(:body => fixture('users/key.json'),
240
+ :status => 404,
241
+ :headers => {:content_type => "application/json; charset=utf-8"})
242
+ end
243
+
244
+ it "should fail to delete resource" do
245
+ expect {
246
+ github.users.delete_key key_id
247
+ }.to raise_error(Github::Error::NotFound)
248
+ end
249
+ end
250
+ end # delete_key
251
+
5
252
  end # Github::Users::Keys
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: github_api
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.4.7
5
+ version: 0.4.8
6
6
  platform: ruby
7
7
  authors:
8
8
  - Piotr Murach
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-03-11 00:00:00 +00:00
13
+ date: 2012-03-17 00:00:00 +00:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency