tugboat 1.3.1 → 2.0.0.RC1

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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +12 -8
  4. data/lib/tugboat/cli.rb +8 -7
  5. data/lib/tugboat/config.rb +8 -12
  6. data/lib/tugboat/middleware/add_key.rb +9 -6
  7. data/lib/tugboat/middleware/ask_for_credentials.rb +7 -8
  8. data/lib/tugboat/middleware/check_configuration.rb +1 -1
  9. data/lib/tugboat/middleware/check_credentials.rb +4 -2
  10. data/lib/tugboat/middleware/config.rb +3 -4
  11. data/lib/tugboat/middleware/create_droplet.rb +32 -26
  12. data/lib/tugboat/middleware/destroy_droplet.rb +6 -6
  13. data/lib/tugboat/middleware/destroy_image.rb +6 -6
  14. data/lib/tugboat/middleware/find_droplet.rb +20 -16
  15. data/lib/tugboat/middleware/find_image.rb +17 -10
  16. data/lib/tugboat/middleware/halt_droplet.rb +8 -8
  17. data/lib/tugboat/middleware/info_droplet.rb +38 -25
  18. data/lib/tugboat/middleware/info_image.rb +5 -5
  19. data/lib/tugboat/middleware/inject_client.rb +3 -9
  20. data/lib/tugboat/middleware/list_droplets.rb +6 -4
  21. data/lib/tugboat/middleware/list_images.rb +28 -23
  22. data/lib/tugboat/middleware/list_regions.rb +3 -3
  23. data/lib/tugboat/middleware/list_sizes.rb +3 -3
  24. data/lib/tugboat/middleware/list_ssh_keys.rb +5 -4
  25. data/lib/tugboat/middleware/password_reset.rb +7 -7
  26. data/lib/tugboat/middleware/rebuild_droplet.rb +8 -8
  27. data/lib/tugboat/middleware/resize_droplet.rb +7 -7
  28. data/lib/tugboat/middleware/restart_droplet.rb +8 -8
  29. data/lib/tugboat/middleware/snapshot_droplet.rb +6 -6
  30. data/lib/tugboat/middleware/ssh_droplet.rb +3 -1
  31. data/lib/tugboat/middleware/start_droplet.rb +6 -6
  32. data/lib/tugboat/middleware/wait_for_state.rb +6 -6
  33. data/lib/tugboat/version.rb +1 -1
  34. data/spec/cli/add_key_spec.rb +16 -9
  35. data/spec/cli/authorize_cli_spec.rb +24 -29
  36. data/spec/cli/config_cli_spec.rb +57 -0
  37. data/spec/cli/create_cli_spec.rb +18 -28
  38. data/spec/cli/debug_cli_spec.rb +8 -14
  39. data/spec/cli/destroy_cli_spec.rb +39 -50
  40. data/spec/cli/destroy_image_cli_spec.rb +33 -39
  41. data/spec/cli/droplets_cli_spec.rb +15 -12
  42. data/spec/cli/halt_cli_spec.rb +50 -46
  43. data/spec/cli/images_cli_spec.rb +134 -58
  44. data/spec/cli/info_cli_spec.rb +139 -139
  45. data/spec/cli/info_image_cli_spec.rb +113 -26
  46. data/spec/cli/keys_cli_spec.rb +7 -5
  47. data/spec/cli/password_reset_cli_spec.rb +46 -44
  48. data/spec/cli/rebuild_cli_spec.rb +187 -101
  49. data/spec/cli/regions_cli_spec.rb +13 -6
  50. data/spec/cli/resize_cli_spec.rb +51 -48
  51. data/spec/cli/restart_cli_spec.rb +41 -39
  52. data/spec/cli/sizes_cli_spec.rb +13 -8
  53. data/spec/cli/snapshot_cli_spec.rb +36 -37
  54. data/spec/cli/ssh_cli_spec.rb +7 -15
  55. data/spec/cli/start_cli_spec.rb +39 -35
  56. data/spec/cli/verify_cli_spec.rb +20 -12
  57. data/spec/cli/wait_cli_spec.rb +43 -27
  58. data/spec/config_spec.rb +19 -25
  59. data/spec/fixtures/create_droplet.json +44 -0
  60. data/spec/fixtures/create_ssh_key.json +4 -4
  61. data/spec/fixtures/create_ssh_key_from_file.json +8 -0
  62. data/spec/fixtures/droplet_start_response.json +13 -0
  63. data/spec/fixtures/not_found.json +4 -0
  64. data/spec/fixtures/password_reset_response.json +13 -0
  65. data/spec/fixtures/power_cycle_response.json +13 -0
  66. data/spec/fixtures/resize_droplet.json +13 -0
  67. data/spec/fixtures/restart_response.json +13 -0
  68. data/spec/fixtures/show_coreos_image.json +23 -0
  69. data/spec/fixtures/show_droplet.json +90 -11
  70. data/spec/fixtures/show_droplet_inactive.json +90 -11
  71. data/spec/fixtures/show_droplets.json +249 -30
  72. data/spec/fixtures/show_droplets_empty.json +5 -2
  73. data/spec/fixtures/show_image.json +14 -7
  74. data/spec/fixtures/show_images.json +1075 -13
  75. data/spec/fixtures/show_images_global.json +25 -16
  76. data/spec/fixtures/show_keys.json +15 -7
  77. data/spec/fixtures/show_redmine_image.json +24 -0
  78. data/spec/fixtures/show_regions.json +181 -12
  79. data/spec/fixtures/show_sizes.json +178 -9
  80. data/spec/fixtures/shutdown_response.json +13 -0
  81. data/spec/fixtures/snapshot_response.json +13 -0
  82. data/spec/fixtures/ubuntu_image_9801951.json +24 -0
  83. data/spec/middleware/check_credentials_spec.rb +4 -3
  84. data/spec/middleware/inject_client_spec.rb +2 -2
  85. data/spec/shared/environment.rb +6 -7
  86. data/spec/spec_helper.rb +1 -1
  87. data/tugboat.gemspec +39 -19
  88. metadata +50 -14
  89. data/spec/fixtures/show_droplet_fuzzy.json +0 -13
  90. data/spec/fixtures/show_droplets_fuzzy.json +0 -35
  91. data/spec/fixtures/show_droplets_inactive.json +0 -37
@@ -5,79 +5,81 @@ describe Tugboat::CLI do
5
5
 
6
6
  describe "passwordreset" do
7
7
  it "resets the root password given a fuzzy name" do
8
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
9
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
10
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/password_reset?api_key=#{api_key}&client_id=#{client_key}").
11
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{"status":"OK","event_id":456}')
8
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
9
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
10
+ to_return(:status => 200, :body => fixture("show_droplets"), :headers => {'Content-Type' => 'application/json'},)
12
11
 
13
- @cli.password_reset("foo")
12
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
13
+ with(:body => "{\"type\":\"password_reset\"}",
14
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
15
+ to_return(:status => 200, :body => fixture('password_reset_response'), :headers => {})
16
+
17
+ @cli.password_reset("example.com")
14
18
 
15
19
  expect($stdout.string).to eq <<-eos
16
- Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 100823 (foo)
17
- Queuing password reset for 100823 (foo)...done
20
+ Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
21
+ Queuing password reset for 6918990 (example.com)...Password reset successful!
18
22
  Your new root password will be emailed to you
19
23
  eos
20
-
21
- expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).
22
- to have_been_made
23
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/password_reset?api_key=#{api_key}&client_id=#{client_key}")).
24
- to have_been_made
25
24
  end
26
25
 
27
26
  it "resets the root password given an id" do
28
- stub_request(:get, "https://api.digitalocean.com/droplets/100823?api_key=#{api_key}&client_id=#{client_key}").
29
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplet"))
30
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/password_reset?api_key=#{api_key}&client_id=#{client_key}").
31
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{"status":"OK","event_id":456}')
27
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
28
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
29
+ to_return(:status => 200, :body => fixture("show_droplets"), :headers => {'Content-Type' => 'application/json'},)
30
+
31
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets/6918990?per_page=200").
32
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
33
+ to_return(:status => 200, :body => fixture('show_droplet'), :headers => {})
34
+
35
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
36
+ with(:body => "{\"type\":\"password_reset\"}",
37
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
38
+ to_return(:status => 200, :body => fixture('password_reset_response'), :headers => {})
32
39
 
33
- @cli.options = @cli.options.merge(:id => 100823)
40
+ @cli.options = @cli.options.merge(:id => 6918990)
34
41
  @cli.password_reset
35
42
 
36
43
  expect($stdout.string).to eq <<-eos
37
- Droplet id provided. Finding Droplet...done\e[0m, 100823 (foo)
38
- Queuing password reset for 100823 (foo)...done
44
+ Droplet id provided. Finding Droplet...done\e[0m, 6918990 (example.com)
45
+ Queuing password reset for 6918990 (example.com)...Password reset successful!
39
46
  Your new root password will be emailed to you
40
47
  eos
41
-
42
- expect(a_request(:get, "https://api.digitalocean.com/droplets/100823?api_key=#{api_key}&client_id=#{client_key}")).
43
- to have_been_made
44
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/password_reset?api_key=#{api_key}&client_id=#{client_key}")).
45
- to have_been_made
46
48
  end
47
49
 
48
50
  it "resets the root password given a name" do
49
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
50
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
51
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/password_reset?api_key=#{api_key}&client_id=#{client_key}").
52
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{"status":"OK","event_id":456}')
51
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
52
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
53
+ to_return(:status => 200, :body => fixture("show_droplets"), :headers => {'Content-Type' => 'application/json'},)
54
+
55
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
56
+ with(:body => "{\"type\":\"password_reset\"}",
57
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
58
+ to_return(:status => 200, :body => fixture('password_reset_response'), :headers => {})
53
59
 
54
- @cli.options = @cli.options.merge(:name => "foo")
60
+ @cli.options = @cli.options.merge(:name => "example.com")
55
61
  @cli.password_reset
56
62
 
57
63
  expect($stdout.string).to eq <<-eos
58
- Droplet name provided. Finding droplet ID...done\e[0m, 100823 (foo)
59
- Queuing password reset for 100823 (foo)...done
64
+ Droplet name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
65
+ Queuing password reset for 6918990 (example.com)...Password reset successful!
60
66
  Your new root password will be emailed to you
61
67
  eos
62
-
63
- expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).
64
- to have_been_made
65
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/password_reset?api_key=#{api_key}&client_id=#{client_key}")).
66
- to have_been_made
67
68
  end
68
69
 
69
70
  it "raises SystemExit when a request fails" do
70
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
71
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
72
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/password_reset?api_key=#{api_key}&client_id=#{client_key}").
71
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
72
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
73
+ to_return(:status => 200, :body => fixture("show_droplets"), :headers => {'Content-Type' => 'application/json'},)
74
+
75
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
76
+ with(:body => "{\"type\":\"password_reset\"}",
77
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
73
78
  to_return(:headers => {'Content-Type' => 'application/json'}, :status => 500, :body => '{"status":"ERROR","message":"Some error"}')
74
79
 
75
- expect { @cli.password_reset("foo") }.to raise_error(SystemExit)
80
+ @cli.options = @cli.options.merge(:name => "example.com")
76
81
 
77
- expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).
78
- to have_been_made
79
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/password_reset?api_key=#{api_key}&client_id=#{client_key}")).
80
- to have_been_made
82
+ expect{ @cli.password_reset("example.com") }.to raise_error(SystemExit)
81
83
  end
82
84
  end
83
85
  end
@@ -4,211 +4,297 @@ describe Tugboat::CLI do
4
4
  include_context "spec"
5
5
 
6
6
  describe "rebuild" do
7
- it "rebuilds a droplet with a fuzzy name based on an image with a fuzy name" do
8
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
9
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
7
+ it "rebuilds a droplet with a fuzzy name based on an image with a fuzzy name" do
8
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
9
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
10
+ to_return(:status => 200, :body => fixture('show_droplets'), :headers => {})
10
11
 
11
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}").
12
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images"))
12
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
13
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
14
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
13
15
 
14
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478").
15
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{ "status": "OK", "event_id": 7504 }')
16
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
17
+ with(:body => "{\"type\":\"rebuild\",\"image_id\":12790328}",
18
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
19
+ to_return(:status => 200, :body => "", :headers => {})
16
20
 
17
21
  expect($stdin).to receive(:gets).and_return("y")
18
22
 
19
- @cli.rebuild("foo", "NLP Final")
23
+ @cli.rebuild("example.com", "ubuntu-14-04-x64")
20
24
 
21
25
  expect($stdout.string).to eq <<-eos
22
- Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 100823 (foo)\nImage fuzzy name provided. Finding image ID...done\e[0m, 478 (NLP Final)\nWarning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 100823 (foo) with image 478 (NLP Final)...done
26
+ Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
27
+ Image fuzzy name provided. Finding image ID...done\e[0m, 12790328 (14.04 x64)
28
+ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
23
29
  eos
24
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478")).to have_been_made
30
+
25
31
  end
26
32
 
27
- it "rebuilds a droplet with an id based on an image with a fuzy name" do
28
- stub_request(:get, "https://api.digitalocean.com/droplets/#{droplet_id}?api_key=#{api_key}&client_id=#{client_key}").
29
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplet"))
33
+ it "rebuilds a droplet with an id based on an image with a fuzzy name" do
34
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets/12790328?per_page=200").
35
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
36
+ to_return(:status => 200, :body => fixture('show_droplet'), :headers => {})
30
37
 
31
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}").
32
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images"))
38
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
39
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
40
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
33
41
 
34
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478").
35
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{ "status": "OK", "event_id": 7504 }')
42
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
43
+ with(:body => "{\"type\":\"rebuild\",\"image_id\":12790328}",
44
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
45
+ to_return(:status => 200, :body => "", :headers => {})
36
46
 
37
47
  expect($stdin).to receive(:gets).and_return("y")
38
48
 
39
- @cli.options = @cli.options.merge(:id => droplet_id)
40
- @cli.rebuild("foo", "NLP Final")
49
+ @cli.options = @cli.options.merge(:id => '12790328')
50
+ @cli.rebuild("example.com","ubuntu-14-04-x64")
41
51
 
42
52
  expect($stdout.string).to eq <<-eos
43
- Droplet id provided. Finding Droplet...done\e[0m, 100823 (foo)\nImage fuzzy name provided. Finding image ID...done\e[0m, 478 (NLP Final)\nWarning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 100823 (foo) with image 478 (NLP Final)...done
53
+ Droplet id provided. Finding Droplet...done\e[0m, 6918990 (example.com)
54
+ Image fuzzy name provided. Finding image ID...done\e[0m, 12790328 (14.04 x64)
55
+ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
44
56
  eos
45
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478")).to have_been_made
46
57
  end
47
58
 
48
- it "rebuilds a droplet with a name based on an image with a fuzy name" do
49
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
50
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
59
+ it "rebuilds a droplet with a name based on an image with a fuzzy name" do
60
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
61
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
62
+ to_return(:status => 200, :body => fixture('show_droplets'), :headers => {})
63
+
64
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets/12790328?per_page=200").
65
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
66
+ to_return(:status => 200, :body => fixture('show_droplet'), :headers => {})
51
67
 
52
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}").
53
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images"))
68
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
69
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
70
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
54
71
 
55
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478").
56
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{ "status": "OK", "event_id": 7504 }')
72
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
73
+ with(:body => "{\"type\":\"rebuild\",\"image_id\":12790328}",
74
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
75
+ to_return(:status => 200, :body => "", :headers => {})
57
76
 
58
77
  expect($stdin).to receive(:gets).and_return("y")
59
78
 
60
- @cli.options = @cli.options.merge(:name => droplet_name)
61
- @cli.rebuild("foo", "NLP Final")
79
+ @cli.options = @cli.options.merge(:name => 'example.com')
80
+ @cli.rebuild("example.com","ubuntu-14-04-x64")
62
81
 
63
82
  expect($stdout.string).to eq <<-eos
64
- Droplet name provided. Finding droplet ID...done\e[0m, 100823 (foo)\nImage fuzzy name provided. Finding image ID...done\e[0m, 478 (NLP Final)\nWarning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 100823 (foo) with image 478 (NLP Final)...done
83
+ Droplet name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
84
+ Image fuzzy name provided. Finding image ID...done\e[0m, 12790328 (14.04 x64)
85
+ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
65
86
  eos
66
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478")).to have_been_made
87
+
67
88
  end
68
89
 
69
90
  it "rebuilds a droplet with a fuzzy name based on an image with an id" do
70
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
71
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
91
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
92
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
93
+ to_return(:status => 200, :body => fixture('show_droplets'), :headers => {})
72
94
 
73
- stub_request(:get, "https://api.digitalocean.com/images/478?api_key=#{api_key}&client_id=#{client_key}").
74
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_image"))
95
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets/12790328?per_page=200").
96
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
97
+ to_return(:status => 200, :body => fixture('show_droplet'), :headers => {})
75
98
 
76
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478").
77
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{ "status": "OK", "event_id": 7504 }')
99
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
100
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
101
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
102
+
103
+ stub_request(:get, "https://api.digitalocean.com/v2/images/12790328?per_page=200").
104
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
105
+ to_return(:status => 200, :body => fixture('show_image'), :headers => {})
106
+
107
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
108
+ with(:body => "{\"type\":\"rebuild\",\"image_id\":6376601}",
109
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
110
+ to_return(:status => 200, :body => "", :headers => {})
78
111
 
79
112
  expect($stdin).to receive(:gets).and_return("y")
80
113
 
81
- @cli.options = @cli.options.merge(:image_id => 478)
82
- @cli.rebuild("foo", "NLP Final")
114
+ @cli.options = @cli.options.merge(:image_id => 12790328)
115
+ @cli.rebuild("example.com","ubuntu-14-04-x64")
83
116
 
84
117
  expect($stdout.string).to eq <<-eos
85
- Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 100823 (foo)\nImage id provided. Finding Image...done\e[0m, 478 (NLP Final)\nWarning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 100823 (foo) with image 478 (NLP Final)...done
118
+ Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
119
+ Image id provided. Finding Image...done\e[0m, 6376601 (My application image)
120
+ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 6376601 (My application image)...Rebuild complete
86
121
  eos
87
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478")).to have_been_made
88
122
  end
89
123
 
90
124
  it "rebuilds a droplet with an id based on an image with an id" do
91
- stub_request(:get, "https://api.digitalocean.com/droplets/#{droplet_id}?api_key=#{api_key}&client_id=#{client_key}").
92
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplet"))
125
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
126
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
127
+ to_return(:status => 200, :body => fixture('show_droplets'), :headers => {})
128
+
129
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets/12790328?per_page=200").
130
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
131
+ to_return(:status => 200, :body => fixture('show_droplet'), :headers => {})
93
132
 
94
- stub_request(:get, "https://api.digitalocean.com/images/478?api_key=#{api_key}&client_id=#{client_key}").
95
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_image"))
133
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
134
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
135
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
96
136
 
97
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478").
98
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{ "status": "OK", "event_id": 7504 }')
137
+ stub_request(:get, "https://api.digitalocean.com/v2/images/12790328?per_page=200").
138
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
139
+ to_return(:status => 200, :body => fixture('show_image'), :headers => {})
140
+
141
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
142
+ with(:body => "{\"type\":\"rebuild\",\"image_id\":6376601}",
143
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
144
+ to_return(:status => 200, :body => "", :headers => {})
99
145
 
100
146
  expect($stdin).to receive(:gets).and_return("y")
101
147
 
102
- @cli.options = @cli.options.merge(:id => droplet_id, :image_id => 478)
103
- @cli.rebuild("foo", "NLP Final")
148
+ @cli.options = @cli.options.merge(:id => '12790328', :image_id => 12790328)
149
+ @cli.rebuild("example.com","ubuntu-14-04-x64")
104
150
 
105
151
  expect($stdout.string).to eq <<-eos
106
- Droplet id provided. Finding Droplet...done\e[0m, 100823 (foo)\nImage id provided. Finding Image...done\e[0m, 478 (NLP Final)\nWarning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 100823 (foo) with image 478 (NLP Final)...done
152
+ Droplet id provided. Finding Droplet...done\e[0m, 6918990 (example.com)
153
+ Image id provided. Finding Image...done\e[0m, 6376601 (My application image)
154
+ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 6376601 (My application image)...Rebuild complete
107
155
  eos
108
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478")).to have_been_made
109
156
  end
110
157
 
111
158
  it "rebuilds a droplet with a name based on an image with an id" do
112
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
113
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
159
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
160
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
161
+ to_return(:status => 200, :body => fixture('show_droplets'), :headers => {})
162
+
163
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets/12790328?per_page=200").
164
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
165
+ to_return(:status => 200, :body => fixture('show_droplet'), :headers => {})
166
+
167
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
168
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
169
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
114
170
 
115
- stub_request(:get, "https://api.digitalocean.com/images/478?api_key=#{api_key}&client_id=#{client_key}").
116
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_image"))
171
+ stub_request(:get, "https://api.digitalocean.com/v2/images/12790328?per_page=200").
172
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
173
+ to_return(:status => 200, :body => fixture('show_image'), :headers => {})
117
174
 
118
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478").
119
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{ "status": "OK", "event_id": 7504 }')
175
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
176
+ with(:body => "{\"type\":\"rebuild\",\"image_id\":6376601}",
177
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
178
+ to_return(:status => 200, :body => "", :headers => {})
120
179
 
121
180
  expect($stdin).to receive(:gets).and_return("y")
122
181
 
123
- @cli.options = @cli.options.merge(:name => droplet_name, :image_id => 478)
124
- @cli.rebuild("foo", "NLP Final")
182
+ @cli.options = @cli.options.merge(:name => 'example.com', :image_id => 12790328)
183
+ @cli.rebuild("example.com","ubuntu-14-04-x64")
125
184
 
126
185
  expect($stdout.string).to eq <<-eos
127
- Droplet name provided. Finding droplet ID...done\e[0m, 100823 (foo)\nImage id provided. Finding Image...done\e[0m, 478 (NLP Final)\nWarning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 100823 (foo) with image 478 (NLP Final)...done
186
+ Droplet name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
187
+ Image id provided. Finding Image...done\e[0m, 6376601 (My application image)
188
+ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 6376601 (My application image)...Rebuild complete
128
189
  eos
129
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478")).to have_been_made
130
190
  end
131
191
 
132
192
  it "rebuilds a droplet with a fuzzy name based on an image with a name" do
133
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
134
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
193
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
194
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
195
+ to_return(:status => 200, :body => fixture('show_droplets'), :headers => {})
135
196
 
136
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}").
137
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images"))
197
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
198
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
199
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
138
200
 
139
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478").
140
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{ "status": "OK", "event_id": 7504 }')
201
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
202
+ with(:body => "{\"type\":\"rebuild\",\"image_id\":12790328}",
203
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
204
+ to_return(:status => 200, :body => "", :headers => {})
141
205
 
142
206
  expect($stdin).to receive(:gets).and_return("y")
143
207
 
144
- @cli.options = @cli.options.merge(:image_name => "NLP Final")
145
- @cli.rebuild("foo", "NLP Final")
208
+ @cli.options = @cli.options.merge(:image_name => "14.04 x64")
209
+
210
+ @cli.rebuild("example.com","ubuntu-14-04-x64")
146
211
 
147
212
  expect($stdout.string).to eq <<-eos
148
- Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 100823 (foo)\nImage name provided. Finding image ID...done\e[0m, 478 (NLP Final)\nWarning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 100823 (foo) with image 478 (NLP Final)...done
213
+ Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
214
+ Image name provided. Finding Image...done\e[0m, 12790328 (14.04 x64)
215
+ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
149
216
  eos
150
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478")).to have_been_made
151
217
  end
152
218
 
153
219
  it "rebuilds a droplet with an id based on an image with a name" do
154
- stub_request(:get, "https://api.digitalocean.com/droplets/#{droplet_id}?api_key=#{api_key}&client_id=#{client_key}").
155
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplet"))
220
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
221
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
222
+ to_return(:status => 200, :body => fixture('show_droplets'), :headers => {})
223
+
224
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets/12790328?per_page=200").
225
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
226
+ to_return(:status => 200, :body => fixture('show_droplet'), :headers => {})
156
227
 
157
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}").
158
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images"))
228
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
229
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
230
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
159
231
 
160
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478").
161
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{ "status": "OK", "event_id": 7504 }')
232
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
233
+ with(:body => "{\"type\":\"rebuild\",\"image_id\":12790328}",
234
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
235
+ to_return(:status => 200, :body => "", :headers => {})
162
236
 
163
237
  expect($stdin).to receive(:gets).and_return("y")
164
238
 
165
- @cli.options = @cli.options.merge(:id => droplet_id, :image_name => "NLP Final")
166
- @cli.rebuild("foo", "NLP Final")
239
+ @cli.options = @cli.options.merge(:id => '12790328', :image_name => "14.04 x64")
240
+ @cli.rebuild("example.com", "14.04 x64")
167
241
 
168
242
  expect($stdout.string).to eq <<-eos
169
- Droplet id provided. Finding Droplet...done\e[0m, 100823 (foo)\nImage name provided. Finding image ID...done\e[0m, 478 (NLP Final)\nWarning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 100823 (foo) with image 478 (NLP Final)...done
243
+ Droplet id provided. Finding Droplet...done\e[0m, 6918990 (example.com)
244
+ Image name provided. Finding Image...done\e[0m, 12790328 (14.04 x64)
245
+ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
170
246
  eos
171
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478")).to have_been_made
172
247
  end
173
248
 
174
249
  it "rebuilds a droplet with a name based on an image with a name" do
175
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
176
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
250
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
251
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
252
+ to_return(:status => 200, :body => fixture('show_droplets'), :headers => {})
177
253
 
178
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}").
179
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images"))
254
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
255
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
256
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
180
257
 
181
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478").
182
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{ "status": "OK", "event_id": 7504 }')
258
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
259
+ with(:body => "{\"type\":\"rebuild\",\"image_id\":12790328}",
260
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
261
+ to_return(:status => 200, :body => "", :headers => {})
183
262
 
184
263
  expect($stdin).to receive(:gets).and_return("y")
185
264
 
186
- @cli.options = @cli.options.merge(:name => droplet_name, :image_name => "NLP Final")
187
- @cli.rebuild("foo", "NLP Final")
265
+ @cli.options = @cli.options.merge(:name => 'example.com', :image_name => "14.04 x64")
266
+ @cli.rebuild("example.com", "14.04 x64")
188
267
 
189
268
  expect($stdout.string).to eq <<-eos
190
- Droplet name provided. Finding droplet ID...done\e[0m, 100823 (foo)\nImage name provided. Finding image ID...done\e[0m, 478 (NLP Final)\nWarning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 100823 (foo) with image 478 (NLP Final)...done
269
+ Droplet name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
270
+ Image name provided. Finding Image...done\e[0m, 12790328 (14.04 x64)
271
+ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
191
272
  eos
192
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478")).to have_been_made
193
273
  end
194
274
 
195
275
  it "rebuilds a droplet with confirm flag set" do
196
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
197
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
276
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
277
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
278
+ to_return(:status => 200, :body => fixture('show_droplets'), :headers => {})
279
+
280
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
281
+ with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
282
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
198
283
 
199
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}").
200
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images"))
284
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
285
+ with(:body => "{\"type\":\"rebuild\",\"image_id\":12790328}",
286
+ :headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
287
+ to_return(:status => 200, :body => "", :headers => {})
201
288
 
202
- stub_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478").
203
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => '{ "status": "OK", "event_id": 7504 }')
204
289
 
205
290
  @cli.options = @cli.options.merge(:confirm => "no")
206
- @cli.rebuild("foo", "NLP Final")
291
+ @cli.rebuild("example.com", "14.04 x64")
207
292
 
208
293
  expect($stdout.string).to eq <<-eos
209
- Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 100823 (foo)\nImage fuzzy name provided. Finding image ID...done\e[0m, 478 (NLP Final)\nQueuing rebuild for droplet 100823 (foo) with image 478 (NLP Final)...done
294
+ Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
295
+ Image fuzzy name provided. Finding image ID...done\e[0m, 12790328 (14.04 x64)
296
+ Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
210
297
  eos
211
- expect(a_request(:post, "https://api.digitalocean.com/droplets/100823/rebuild?api_key=#{api_key}&client_id=#{client_key}&image_id=478")).to have_been_made
212
298
  end
213
299
  end
214
300