gems 0.8.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.md +3 -3
  3. data/README.md +11 -23
  4. data/gems.gemspec +12 -16
  5. data/lib/gems.rb +7 -3
  6. data/lib/gems/client.rb +47 -60
  7. data/lib/gems/configuration.rb +7 -7
  8. data/lib/gems/request.rb +26 -22
  9. data/lib/gems/version.rb +3 -3
  10. metadata +28 -105
  11. data.tar.gz.sig +0 -2
  12. data/Rakefile +0 -11
  13. data/spec/fixtures/add_owner +0 -1
  14. data/spec/fixtures/add_web_hook +0 -1
  15. data/spec/fixtures/api_key +0 -1
  16. data/spec/fixtures/dependencies +0 -0
  17. data/spec/fixtures/downloads.yaml +0 -91
  18. data/spec/fixtures/fire_web_hook +0 -1
  19. data/spec/fixtures/gems-0.0.8.gem +0 -0
  20. data/spec/fixtures/gems.yaml +0 -1072
  21. data/spec/fixtures/just_updated.yaml +0 -1376
  22. data/spec/fixtures/latest.yaml +0 -1098
  23. data/spec/fixtures/most_downloaded.yaml +0 -20
  24. data/spec/fixtures/most_downloaded_today.yaml +0 -1053
  25. data/spec/fixtures/owners.yaml +0 -2
  26. data/spec/fixtures/push +0 -1
  27. data/spec/fixtures/rails.yaml +0 -33
  28. data/spec/fixtures/rails_admin-0.0.0.yaml +0 -3
  29. data/spec/fixtures/remove_owner +0 -1
  30. data/spec/fixtures/remove_web_hook +0 -1
  31. data/spec/fixtures/reverse_dependencies_short.yaml +0 -70
  32. data/spec/fixtures/script_helpers.yaml +0 -17
  33. data/spec/fixtures/search.yaml +0 -898
  34. data/spec/fixtures/total_downloads.yaml +0 -2
  35. data/spec/fixtures/unyank +0 -1
  36. data/spec/fixtures/web_hooks.yaml +0 -4
  37. data/spec/fixtures/yank +0 -1
  38. data/spec/gems/client_spec.rb +0 -432
  39. data/spec/gems/request_spec.rb +0 -31
  40. data/spec/gems_spec.rb +0 -73
  41. data/spec/helper.rb +0 -64
  42. metadata.gz.sig +0 -0
@@ -1,2 +0,0 @@
1
- ---
2
- :total: 244368950
@@ -1 +0,0 @@
1
- Successfully unyanked gem: gems (0.0.8)
@@ -1,4 +0,0 @@
1
- ---
2
- all gems:
3
- - url: http://example.com
4
- failure_count: 0
@@ -1 +0,0 @@
1
- Successfully yanked gem: gems (0.0.8)
@@ -1,432 +0,0 @@
1
- require 'helper'
2
-
3
- describe Gems::Client do
4
- after do
5
- Gems.reset
6
- end
7
-
8
- describe "#info" do
9
- before do
10
- stub_get("/api/v1/gems/rails.yaml").
11
- to_return(:body => fixture("rails.yaml"))
12
- end
13
- it "returns some basic information about the given gem" do
14
- info = Gems.info 'rails'
15
- expect(a_get("/api/v1/gems/rails.yaml")).to have_been_made
16
- expect(info['name']).to eq 'rails'
17
- end
18
- end
19
-
20
- describe "#search" do
21
- before do
22
- stub_get("/api/v1/search.yaml").
23
- with(:query => {"query" => "cucumber"}).
24
- to_return(:body => fixture("search.yaml"))
25
- end
26
- it "returns an array of active gems that match the query" do
27
- search = Gems.search 'cucumber'
28
- expect(a_get("/api/v1/search.yaml").with(:query => {"query" => "cucumber"})).to have_been_made
29
- expect(search.first['name']).to eq 'cucumber'
30
- end
31
- end
32
-
33
- describe "#gems" do
34
- context "with no user handle specified" do
35
- before do
36
- stub_get("/api/v1/gems.yaml").
37
- to_return(:body => fixture("gems.yaml"))
38
- end
39
- it "lists all gems that you own" do
40
- gems = Gems.gems
41
- expect(a_get("/api/v1/gems.yaml")).to have_been_made
42
- expect(gems.first['name']).to eq "exchb"
43
- end
44
- end
45
- context "with a user handle specified" do
46
- before do
47
- stub_get("/api/v1/owners/sferik/gems.yaml").
48
- to_return(:body => fixture("gems.yaml"))
49
- end
50
- it "lists all gems that the specified user owns" do
51
- gems = Gems.gems("sferik")
52
- expect(a_get("/api/v1/owners/sferik/gems.yaml")).to have_been_made
53
- expect(gems.first['name']).to eq "exchb"
54
- end
55
- end
56
- end
57
-
58
- describe "#push" do
59
- context "without the host parameter" do
60
- before do
61
- stub_post("/api/v1/gems").
62
- to_return(:body => fixture("push"))
63
- end
64
-
65
- it "submits a gem to RubyGems.org" do
66
- push = Gems.push(File.new(File.expand_path("../../fixtures/gems-0.0.8.gem", __FILE__), "rb"))
67
- expect(a_post("/api/v1/gems")).to have_been_made
68
- expect(push).to eq "Successfully registered gem: gems (0.0.8)"
69
- end
70
- end
71
-
72
- context "with the host parameter" do
73
- before do
74
- stub_post("http://example.com/api/v1/gems").
75
- to_return(:body => fixture("push"))
76
- end
77
- it "submits a gem to the passed host" do
78
- push = Gems.push(File.new(File.expand_path("../../fixtures/gems-0.0.8.gem", __FILE__), "rb"), host='http://example.com')
79
- expect(a_post("http://example.com/api/v1/gems"))
80
- expect(push).to eq "Successfully registered gem: gems (0.0.8)"
81
- end
82
- end
83
- end
84
-
85
- describe "#yank" do
86
- context "with no version specified" do
87
- before do
88
- stub_get("/api/v1/gems/gems.yaml").
89
- to_return(:body => fixture("rails.yaml"))
90
- stub_delete("/api/v1/gems/yank").
91
- with(:query => {:gem_name => "gems", :version => "3.0.9"}).
92
- to_return(:body => fixture("yank"))
93
- end
94
- it "removes a gem from RubyGems.org's index" do
95
- yank = Gems.yank("gems")
96
- expect(a_delete("/api/v1/gems/yank").with(:query => {:gem_name => "gems", :version => "3.0.9"})).to have_been_made
97
- expect(yank).to eq "Successfully yanked gem: gems (0.0.8)"
98
- end
99
- end
100
- context "with a version specified" do
101
- before do
102
- stub_delete("/api/v1/gems/yank").
103
- with(:query => {:gem_name => "gems", :version => "0.0.8"}).
104
- to_return(:body => fixture("yank"))
105
- end
106
- it "removes a gem from RubyGems.org's index" do
107
- yank = Gems.yank("gems", "0.0.8")
108
- expect(a_delete("/api/v1/gems/yank").with(:query => {:gem_name => "gems", :version => "0.0.8"})).to have_been_made
109
- expect(yank).to eq "Successfully yanked gem: gems (0.0.8)"
110
- end
111
- end
112
- end
113
-
114
- describe "#unyank" do
115
- context "with no version specified" do
116
- before do
117
- stub_get("/api/v1/gems/gems.yaml").
118
- to_return(:body => fixture("rails.yaml"))
119
- stub_put("/api/v1/gems/unyank").
120
- with(:body => {:gem_name => "gems", :version => "3.0.9"}).
121
- to_return(:body => fixture("unyank"))
122
- end
123
- it "updates a previously yanked gem back into RubyGems.org's index" do
124
- unyank = Gems.unyank("gems")
125
- expect(a_put("/api/v1/gems/unyank").with(:body => {:gem_name => "gems", :version => "3.0.9"})).to have_been_made
126
- expect(unyank).to eq "Successfully unyanked gem: gems (0.0.8)"
127
- end
128
- end
129
- context "with a version specified" do
130
- before do
131
- stub_put("/api/v1/gems/unyank").
132
- with(:body => {:gem_name => "gems", :version => "0.0.8"}).
133
- to_return(:body => fixture("unyank"))
134
- end
135
- it "updates a previously yanked gem back into RubyGems.org's index" do
136
- unyank = Gems.unyank("gems", "0.0.8")
137
- expect(a_put("/api/v1/gems/unyank").with(:body => {:gem_name => "gems", :version => "0.0.8"})).to have_been_made
138
- expect(unyank).to eq "Successfully unyanked gem: gems (0.0.8)"
139
- end
140
- end
141
- end
142
-
143
- describe "#versions" do
144
- before do
145
- stub_get("/api/v1/versions/script_helpers.yaml").
146
- to_return(:body => fixture("script_helpers.yaml"))
147
- end
148
- it "returns an array of gem version details" do
149
- versions = Gems.versions 'script_helpers'
150
- expect(a_get("/api/v1/versions/script_helpers.yaml")).to have_been_made
151
- expect(versions.first['number']).to eq '0.1.0'
152
- end
153
- end
154
-
155
- describe "#total_downloads" do
156
- context "with no version or gem name specified" do
157
- before do
158
- stub_get("/api/v1/downloads.yaml").
159
- to_return(:body => fixture("total_downloads.yaml"))
160
- end
161
- it "returns the total number of downloads on RubyGems.org" do
162
- downloads = Gems.total_downloads
163
- expect(a_get("/api/v1/downloads.yaml")).to have_been_made
164
- expect(downloads[:total]).to eq 244368950
165
- end
166
- end
167
- context "with no version specified" do
168
- before do
169
- stub_get("/api/v1/gems/rails_admin.yaml").
170
- to_return(:body => fixture("rails.yaml"))
171
- stub_get("/api/v1/downloads/rails_admin-3.0.9.yaml").
172
- to_return(:body => fixture("rails_admin-0.0.0.yaml"))
173
- end
174
- it "returns the total number of downloads for the specified gem" do
175
- downloads = Gems.total_downloads('rails_admin')
176
- expect(a_get("/api/v1/gems/rails_admin.yaml")).to have_been_made
177
- expect(a_get("/api/v1/downloads/rails_admin-3.0.9.yaml")).to have_been_made
178
- expect(downloads[:version_downloads]).to eq 3142
179
- expect(downloads[:total_downloads]).to eq 3142
180
- end
181
- end
182
- context "with a version specified" do
183
- before do
184
- stub_get("/api/v1/downloads/rails_admin-0.0.0.yaml").
185
- to_return(:body => fixture("rails_admin-0.0.0.yaml"))
186
- end
187
- it "returns the total number of downloads for the specified gem" do
188
- downloads = Gems.total_downloads('rails_admin', '0.0.0')
189
- expect(a_get("/api/v1/downloads/rails_admin-0.0.0.yaml")).to have_been_made
190
- expect(downloads[:version_downloads]).to eq 3142
191
- expect(downloads[:total_downloads]).to eq 3142
192
- end
193
- end
194
- end
195
-
196
- describe "#most_downloaded_today" do
197
- context "with nothing specified" do
198
- before do
199
- stub_get("/api/v1/downloads/top.yaml").
200
- to_return(:body => fixture("most_downloaded_today.yaml"))
201
- end
202
- it "returns the most downloaded versions today" do
203
- most_downloaded = Gems.most_downloaded_today
204
- expect(a_get("/api/v1/downloads/top.yaml")).to have_been_made
205
- expect(most_downloaded.first.first['full_name']).to eq "rake-0.9.2.2"
206
- expect(most_downloaded.first.last).to eq 9801
207
- end
208
- end
209
- end
210
-
211
- describe "#most_downloaded" do
212
- context "with nothing specified" do
213
- before do
214
- stub_get("/api/v1/downloads/all.yaml").
215
- to_return(:body => fixture("most_downloaded.yaml"))
216
- end
217
- it "returns the most downloaded versions" do
218
- most_downloaded = Gems.most_downloaded
219
- expect(a_get("/api/v1/downloads/all.yaml")).to have_been_made
220
- expect(most_downloaded.first.first['full_name']).to eq "abstract-1.0.0"
221
- expect(most_downloaded.first.last).to eq 1
222
- end
223
- end
224
- end
225
-
226
- describe "#downloads" do
227
- context "with no dates or version specified" do
228
- before do
229
- stub_get("/api/v1/gems/coulda.yaml").
230
- to_return(:body => fixture("rails.yaml"))
231
- stub_get("/api/v1/versions/coulda-3.0.9/downloads.yaml").
232
- to_return(:body => fixture("downloads.yaml"))
233
- end
234
- it "returns the number of downloads by day for a particular gem version" do
235
- downloads = Gems.downloads 'coulda'
236
- expect(a_get("/api/v1/gems/coulda.yaml")).to have_been_made
237
- expect(a_get("/api/v1/versions/coulda-3.0.9/downloads.yaml")).to have_been_made
238
- expect(downloads['2011-06-22']).to eq 8
239
- end
240
- end
241
- context "with no dates specified" do
242
- before do
243
- stub_get("/api/v1/versions/coulda-0.6.3/downloads.yaml").
244
- to_return(:body => fixture("downloads.yaml"))
245
- end
246
- it "returns the number of downloads by day for a particular gem version" do
247
- downloads = Gems.downloads 'coulda', '0.6.3'
248
- expect(a_get("/api/v1/versions/coulda-0.6.3/downloads.yaml")).to have_been_made
249
- expect(downloads['2011-06-22']).to eq 8
250
- end
251
- end
252
- context "with from date specified" do
253
- before do
254
- stub_get("/api/v1/versions/coulda-0.6.3/downloads/search.yaml").
255
- with(:query => {"from" => "2011-01-01", "to" => Date.today.to_s}).
256
- to_return(:body => fixture("downloads.yaml"))
257
- end
258
- it "returns the number of downloads by day for a particular gem version" do
259
- downloads = Gems.downloads 'coulda', '0.6.3', Date.parse('2011-01-01')
260
- expect(a_get("/api/v1/versions/coulda-0.6.3/downloads/search.yaml").with(:query => {"from" => "2011-01-01", "to" => Date.today.to_s})).to have_been_made
261
- expect(downloads['2011-06-22']).to eq 8
262
- end
263
- end
264
- context "with from and to dates specified" do
265
- before do
266
- stub_get("/api/v1/versions/coulda-0.6.3/downloads/search.yaml").
267
- with(:query => {"from" => "2011-01-01", "to" => "2011-06-28"}).
268
- to_return(:body => fixture("downloads.yaml"))
269
- end
270
- it "returns the number of downloads by day for a particular gem version" do
271
- downloads = Gems.downloads 'coulda', '0.6.3', Date.parse('2011-01-01'), Date.parse('2011-06-28')
272
- expect(a_get("/api/v1/versions/coulda-0.6.3/downloads/search.yaml").with(:query => {"from" => "2011-01-01", "to" => "2011-06-28"})).to have_been_made
273
- expect(downloads['2011-06-22']).to eq 8
274
- end
275
- end
276
- end
277
-
278
- describe "#owners" do
279
- before do
280
- stub_get("/api/v1/gems/gems/owners.yaml").
281
- to_return(:body => fixture("owners.yaml"))
282
- end
283
- it "lists all owners of a gem" do
284
- owners = Gems.owners("gems")
285
- expect(a_get("/api/v1/gems/gems/owners.yaml")).to have_been_made
286
- expect(owners.first['email']).to eq "sferik@gmail.com"
287
- end
288
- end
289
-
290
- describe "#add_owner" do
291
- before do
292
- stub_post("/api/v1/gems/gems/owners").
293
- with(:body => {:email => "sferik@gmail.com"}).
294
- to_return(:body => fixture("add_owner"))
295
- end
296
- it "adds an owner to a RubyGem" do
297
- owner = Gems.add_owner("gems", "sferik@gmail.com")
298
- expect(a_post("/api/v1/gems/gems/owners").with(:body => {:email => "sferik@gmail.com"})).to have_been_made
299
- expect(owner).to eq "Owner added successfully."
300
- end
301
- end
302
-
303
- describe "#remove_owner" do
304
- before do
305
- stub_delete("/api/v1/gems/gems/owners").
306
- with(:query => {:email => "sferik@gmail.com"}).
307
- to_return(:body => fixture("remove_owner"))
308
- end
309
- it "removes an owner from a RubyGem" do
310
- owner = Gems.remove_owner("gems", "sferik@gmail.com")
311
- expect(a_delete("/api/v1/gems/gems/owners").with(:query => {:email => "sferik@gmail.com"})).to have_been_made
312
- expect(owner).to eq "Owner removed successfully."
313
- end
314
- end
315
-
316
- describe "#web_hooks" do
317
- before do
318
- stub_get("/api/v1/web_hooks.yaml").
319
- to_return(:body => fixture("web_hooks.yaml"))
320
- end
321
- it "lists the web hooks registered under your account" do
322
- web_hooks = Gems.web_hooks
323
- expect(a_get("/api/v1/web_hooks.yaml")).to have_been_made
324
- expect(web_hooks['all gems'].first['url']).to eq "http://example.com"
325
- end
326
- end
327
-
328
- describe "#add_web_hook" do
329
- before do
330
- stub_post("/api/v1/web_hooks").
331
- with(:body => {:gem_name => "*", :url => "http://example.com"}).
332
- to_return(:body => fixture("add_web_hook"))
333
- end
334
- it "adds a web hook" do
335
- add_web_hook = Gems.add_web_hook("*", "http://example.com")
336
- expect(a_post("/api/v1/web_hooks").with(:body => {:gem_name => "*", :url => "http://example.com"})).to have_been_made
337
- expect(add_web_hook).to eq "Successfully created webhook for all gems to http://example.com"
338
- end
339
- end
340
-
341
- describe "#remove_web_hook" do
342
- before do
343
- stub_delete("/api/v1/web_hooks/remove").
344
- with(:query => {:gem_name => "*", :url => "http://example.com"}).
345
- to_return(:body => fixture("remove_web_hook"))
346
- end
347
- it "removes a web hook" do
348
- remove_web_hook = Gems.remove_web_hook("*", "http://example.com")
349
- expect(a_delete("/api/v1/web_hooks/remove").with(:query => {:gem_name => "*", :url => "http://example.com"})).to have_been_made
350
- expect(remove_web_hook).to eq "Successfully removed webhook for all gems to http://example.com"
351
- end
352
- end
353
-
354
- describe "#fire_web_hook" do
355
- before do
356
- stub_post("/api/v1/web_hooks/fire").
357
- with(:body => {:gem_name => "*", :url => "http://example.com"}).
358
- to_return(:body => fixture("fire_web_hook"))
359
- end
360
- it "fires a web hook" do
361
- fire_web_hook = Gems.fire_web_hook("*", "http://example.com")
362
- expect(a_post("/api/v1/web_hooks/fire").with(:body => {:gem_name => "*", :url => "http://example.com"})).to have_been_made
363
- expect(fire_web_hook).to eq "Successfully deployed webhook for gemcutter to http://example.com"
364
- end
365
- end
366
-
367
- describe "#latest" do
368
- before do
369
- stub_get("/api/v1/activity/latest.yaml").
370
- to_return(:body => fixture("latest.yaml"))
371
- end
372
- it "returns some basic information about the given gem" do
373
- latest = Gems.latest
374
- expect(a_get("/api/v1/activity/latest.yaml")).to have_been_made
375
- expect(latest.first['name']).to eq 'seanwalbran-rpm_contrib'
376
- end
377
- end
378
-
379
- describe "#just_updated" do
380
- before do
381
- stub_get("/api/v1/activity/just_updated.yaml").
382
- to_return(:body => fixture("just_updated.yaml"))
383
- end
384
- it "returns some basic information about the given gem" do
385
- just_updated = Gems.just_updated
386
- expect(a_get("/api/v1/activity/just_updated.yaml")).to have_been_made
387
- expect(just_updated.first['name']).to eq 'rspec-tag_matchers'
388
- end
389
- end
390
-
391
- describe "#api_key" do
392
- before do
393
- Gems.configure do |config|
394
- config.username = 'nick@gemcutter.org'
395
- config.password = 'schwwwwing'
396
- end
397
- stub_get("https://nick%40gemcutter.org:schwwwwing@rubygems.org/api/v1/api_key").
398
- to_return(:body => fixture("api_key"))
399
- end
400
- it "retrieves an API key" do
401
- api_key = Gems.api_key
402
- expect(a_get("https://nick%40gemcutter.org:schwwwwing@rubygems.org/api/v1/api_key")).to have_been_made
403
- expect(api_key).to eq "701243f217cdf23b1370c7b66b65ca97"
404
- end
405
- end
406
-
407
- describe "#dependencies" do
408
- before do
409
- stub_get("/api/v1/dependencies").
410
- with(:query => {"gems" => "rails,thor"}).
411
- to_return(:body => fixture("dependencies"))
412
- end
413
- it "returns an array of hashes for all versions of given gems" do
414
- dependencies = Gems.dependencies 'rails', 'thor'
415
- expect(a_get("/api/v1/dependencies").with(:query => {"gems" => "rails,thor"})).to have_been_made
416
- expect(dependencies.first[:number]).to eq "3.0.9"
417
- end
418
- end
419
-
420
- describe "#reverse_dependencies" do
421
- before do
422
- stub_get("/api/v1/gems/rspec/reverse_dependencies.yaml").
423
- to_return(:body => fixture("reverse_dependencies_short.yaml"))
424
- end
425
-
426
- it "returns an array of names for all gems which are reverse dependencies to the given gem" do
427
- reverse_dependencies = Gems.reverse_dependencies 'rspec'
428
- expect(a_get("/api/v1/gems/rspec/reverse_dependencies.yaml")).to have_been_made
429
- expect(reverse_dependencies).to be_an_instance_of Array
430
- end
431
- end
432
- end
@@ -1,31 +0,0 @@
1
- require 'helper'
2
-
3
- describe Gems::Request do
4
- after do
5
- Gems.reset
6
- end
7
-
8
- describe "#get with redirect" do
9
- before do
10
- # request_uri = URI.parse("https://rubygems.org/api/v1/dependencies?gems=rails,thor")
11
- response_body = %q(<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302 Found</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n)
12
- response_code = "302"
13
- response_location = "https://bundler.rubygems.org/api/v1/dependencies?gems=rails,thor"
14
-
15
- stub_get("/api/v1/dependencies").
16
- with(:query => {"gems" => "rails,thor"}).
17
- to_return(:body => response_body, :status => 302, :headers => {:location => response_location})
18
- stub_request(:get, "https://bundler.rubygems.org/api/v1/dependencies").
19
- with(:query => {"gems" => "rails,thor"}).
20
- to_return(:body => fixture('dependencies'), :status => 200, :headers => {})
21
-
22
- end
23
- it "returns an array of hashes for all versions of given gems" do
24
- dependencies = Gems.dependencies 'rails', 'thor'
25
- expect(a_get("/api/v1/dependencies").with(:query => {"gems" => "rails,thor"})).to have_been_made
26
- expect(a_get("https://bundler.rubygems.org/api/v1/dependencies").with(:query => {"gems" => "rails,thor"})).to have_been_made
27
- expect(dependencies.first[:number]).to eq "3.0.9"
28
- end
29
- end
30
-
31
- end