hybridgroup-octokit 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/.document +4 -0
  2. data/.gemtest +0 -0
  3. data/.gitignore +24 -0
  4. data/.rspec +3 -0
  5. data/.travis.yml +6 -0
  6. data/Gemfile +3 -0
  7. data/LICENSE +20 -0
  8. data/README.markdown +73 -0
  9. data/Rakefile +8 -0
  10. data/changelog.markdown +42 -0
  11. data/lib/faraday/response/raise_error.rb +33 -0
  12. data/lib/octokit/client/authentication.rb +23 -0
  13. data/lib/octokit/client/commits.rb +16 -0
  14. data/lib/octokit/client/connection.rb +34 -0
  15. data/lib/octokit/client/issues.rb +60 -0
  16. data/lib/octokit/client/network.rb +15 -0
  17. data/lib/octokit/client/objects.rb +33 -0
  18. data/lib/octokit/client/organizations.rb +90 -0
  19. data/lib/octokit/client/pulls.rb +25 -0
  20. data/lib/octokit/client/repositories.rb +138 -0
  21. data/lib/octokit/client/request.rb +41 -0
  22. data/lib/octokit/client/timelines.rb +22 -0
  23. data/lib/octokit/client/users.rb +75 -0
  24. data/lib/octokit/client.rb +40 -0
  25. data/lib/octokit/configuration.rb +61 -0
  26. data/lib/octokit/repository.rb +39 -0
  27. data/lib/octokit/version.rb +3 -0
  28. data/lib/octokit.rb +53 -0
  29. data/octokit.gemspec +33 -0
  30. data/spec/faraday/response_spec.rb +34 -0
  31. data/spec/fixtures/blob.json +1 -0
  32. data/spec/fixtures/blob_metadata.json +1 -0
  33. data/spec/fixtures/blobs.json +1 -0
  34. data/spec/fixtures/branches.json +1 -0
  35. data/spec/fixtures/collaborators.json +1 -0
  36. data/spec/fixtures/comment.json +1 -0
  37. data/spec/fixtures/comments.json +1 -0
  38. data/spec/fixtures/commit.json +1 -0
  39. data/spec/fixtures/commits.json +1 -0
  40. data/spec/fixtures/contributors.json +1 -0
  41. data/spec/fixtures/delete_token.json +1 -0
  42. data/spec/fixtures/emails.json +1 -0
  43. data/spec/fixtures/followers.json +1 -0
  44. data/spec/fixtures/following.json +1 -0
  45. data/spec/fixtures/issue.json +1 -0
  46. data/spec/fixtures/issues.json +1 -0
  47. data/spec/fixtures/labels.json +1 -0
  48. data/spec/fixtures/languages.json +1 -0
  49. data/spec/fixtures/network.json +1 -0
  50. data/spec/fixtures/network_data.json +1 -0
  51. data/spec/fixtures/network_meta.json +1 -0
  52. data/spec/fixtures/organization.json +1 -0
  53. data/spec/fixtures/organizations.json +1 -0
  54. data/spec/fixtures/public_keys.json +1 -0
  55. data/spec/fixtures/pull.json +1 -0
  56. data/spec/fixtures/pulls.json +1 -0
  57. data/spec/fixtures/raw.txt +7 -0
  58. data/spec/fixtures/repositories.json +1 -0
  59. data/spec/fixtures/repository.json +1 -0
  60. data/spec/fixtures/tags.json +1 -0
  61. data/spec/fixtures/team.json +1 -0
  62. data/spec/fixtures/teams.json +1 -0
  63. data/spec/fixtures/timeline.json +1237 -0
  64. data/spec/fixtures/tree.json +1 -0
  65. data/spec/fixtures/tree_metadata.json +1 -0
  66. data/spec/fixtures/user.json +1 -0
  67. data/spec/fixtures/users.json +1 -0
  68. data/spec/fixtures/watchers.json +1 -0
  69. data/spec/helper.rb +64 -0
  70. data/spec/octokit/client/commits_spec.rb +32 -0
  71. data/spec/octokit/client/issues_spec.rb +154 -0
  72. data/spec/octokit/client/network_spec.rb +32 -0
  73. data/spec/octokit/client/objects_spec.rb +81 -0
  74. data/spec/octokit/client/organizations_spec.rb +234 -0
  75. data/spec/octokit/client/pulls_spec.rb +44 -0
  76. data/spec/octokit/client/repositories_spec.rb +331 -0
  77. data/spec/octokit/client/timelines_spec.rb +42 -0
  78. data/spec/octokit/client/users_spec.rb +274 -0
  79. data/spec/octokit/client_spec.rb +12 -0
  80. data/spec/octokit_spec.rb +15 -0
  81. data/spec/repository_spec.rb +54 -0
  82. metadata +403 -0
@@ -0,0 +1,42 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ describe Octokit::Client::Users do
5
+
6
+ describe ".timeline" do
7
+
8
+ it "should return the public timeline" do
9
+ client = Octokit::Client.new
10
+ stub_get("https://github.com/timeline.json").
11
+ to_return(:body => fixture("timeline.json"))
12
+ events = client.timeline
13
+ events.first.repository.name.should == "homebrew"
14
+ end
15
+
16
+ end
17
+
18
+ describe ".user_timeline" do
19
+
20
+ it "should return a user timeline" do
21
+ client = Octokit::Client.new
22
+ stub_get("https://github.com/sferik.json").
23
+ to_return(:body => fixture("timeline.json"))
24
+ events = client.user_timeline("sferik")
25
+ events.first.repository.name.should == "homebrew"
26
+ end
27
+
28
+ context "when authenticated" do
29
+
30
+ it "should return a user timeline" do
31
+ client = Octokit::Client.new(:login => "sferik", :token => "OU812")
32
+ stub_get("https://github.com/sferik.private.json?token=OU812").
33
+ to_return(:body => fixture("timeline.json"))
34
+ events = client.user_timeline("sferik")
35
+ events.first.repository.name.should == "homebrew"
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+
42
+ end
@@ -0,0 +1,274 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ describe Octokit::Client::Users do
5
+
6
+ before do
7
+ @client = Octokit::Client.new(:login => 'sferik')
8
+ end
9
+
10
+ describe ".search_users" do
11
+
12
+ context "with a username passed" do
13
+
14
+ it "should return matching username" do
15
+ stub_get("user/search/sferik").
16
+ to_return(:body => fixture("users.json"))
17
+ users = @client.search_users("sferik")
18
+ users.first.username.should == "sferik"
19
+ end
20
+
21
+ end
22
+
23
+ context "with an email address passed" do
24
+
25
+ it "should return matching email address" do
26
+ stub_get("user/email/sferik@gmail.com").
27
+ to_return(:body => fixture("user.json"))
28
+ user = @client.search_users("sferik@gmail.com")
29
+ user.login.should == "sferik"
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ describe ".user" do
37
+
38
+ context "with a username passed" do
39
+
40
+ it "should return the user" do
41
+ stub_get("user/show/sferik").
42
+ to_return(:body => fixture("user.json"))
43
+ user = @client.user("sferik")
44
+ user.login.should == "sferik"
45
+ end
46
+
47
+ end
48
+
49
+ context "without a username passed" do
50
+
51
+ it "should return the authenticated user" do
52
+ stub_get("user/show").
53
+ to_return(:body => fixture("user.json"))
54
+ user = @client.user
55
+ user.login.should == "sferik"
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+
62
+ describe ".update_user" do
63
+
64
+ context "with a location passed" do
65
+
66
+ it "should update the user's location" do
67
+ stub_post("user/show/sferik").
68
+ with(:values => {:location => "San Francisco"}).
69
+ to_return(:body => fixture("user.json"))
70
+ user = @client.update_user(:location => "San Francisco")
71
+ user.login.should == "sferik"
72
+ end
73
+
74
+ end
75
+
76
+ end
77
+
78
+ describe ".followers" do
79
+
80
+ context "with a username passed" do
81
+
82
+ it "should return the user's followers" do
83
+ stub_get("user/show/sferik/followers").
84
+ to_return(:body => fixture("followers.json"))
85
+ users = @client.followers("sferik")
86
+ users.first.should == "puls"
87
+ end
88
+
89
+ end
90
+
91
+ context "without a username passed" do
92
+
93
+ it "should return the user's followers" do
94
+ stub_get("user/show/sferik/followers").
95
+ to_return(:body => fixture("followers.json"))
96
+ users = @client.followers
97
+ users.first.should == "puls"
98
+ end
99
+
100
+ end
101
+
102
+ end
103
+
104
+ describe ".following" do
105
+
106
+ context "with a username passed" do
107
+
108
+ it "should return the user's following" do
109
+ stub_get("user/show/sferik/following").
110
+ to_return(:body => fixture("following.json"))
111
+ users = @client.following("sferik")
112
+ users.first.should == "rails"
113
+ end
114
+
115
+ end
116
+
117
+ context "without a username passed" do
118
+
119
+ it "should return the user's following" do
120
+ stub_get("user/show/sferik/following").
121
+ to_return(:body => fixture("following.json"))
122
+ users = @client.following
123
+ users.first.should == "rails"
124
+ end
125
+
126
+ end
127
+
128
+ end
129
+
130
+ describe ".follows?" do
131
+
132
+ context "with one user following another" do
133
+
134
+ it "should return true" do
135
+ stub_get("user/show/sferik/following").
136
+ to_return(:body => fixture("following.json"))
137
+ follows = @client.follows?("sferik", "pengwynn")
138
+ follows.should be_true
139
+ end
140
+
141
+ end
142
+
143
+ context "with one user not following another" do
144
+
145
+ it "should return false" do
146
+ stub_get("user/show/sferik/following").
147
+ to_return(:body => fixture("following.json"))
148
+ follows = @client.follows?("sferik", "dogbrainz")
149
+ follows.should be_false
150
+ end
151
+
152
+ end
153
+
154
+ end
155
+
156
+ describe ".follow" do
157
+
158
+ it "should follow a user" do
159
+ stub_post("user/follow/dianakimball").
160
+ to_return(:body => fixture("following.json"))
161
+ following = @client.follow("dianakimball")
162
+ following.should include("dianakimball")
163
+ end
164
+
165
+ end
166
+
167
+ describe ".unfollow" do
168
+
169
+ it "should unfollow a user" do
170
+ stub_post("user/unfollow/dogbrainz").
171
+ to_return(:body => fixture("following.json"))
172
+ following = @client.unfollow("dogbrainz")
173
+ following.should_not include("dogbrainz")
174
+ end
175
+
176
+ end
177
+
178
+ describe ".watched" do
179
+
180
+ context "with a username passed" do
181
+
182
+ it "should return watched repositories" do
183
+ stub_get("repos/watched/sferik").
184
+ to_return(:body => fixture("repositories.json"))
185
+ repositories = @client.watched("sferik")
186
+ repositories.first.name.should == "One40Proof"
187
+ end
188
+
189
+ end
190
+
191
+ context "without a username passed" do
192
+
193
+ it "should return watched repositories" do
194
+ stub_get("repos/watched/sferik").
195
+ to_return(:body => fixture("repositories.json"))
196
+ repositories = @client.watched
197
+ repositories.first.name.should == "One40Proof"
198
+ end
199
+
200
+ end
201
+
202
+ end
203
+
204
+ describe ".keys" do
205
+
206
+ it "should return public keys" do
207
+ stub_get("user/keys").
208
+ to_return(:body => fixture("public_keys.json"))
209
+ public_keys = @client.keys
210
+ public_keys.first.id.should == 103205
211
+ end
212
+
213
+ end
214
+
215
+ describe ".add_key" do
216
+
217
+ it "should add a public key" do
218
+ stub_post("user/key/add").
219
+ with(:title => "Moss", :key => "ssh-dss AAAAB3NzaC1kc3MAAACBAJz7HanBa18ad1YsdFzHO5Wy1/WgXd4BV+czbKq7q23jungbfjN3eo2a0SVdxux8GG+RZ9ia90VD/X+PE4s3LV60oXZ7PDAuyPO1CTF0TaDoKf9mPaHcPa6agMJVocMsgBgwviWT1Q9VgN1SccDsYVDtxkIAwuw25YeHZlG6myx1AAAAFQCgW+OvXWUdUJPBGkRJ8ML7uf0VHQAAAIAlP5G96tTss0SKYVSCJCyocn9cyGQdNjxah4/aYuYFTbLI1rxk7sr/AkZfJNIoF2UFyO5STbbratykIQGUPdUBg1a2t72bu31x+4ZYJMngNsG/AkZ2oqLiH6dJKHD7PFx2oSPalogwsUV7iSMIZIYaPa03A9763iFsN0qJjaed+gAAAIBxz3Prxdzt/os4XGXSMNoWcS03AFC/05NOkoDMrXxQnTTpp1wrOgyRqEnKz15qC5dWk1ynzK+LJXHDZGA8lXPfCjHpJO3zrlZ/ivvLhgPdDpt13MAhIJFH06hTal0woxbk/fIdY71P3kbgXC0Ppx/0S7BC+VxqRCA4/wcM+BoDbA== host").
220
+ to_return(:body => fixture("public_keys.json"))
221
+ public_keys = @client.add_key("Moss", "ssh-dss AAAAB3NzaC1kc3MAAACBAJz7HanBa18ad1YsdFzHO5Wy1/WgXd4BV+czbKq7q23jungbfjN3eo2a0SVdxux8GG+RZ9ia90VD/X+PE4s3LV60oXZ7PDAuyPO1CTF0TaDoKf9mPaHcPa6agMJVocMsgBgwviWT1Q9VgN1SccDsYVDtxkIAwuw25YeHZlG6myx1AAAAFQCgW+OvXWUdUJPBGkRJ8ML7uf0VHQAAAIAlP5G96tTss0SKYVSCJCyocn9cyGQdNjxah4/aYuYFTbLI1rxk7sr/AkZfJNIoF2UFyO5STbbratykIQGUPdUBg1a2t72bu31x+4ZYJMngNsG/AkZ2oqLiH6dJKHD7PFx2oSPalogwsUV7iSMIZIYaPa03A9763iFsN0qJjaed+gAAAIBxz3Prxdzt/os4XGXSMNoWcS03AFC/05NOkoDMrXxQnTTpp1wrOgyRqEnKz15qC5dWk1ynzK+LJXHDZGA8lXPfCjHpJO3zrlZ/ivvLhgPdDpt13MAhIJFH06hTal0woxbk/fIdY71P3kbgXC0Ppx/0S7BC+VxqRCA4/wcM+BoDbA== host")
222
+ public_keys.first.id.should == 103205
223
+ end
224
+
225
+ end
226
+
227
+ describe ".remove_key" do
228
+
229
+ it "should remove a public key" do
230
+ stub_post("user/key/remove").
231
+ with(:id => 103205).
232
+ to_return(:body => fixture("public_keys.json"))
233
+ public_keys = @client.remove_key(103205)
234
+ public_keys.first.id.should == 103205
235
+ end
236
+
237
+ end
238
+
239
+ describe ".emails" do
240
+
241
+ it "should return email addresses" do
242
+ stub_get("user/emails").
243
+ to_return(:body => fixture("emails.json"))
244
+ emails = @client.emails
245
+ emails.first.should == "sferik@gmail.com"
246
+ end
247
+
248
+ end
249
+
250
+ describe ".add_email" do
251
+
252
+ it "should add an email address" do
253
+ stub_post("user/email/add").
254
+ with(:email => "sferik@gmail.com").
255
+ to_return(:body => fixture("emails.json"))
256
+ emails = @client.add_email("sferik@gmail.com")
257
+ emails.first.should == "sferik@gmail.com"
258
+ end
259
+
260
+ end
261
+
262
+ describe ".remove_key" do
263
+
264
+ it "should remove an email address" do
265
+ stub_post("user/email/remove").
266
+ with(:email => "sferik@gmail.com").
267
+ to_return(:body => fixture("emails.json"))
268
+ emails = @client.remove_email("sferik@gmail.com")
269
+ emails.first.should == "sferik@gmail.com"
270
+ end
271
+
272
+ end
273
+
274
+ end
@@ -0,0 +1,12 @@
1
+ require 'helper'
2
+
3
+ describe Octokit::Client do
4
+
5
+ it "should connect using the endpoint configuration" do
6
+ client = Octokit::Client.new
7
+ endpoint = URI.parse(client.endpoint)
8
+ connection = client.send(:connection).build_url(nil).to_s
9
+ connection.should == endpoint.to_s
10
+ end
11
+
12
+ end
@@ -0,0 +1,15 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ describe Octokit do
5
+ after do
6
+ Octokit.reset
7
+ end
8
+
9
+ describe ".client" do
10
+ it "should be a Octokit::Client" do
11
+ Octokit.client.should be_a Octokit::Client
12
+ end
13
+ end
14
+
15
+ end
@@ -0,0 +1,54 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ describe Octokit::Repository do
5
+ context "when passed a string containg a slash" do
6
+ before do
7
+ @repository = Octokit::Repository.new("sferik/octokit")
8
+ end
9
+
10
+ it "should set the repository name and username" do
11
+ @repository.name.should == "octokit"
12
+ @repository.username.should == "sferik"
13
+ end
14
+
15
+ it "should respond to repo and user" do
16
+ @repository.repo.should == "octokit"
17
+ @repository.user.should == "sferik"
18
+ end
19
+
20
+ it "should render slug as string" do
21
+ @repository.slug.should == "sferik/octokit"
22
+ @repository.to_s.should == @repository.slug
23
+ end
24
+
25
+ it "should render url as string" do
26
+ @repository.url.should == 'https://github.com/sferik/octokit'
27
+ end
28
+
29
+ end
30
+
31
+ context "when passed a hash" do
32
+ it "should set the repository name and username" do
33
+ repository = Octokit::Repository.new({:username => 'sferik', :name => 'octokit'})
34
+ repository.name.should == "octokit"
35
+ repository.username.should == "sferik"
36
+ end
37
+ end
38
+
39
+ context "when passed a Repo" do
40
+ it "should set the repository name and username" do
41
+ repository = Octokit::Repository.new(Octokit::Repository.new('sferik/octokit'))
42
+ repository.name.should == "octokit"
43
+ repository.username.should == "sferik"
44
+ end
45
+ end
46
+
47
+ context "when given a URL" do
48
+ it "should set the repository name and username" do
49
+ repository = Octokit::Repository.from_url("https://github.com/sferik/octokit")
50
+ repository.name.should == "octokit"
51
+ repository.username.should == "sferik"
52
+ end
53
+ end
54
+ end