tugboat 1.3.1 → 2.0.0.RC1

Sign up to get free protection for your applications and to get access to all the features.
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,23 +5,25 @@ describe Tugboat::CLI do
5
5
 
6
6
  describe "droplets" do
7
7
  it "shows a list when droplets exist" 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"))
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'},)
10
11
 
11
12
  @cli.droplets
12
13
 
13
14
  expect($stdout.string).to eq <<-eos
14
- test222 (ip: 33.33.33.10, privateip: 10.20.30.1, status: \e[32mactive\e[0m, region: 1, id: 100823)
15
- test223 (ip: 33.33.33.10, status: \e[32mactive\e[0m, region: 1, id: 100823)
16
- foo (ip: 33.33.33.10, privateip: 10.20.30.40, status: \e[32mactive\e[0m, region: 1, id: 100823)
15
+ example.com (ip: 104.236.32.182, status: \e[32mactive\e[0m, region: nyc3, id: 6918990)
16
+ example2.com (ip: 104.236.32.172, status: \e[32mactive\e[0m, region: nyc3, id: 3164956)
17
+ example3.com (ip: 104.236.32.173, status: \e[31moff\e[0m, region: nyc3, id: 3164444)
17
18
  eos
18
19
 
19
- expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
20
+ expect(a_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200")).to have_been_made
20
21
  end
21
22
 
22
23
  it "returns an error message when no droplets exist" do
23
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
24
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets_empty"))
24
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
25
+ 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'}).
26
+ to_return(:status => 200, :body => fixture("show_droplets_empty"), :headers => {'Content-Type' => 'application/json'},)
25
27
 
26
28
  @cli.droplets
27
29
 
@@ -30,11 +32,12 @@ You don't appear to have any droplets.
30
32
  Try creating one with \e[32m`tugboat create`\e[0m
31
33
  eos
32
34
 
33
- expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
35
+ expect(a_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200")).to have_been_made
34
36
  end
35
37
  it "shows no output when --quiet is set" do
36
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
37
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets_empty"))
38
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?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_droplets"), :headers => {'Content-Type' => 'application/json'},)
38
41
 
39
42
  @cli.options = @cli.options.merge(:quiet => true)
40
43
  @cli.droplets
@@ -42,7 +45,7 @@ Try creating one with \e[32m`tugboat create`\e[0m
42
45
  # Should be /dev/null not stringIO
43
46
  expect($stdout).to be_a File
44
47
 
45
- expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
48
+ expect(a_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200")).to have_been_made
46
49
  end
47
50
  end
48
51
 
@@ -5,94 +5,98 @@ describe Tugboat::CLI do
5
5
 
6
6
  describe "halt" do
7
7
  it "halts a droplet with 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"))
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(:put, "https://api.digitalocean.com/droplets/100823/shutdown?api_key=#{api_key}&client_id=#{client_key}").
12
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplet"))
12
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
13
+ with(:body => "{\"type\":\"shutdown\"}",
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('shutdown_response'), :headers => {})
13
16
 
14
- @cli.halt("foo")
17
+ @cli.halt("example.com")
15
18
 
16
19
  expect($stdout.string).to eq <<-eos
17
- Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 100823 (foo)
18
- Queuing shutdown for 100823 (foo)...done
20
+ Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
21
+ Queuing shutdown for 6918990 (example.com)...Halt successful!
19
22
  eos
20
-
21
- expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
22
- expect(a_request(:put, "https://api.digitalocean.com/droplets/100823/shutdown?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
23
23
  end
24
24
 
25
25
  it "halts a droplet hard when the hard option is used" do
26
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
27
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
28
- stub_request(:put, "https://api.digitalocean.com/droplets/100823/power_off?api_key=#{api_key}&client_id=#{client_key}").
29
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplet"))
26
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
27
+ 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'}).
28
+ to_return(:status => 200, :body => fixture('show_droplets'), :headers => {})
29
+
30
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
31
+ with(:body => "{\"type\":\"power_off\"}",
32
+ :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 => "", :headers => {})
30
34
 
31
35
  @cli.options = @cli.options.merge(:hard => true)
32
- @cli.halt("foo")
36
+ @cli.halt("example.com")
33
37
 
34
38
  expect($stdout.string).to eq <<-eos
35
- Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 100823 (foo)
36
- Queuing hard shutdown for 100823 (foo)...done
39
+ Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
40
+ Queuing hard shutdown for 6918990 (example.com)...Halt successful!
37
41
  eos
38
-
39
- expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
40
- expect(a_request(:put, "https://api.digitalocean.com/droplets/100823/power_off?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
41
42
  end
42
43
 
43
44
  it "halts a droplet with an id" do
44
- stub_request(:get, "https://api.digitalocean.com/droplets/#{droplet_id}?api_key=#{api_key}&client_id=#{client_key}").
45
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplet"))
45
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets/?per_page=200").
46
+ 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'}).
47
+ to_return(:status => 200, :body => fixture("show_droplets"), :headers => {'Content-Type' => 'application/json'},)
48
+
49
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets/6918990?per_page=200").
50
+ 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'}).
51
+ to_return(:status => 200, :body => fixture('show_droplet'), :headers => {})
46
52
 
47
- stub_request(:put, "https://api.digitalocean.com/droplets/100823/shutdown?api_key=#{api_key}&client_id=#{client_key}").
48
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplet"))
53
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
54
+ with(:body => "{\"type\":\"shutdown\"}",
55
+ :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'}).
56
+ to_return(:status => 200, :body => fixture('shutdown_response'), :headers => {})
49
57
 
50
- @cli.options = @cli.options.merge(:id => droplet_id)
58
+ @cli.options = @cli.options.merge(:id => '6918990')
51
59
  @cli.halt
52
60
 
53
61
  expect($stdout.string).to eq <<-eos
54
- Droplet id provided. Finding Droplet...done\e[0m, 100823 (foo)
55
- Queuing shutdown for 100823 (foo)...done
62
+ Droplet id provided. Finding Droplet...done\e[0m, 6918990 (example.com)
63
+ Queuing shutdown for 6918990 (example.com)...Halt successful!
56
64
  eos
57
-
58
- expect(a_request(:get, "https://api.digitalocean.com/droplets/#{droplet_id}?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
59
- expect(a_request(:put, "https://api.digitalocean.com/droplets/100823/shutdown?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
60
65
  end
61
66
 
62
67
 
63
68
  it "halts a droplet with a name" do
64
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
65
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets"))
69
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
70
+ 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'}).
71
+ to_return(:status => 200, :body => fixture("show_droplets"), :headers => {'Content-Type' => 'application/json'},)
66
72
 
67
- stub_request(:put, "https://api.digitalocean.com/droplets/100823/shutdown?api_key=#{api_key}&client_id=#{client_key}").
68
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplet"))
73
+ stub_request(:post, "https://api.digitalocean.com/v2/droplets/6918990/actions").
74
+ with(:body => "{\"type\":\"shutdown\"}",
75
+ :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'}).
76
+ to_return(:status => 200, :body => fixture('shutdown_response'), :headers => {})
69
77
 
70
- @cli.options = @cli.options.merge(:name => droplet_name)
78
+ @cli.options = @cli.options.merge(:name => 'example.com')
71
79
  @cli.halt
72
80
 
73
81
  expect($stdout.string).to eq <<-eos
74
- Droplet name provided. Finding droplet ID...done\e[0m, 100823 (foo)
75
- Queuing shutdown for 100823 (foo)...done
82
+ Droplet name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
83
+ Queuing shutdown for 6918990 (example.com)...Halt successful!
76
84
  eos
77
-
78
- expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
79
- expect(a_request(:put, "https://api.digitalocean.com/droplets/100823/shutdown?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
80
85
  end
81
86
 
82
87
 
83
88
  it "does not halt a droplet that is off" do
84
- stub_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}").
85
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_droplets_inactive"))
89
+ stub_request(:get, "https://api.digitalocean.com/v2/droplets?per_page=200").
90
+ 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'}).
91
+ to_return(:status => 200, :body => fixture("show_droplets"), :headers => {'Content-Type' => 'application/json'},)
86
92
 
87
- @cli.options = @cli.options.merge(:name => droplet_name)
93
+ @cli.options = @cli.options.merge(:name => 'example3.com')
88
94
  expect {@cli.halt}.to raise_error(SystemExit)
89
95
 
90
96
  expect($stdout.string).to eq <<-eos
91
- Droplet name provided. Finding droplet ID...done\e[0m, 100823 (foo)
97
+ Droplet name provided. Finding droplet ID...done\e[0m, 3164444 (example3.com)
92
98
  Droplet must be on for this operation to be successful.
93
99
  eos
94
-
95
- expect(a_request(:get, "https://api.digitalocean.com/droplets?api_key=#{api_key}&client_id=#{client_key}")).to have_been_made
96
100
  end
97
101
 
98
102
  end
@@ -4,86 +4,162 @@ describe Tugboat::CLI do
4
4
  include_context "spec"
5
5
 
6
6
  describe "images" do
7
- it "shows a list" do
8
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=my_images").
9
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images"))
7
+ it "shows all images by default" do
8
+ stub_request(:get, "https://api.digitalocean.com/v2/images?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_images'), :headers => {})
10
11
 
11
- @cli.images
12
-
13
- expect($stdout.string).to eq <<-eos
14
- Listing Your Images
15
- (Use `tugboat images --global` to show all images)
16
- My Images:
17
- NYTD Backup 1-18-2012 (id: 466, distro: Ubuntu)
18
- NLP Final (id: 478, distro: Ubuntu)
19
- eos
20
-
21
- expect(a_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=my_images")).to have_been_made
22
- end
23
-
24
- it "acknowledges when my images are empty" do
25
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=my_images").
26
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images_empty"))
12
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200&private=true").
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_global'), :headers => {})
27
15
 
28
16
  @cli.images
29
17
 
30
18
  expect($stdout.string).to eq <<-eos
31
- Listing Your Images
32
- (Use `tugboat images --global` to show all images)
33
- My Images:
34
- No images found
19
+ Showing both private and public images
20
+ Private Images:
21
+ My application image (id: 6376601, distro: Ubuntu)
22
+
23
+ Public Images:
24
+ 745.1.0 (alpha) (slug: coreos-alpha, id: 12789325, distro: CoreOS)
25
+ 723.3.0 (beta) (slug: coreos-beta, id: 12789350, distro: CoreOS)
26
+ 717.3.0 (stable) (slug: coreos-stable, id: 12789351, distro: CoreOS)
27
+ 5.10 x64 (slug: centos-5-8-x64, id: 6372321, distro: CentOS)
28
+ 5.10 x32 (slug: centos-5-8-x32, id: 6372425, distro: CentOS)
29
+ 6.0 x64 (slug: debian-6-0-x64, id: 6372581, distro: Debian)
30
+ 6.0 x32 (slug: debian-6-0-x32, id: 6372662, distro: Debian)
31
+ 21 x64 (slug: fedora-21-x64, id: 9640922, distro: Fedora)
32
+ 14.10 x32 (slug: ubuntu-14-10-x32, id: 9801951, distro: Ubuntu)
33
+ 14.10 x64 (slug: ubuntu-14-10-x64, id: 9801954, distro: Ubuntu)
34
+ 10.1 (slug: freebsd-10-1-x64, id: 10144573, distro: FreeBSD)
35
+ 12.04.5 x64 (slug: ubuntu-12-04-x64, id: 10321756, distro: Ubuntu)
36
+ 12.04.5 x32 (slug: ubuntu-12-04-x32, id: 10321777, distro: Ubuntu)
37
+ 7.0 x64 (slug: debian-7-0-x64, id: 10322059, distro: Debian)
38
+ 7.0 x32 (slug: debian-7-0-x32, id: 10322378, distro: Debian)
39
+ 7 x64 (slug: centos-7-0-x64, id: 10322623, distro: CentOS)
40
+ 6.5 x32 (slug: centos-6-5-x32, id: 11523060, distro: CentOS)
41
+ 6.5 x64 (slug: centos-6-5-x64, id: 11523085, distro: CentOS)
42
+ 22 x64 (slug: fedora-22-x64, id: 12065782, distro: Fedora)
43
+ 15.04 x64 (slug: ubuntu-15-04-x64, id: 12658446, distro: Ubuntu)
44
+ 15.04 x32 (slug: ubuntu-15-04-x32, id: 12660649, distro: Ubuntu)
45
+ 8.1 x64 (slug: debian-8-x64, id: 12778278, distro: Debian)
46
+ 8.1 x32 (slug: debian-8-x32, id: 12778337, distro: Debian)
47
+ 14.04 x32 (slug: ubuntu-14-04-x32, id: 12790298, distro: Ubuntu)
48
+ 14.04 x64 (slug: ubuntu-14-04-x64, id: 12790328, distro: Ubuntu)
49
+ FreeBSD AMP on 10.1 (slug: freebsd-amp, id: 10163059, distro: FreeBSD)
50
+ Mumble Server (murmur) on 14.04 (slug: mumble, id: 11132249, distro: Ubuntu)
51
+ LAMP on 14.04 (slug: lamp, id: 11146541, distro: Ubuntu)
52
+ LEMP on 14.04 (slug: lemp, id: 11146558, distro: Ubuntu)
53
+ MEAN on 14.04 (slug: mean, id: 11146864, distro: Ubuntu)
54
+ Joomla! 3.4.1 on 14.04 (slug: joomla, id: 11163798, distro: Ubuntu)
55
+ Drone on 14.04 (slug: drone, id: 11774848, distro: Ubuntu)
56
+ Magento 1.9.1.1 on 14.04 (slug: magento, id: 11876697, distro: Ubuntu)
57
+ Ghost 0.6.4 on 14.04 (slug: ghost, id: 12035275, distro: Ubuntu)
58
+ Ruby on Rails on 14.04 (Postgres, Nginx, Unicorn) (slug: ruby-on-rails, id: 12035706, distro: Ubuntu)
59
+ ownCloud 8.0.4 on 14.04 (slug: owncloud, id: 12333784, distro: Ubuntu)
60
+ Drupal 7.38 on 14.04 (slug: drupal, id: 12394820, distro: Ubuntu)
61
+ Dokku v0.3.19 on 14.04 (slug: dokku, id: 12466201, distro: Ubuntu)
62
+ MongoDB 3.0.4 on 14.04 (slug: mongodb, id: 12467027, distro: Ubuntu)
63
+ node-v0.12.5 on 14.04 (slug: node, id: 12467797, distro: Ubuntu)
64
+ Cassandra on 14.04 (slug: cassandra, id: 12540744, distro: Ubuntu)
65
+ ELK Logging Stack on 14.04 (slug: elk, id: 12542038, distro: Ubuntu)
66
+ GitLab 7.12.2 CE on 14.04 (slug: gitlab, id: 12702571, distro: Ubuntu)
67
+ WordPress on 14.04 (slug: wordpress, id: 12740613, distro: Ubuntu)
68
+ Django on 14.04 (slug: django, id: 12740667, distro: Ubuntu)
69
+ Docker 1.7.1 on 14.04 (slug: docker, id: 12764973, distro: Ubuntu)
70
+ MediaWiki 1.24.2 on 14.04 (slug: mediawiki, id: 11716043, distro: Ubuntu)
71
+ PHPMyAdmin on 14.04 (slug: phpmyadmin, id: 11730661, distro: Ubuntu)
72
+ Redmine on 14.04 (slug: redmine, id: 12438838, distro: Ubuntu)
35
73
  eos
36
-
37
- expect(a_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=my_images")).to have_been_made
38
74
  end
39
75
 
40
- it "acknowledges when my images are empty and also shows a global list" do
41
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=my_images").
42
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images_empty"))
76
+ it "acknowledges when personal images are empty when showing default full list" do
77
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
78
+ 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'}).
79
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
43
80
 
44
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=global").
45
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images_global"))
81
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200&private=true").
82
+ 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'}).
83
+ to_return(:status => 200, :body => fixture('show_images_empty'), :headers => {})
46
84
 
47
- @cli.options = @cli.options.merge(:global => true)
85
+ @cli.options = @cli.options.merge(:show_private_images => true)
48
86
  @cli.images
49
87
 
50
88
  expect($stdout.string).to eq <<-eos
51
- My Images:
52
- No images found
53
-
54
- Global Images:
55
- NYTD Backup 1-18-2012 (id: 466, distro: Ubuntu)
56
- NLP Final (id: 478, distro: Ubuntu)
57
- Global Final (id: 479, distro: Ubuntu)
89
+ Showing both private and public images
90
+ Private Images:
91
+ No private images found
92
+
93
+ Public Images:
94
+ 745.1.0 (alpha) (slug: coreos-alpha, id: 12789325, distro: CoreOS)
95
+ 723.3.0 (beta) (slug: coreos-beta, id: 12789350, distro: CoreOS)
96
+ 717.3.0 (stable) (slug: coreos-stable, id: 12789351, distro: CoreOS)
97
+ 5.10 x64 (slug: centos-5-8-x64, id: 6372321, distro: CentOS)
98
+ 5.10 x32 (slug: centos-5-8-x32, id: 6372425, distro: CentOS)
99
+ 6.0 x64 (slug: debian-6-0-x64, id: 6372581, distro: Debian)
100
+ 6.0 x32 (slug: debian-6-0-x32, id: 6372662, distro: Debian)
101
+ 21 x64 (slug: fedora-21-x64, id: 9640922, distro: Fedora)
102
+ 14.10 x32 (slug: ubuntu-14-10-x32, id: 9801951, distro: Ubuntu)
103
+ 14.10 x64 (slug: ubuntu-14-10-x64, id: 9801954, distro: Ubuntu)
104
+ 10.1 (slug: freebsd-10-1-x64, id: 10144573, distro: FreeBSD)
105
+ 12.04.5 x64 (slug: ubuntu-12-04-x64, id: 10321756, distro: Ubuntu)
106
+ 12.04.5 x32 (slug: ubuntu-12-04-x32, id: 10321777, distro: Ubuntu)
107
+ 7.0 x64 (slug: debian-7-0-x64, id: 10322059, distro: Debian)
108
+ 7.0 x32 (slug: debian-7-0-x32, id: 10322378, distro: Debian)
109
+ 7 x64 (slug: centos-7-0-x64, id: 10322623, distro: CentOS)
110
+ 6.5 x32 (slug: centos-6-5-x32, id: 11523060, distro: CentOS)
111
+ 6.5 x64 (slug: centos-6-5-x64, id: 11523085, distro: CentOS)
112
+ 22 x64 (slug: fedora-22-x64, id: 12065782, distro: Fedora)
113
+ 15.04 x64 (slug: ubuntu-15-04-x64, id: 12658446, distro: Ubuntu)
114
+ 15.04 x32 (slug: ubuntu-15-04-x32, id: 12660649, distro: Ubuntu)
115
+ 8.1 x64 (slug: debian-8-x64, id: 12778278, distro: Debian)
116
+ 8.1 x32 (slug: debian-8-x32, id: 12778337, distro: Debian)
117
+ 14.04 x32 (slug: ubuntu-14-04-x32, id: 12790298, distro: Ubuntu)
118
+ 14.04 x64 (slug: ubuntu-14-04-x64, id: 12790328, distro: Ubuntu)
119
+ FreeBSD AMP on 10.1 (slug: freebsd-amp, id: 10163059, distro: FreeBSD)
120
+ Mumble Server (murmur) on 14.04 (slug: mumble, id: 11132249, distro: Ubuntu)
121
+ LAMP on 14.04 (slug: lamp, id: 11146541, distro: Ubuntu)
122
+ LEMP on 14.04 (slug: lemp, id: 11146558, distro: Ubuntu)
123
+ MEAN on 14.04 (slug: mean, id: 11146864, distro: Ubuntu)
124
+ Joomla! 3.4.1 on 14.04 (slug: joomla, id: 11163798, distro: Ubuntu)
125
+ Drone on 14.04 (slug: drone, id: 11774848, distro: Ubuntu)
126
+ Magento 1.9.1.1 on 14.04 (slug: magento, id: 11876697, distro: Ubuntu)
127
+ Ghost 0.6.4 on 14.04 (slug: ghost, id: 12035275, distro: Ubuntu)
128
+ Ruby on Rails on 14.04 (Postgres, Nginx, Unicorn) (slug: ruby-on-rails, id: 12035706, distro: Ubuntu)
129
+ ownCloud 8.0.4 on 14.04 (slug: owncloud, id: 12333784, distro: Ubuntu)
130
+ Drupal 7.38 on 14.04 (slug: drupal, id: 12394820, distro: Ubuntu)
131
+ Dokku v0.3.19 on 14.04 (slug: dokku, id: 12466201, distro: Ubuntu)
132
+ MongoDB 3.0.4 on 14.04 (slug: mongodb, id: 12467027, distro: Ubuntu)
133
+ node-v0.12.5 on 14.04 (slug: node, id: 12467797, distro: Ubuntu)
134
+ Cassandra on 14.04 (slug: cassandra, id: 12540744, distro: Ubuntu)
135
+ ELK Logging Stack on 14.04 (slug: elk, id: 12542038, distro: Ubuntu)
136
+ GitLab 7.12.2 CE on 14.04 (slug: gitlab, id: 12702571, distro: Ubuntu)
137
+ WordPress on 14.04 (slug: wordpress, id: 12740613, distro: Ubuntu)
138
+ Django on 14.04 (slug: django, id: 12740667, distro: Ubuntu)
139
+ Docker 1.7.1 on 14.04 (slug: docker, id: 12764973, distro: Ubuntu)
140
+ MediaWiki 1.24.2 on 14.04 (slug: mediawiki, id: 11716043, distro: Ubuntu)
141
+ PHPMyAdmin on 14.04 (slug: phpmyadmin, id: 11730661, distro: Ubuntu)
142
+ Redmine on 14.04 (slug: redmine, id: 12438838, distro: Ubuntu)
58
143
  eos
59
-
60
- expect(a_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=my_images")).to have_been_made
61
- expect(a_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=global")).to have_been_made
62
144
  end
63
145
 
64
- it "shows a global list" do
65
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=my_images").
66
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images"))
146
+ it "acknowledges when personal images are empty when just show private images flag given" do
147
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200").
148
+ 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'}).
149
+ to_return(:status => 200, :body => fixture('show_images'), :headers => {})
67
150
 
68
- stub_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=global").
69
- to_return(:headers => {'Content-Type' => 'application/json'}, :status => 200, :body => fixture("show_images_global"))
151
+ stub_request(:get, "https://api.digitalocean.com/v2/images?per_page=200&private=true").
152
+ 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'}).
153
+ to_return(:status => 200, :body => fixture('show_images_empty'), :headers => {})
70
154
 
71
- @cli.options = @cli.options.merge(:global => true)
155
+ @cli.options = @cli.options.merge(:show_just_private_images => true)
72
156
  @cli.images
73
157
 
74
158
  expect($stdout.string).to eq <<-eos
75
- My Images:
76
- NYTD Backup 1-18-2012 (id: 466, distro: Ubuntu)
77
- NLP Final (id: 478, distro: Ubuntu)
78
-
79
- Global Images:
80
- NYTD Backup 1-18-2012 (id: 466, distro: Ubuntu)
81
- NLP Final (id: 478, distro: Ubuntu)
82
- Global Final (id: 479, distro: Ubuntu)
159
+ Showing just private images
160
+ Private Images:
161
+ No private images found
83
162
  eos
84
-
85
- expect(a_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=my_images")).to have_been_made
86
- expect(a_request(:get, "https://api.digitalocean.com/images?api_key=#{api_key}&client_id=#{client_key}&filter=global")).to have_been_made
87
163
  end
88
164
  end
89
165