tugboat 3.1.0 → 4.0.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -1
- data/CODE_OF_CONDUCT.md +46 -0
- data/lib/tugboat/cli.rb +7 -1
- data/lib/tugboat/config.rb +11 -1
- data/lib/tugboat/middleware.rb +2 -0
- data/lib/tugboat/middleware/ask_for_credentials.rb +2 -1
- data/lib/tugboat/middleware/base.rb +31 -13
- data/lib/tugboat/middleware/check_snapshot_parameters.rb +16 -0
- data/lib/tugboat/middleware/info_droplet.rb +2 -2
- data/lib/tugboat/middleware/inject_client.rb +10 -1
- data/lib/tugboat/middleware/list_droplets.rb +5 -3
- data/lib/tugboat/version.rb +1 -1
- data/spec/cli/add_key_spec.rb +7 -9
- data/spec/cli/authorize_cli_spec.rb +4 -34
- data/spec/cli/config_cli_spec.rb +10 -5
- data/spec/cli/create_cli_spec.rb +20 -17
- data/spec/cli/debug_cli_spec.rb +11 -12
- data/spec/cli/destroy_cli_spec.rb +35 -12
- data/spec/cli/destroy_image_cli_spec.rb +12 -10
- data/spec/cli/droplets_cli_spec.rb +74 -48
- data/spec/cli/env_variable_spec.rb +4 -4
- data/spec/cli/halt_cli_spec.rb +16 -13
- data/spec/cli/help_cli_spec.rb +4 -4
- data/spec/cli/images_cli_spec.rb +9 -7
- data/spec/cli/info_cli_spec.rb +120 -50
- data/spec/cli/info_image_cli_spec.rb +24 -23
- data/spec/cli/keys_cli_spec.rb +3 -3
- data/spec/cli/password_reset_cli_spec.rb +12 -12
- data/spec/cli/rebuild_cli_spec.rb +31 -24
- data/spec/cli/regions_cli_spec.rb +3 -3
- data/spec/cli/resize_cli_spec.rb +16 -16
- data/spec/cli/restart_cli_spec.rb +32 -11
- data/spec/cli/sizes_cli_spec.rb +3 -3
- data/spec/cli/snapshot_cli_spec.rb +25 -9
- data/spec/cli/ssh_cli_spec.rb +10 -10
- data/spec/cli/start_cli_spec.rb +15 -15
- data/spec/cli/verify_cli_spec.rb +4 -7
- data/spec/cli/version_cli_spec.rb +1 -2
- data/spec/cli/wait_cli_spec.rb +16 -16
- data/spec/config_spec.rb +7 -1
- data/spec/fixtures/show_droplets.json +7 -4
- data/spec/fixtures/show_droplets_paginated_first.json +10 -7
- data/spec/fixtures/show_droplets_paginated_last.json +11 -5
- data/spec/fixtures/show_droplets_private_ip.json +7 -4
- data/spec/middleware/base_spec.rb +1 -2
- data/spec/middleware/check_configuration_spec.rb +1 -1
- data/spec/middleware/check_credentials_spec.rb +1 -1
- data/spec/middleware/check_droplet_active_spec.rb +1 -1
- data/spec/middleware/check_droplet_inactive_spec.rb +1 -1
- data/spec/middleware/find_droplet_spec.rb +3 -5
- data/spec/middleware/find_image_spec.rb +3 -5
- data/spec/middleware/ssh_droplet_spec.rb +5 -10
- data/spec/shared/environment.rb +2 -18
- data/tugboat.gemspec +1 -2
- metadata +8 -6
@@ -13,9 +13,7 @@ describe Tugboat::CLI do
|
|
13
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
14
|
to_return(headers: { 'Content-Type' => 'application/json' }, status: 200, body: fixture('show_coreos_image'))
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
expect($stdout.string).to eq <<-eos
|
16
|
+
expected_string = <<-eos
|
19
17
|
Image fuzzy name provided. Finding image ID...done\e[0m, 12789325 (745.1.0 (alpha))
|
20
18
|
|
21
19
|
Name: 745.1.0 (alpha)
|
@@ -24,6 +22,8 @@ Distribution: CoreOS
|
|
24
22
|
Min Disk Size: 20GB
|
25
23
|
Regions: nyc1,sfo1,nyc2,ams2,sgp1,lon1,nyc3,ams3,fra1
|
26
24
|
eos
|
25
|
+
|
26
|
+
expect { cli.info_image('745.1.0 (alpha)') }.to output(expected_string).to_stdout
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'shows an image with an id' do
|
@@ -35,10 +35,7 @@ Regions: nyc1,sfo1,nyc2,ams2,sgp1,lon1,nyc3,ams3,fra1
|
|
35
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
36
|
to_return(headers: { 'Content-Type' => 'application/json' }, status: 200, body: fixture('show_redmine_image'))
|
37
37
|
|
38
|
-
|
39
|
-
cli.info_image
|
40
|
-
|
41
|
-
expect($stdout.string).to eq <<-eos
|
38
|
+
expected_string = <<-eos
|
42
39
|
Image id provided. Finding Image...done\e[0m, 12438838 (Redmine on 14.04)
|
43
40
|
|
44
41
|
Name: Redmine on 14.04
|
@@ -47,6 +44,9 @@ Distribution: Ubuntu
|
|
47
44
|
Min Disk Size: 20GB
|
48
45
|
Regions: nyc1,ams1,sfo1,nyc2,ams2,sgp1,lon1,nyc3,ams3,fra1
|
49
46
|
eos
|
47
|
+
|
48
|
+
cli.options = cli.options.merge(id: 12_438_838)
|
49
|
+
expect { cli.info_image }.to output(expected_string).to_stdout
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'shows an image with a name' do
|
@@ -58,10 +58,7 @@ Regions: nyc1,ams1,sfo1,nyc2,ams2,sgp1,lon1,nyc3,ams3,fra1
|
|
58
58
|
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' }).
|
59
59
|
to_return(headers: { 'Content-Type' => 'application/json' }, status: 200, body: fixture('show_redmine_image'))
|
60
60
|
|
61
|
-
|
62
|
-
cli.info_image
|
63
|
-
|
64
|
-
expect($stdout.string).to eq <<-eos
|
61
|
+
expected_string = <<-eos
|
65
62
|
Image name provided. Finding Image...done\e[0m, 12438838 (Redmine on 14.04)
|
66
63
|
|
67
64
|
Name: Redmine on 14.04
|
@@ -70,6 +67,9 @@ Distribution: Ubuntu
|
|
70
67
|
Min Disk Size: 20GB
|
71
68
|
Regions: nyc1,ams1,sfo1,nyc2,ams2,sgp1,lon1,nyc3,ams3,fra1
|
72
69
|
eos
|
70
|
+
|
71
|
+
cli.options = cli.options.merge(name: 'Redmine on 14.04')
|
72
|
+
expect { cli.info_image }.to output(expected_string).to_stdout
|
73
73
|
end
|
74
74
|
|
75
75
|
it 'errors if no image with matching id is found' do
|
@@ -81,12 +81,12 @@ Regions: nyc1,ams1,sfo1,nyc2,ams2,sgp1,lon1,nyc3,ams3,fra1
|
|
81
81
|
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' }).
|
82
82
|
to_return(status: 404, body: fixture('not_found'), headers: {})
|
83
83
|
|
84
|
-
|
85
|
-
expect { cli.info_image }.to raise_error(SystemExit)
|
86
|
-
|
87
|
-
expect($stdout.string).to eq <<-eos
|
84
|
+
expected_string = <<-eos
|
88
85
|
Image id provided. Finding Image...Failed to find Image: The resource you were accessing could not be found.
|
89
86
|
eos
|
87
|
+
|
88
|
+
cli.options = cli.options.merge(id: '123')
|
89
|
+
expect { cli.info_image }.to raise_error(SystemExit).and output(expected_string).to_stdout
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'errors if no image with matching name is found' do
|
@@ -95,12 +95,13 @@ Image id provided. Finding Image...Failed to find Image: The resource you were a
|
|
95
95
|
to_return(headers: { 'Content-Type' => 'application/json' }, status: 200, body: fixture('show_images'))
|
96
96
|
|
97
97
|
cli.options = cli.options.merge(name: 'foobarbaz')
|
98
|
-
expect { cli.info_image }.to raise_error(SystemExit)
|
99
98
|
|
100
|
-
|
99
|
+
expected_string = <<-eos
|
101
100
|
Image name provided. Finding Image...error
|
102
101
|
Unable to find an image named 'foobarbaz'.
|
103
102
|
eos
|
103
|
+
|
104
|
+
expect { cli.info_image }.to raise_error(SystemExit).and output(expected_string).to_stdout
|
104
105
|
end
|
105
106
|
|
106
107
|
it 'errors if no image with matching fuzzy name is found' do
|
@@ -108,12 +109,12 @@ Unable to find an image named 'foobarbaz'.
|
|
108
109
|
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' }).
|
109
110
|
to_return(headers: { 'Content-Type' => 'application/json' }, status: 200, body: fixture('show_images'))
|
110
111
|
|
111
|
-
|
112
|
-
|
113
|
-
expect($stdout.string).to eq <<-eos
|
112
|
+
expected_string = <<-eos
|
114
113
|
Image fuzzy name provided. Finding image ID...error
|
115
114
|
Unable to find an image named 'foobarbaz'.
|
116
115
|
eos
|
116
|
+
|
117
|
+
expect { cli.info_image('foobarbaz') }.to raise_error(SystemExit).and output(expected_string).to_stdout
|
117
118
|
end
|
118
119
|
|
119
120
|
it 'allows choice of multiple images' do
|
@@ -127,9 +128,7 @@ Unable to find an image named 'foobarbaz'.
|
|
127
128
|
|
128
129
|
expect($stdin).to receive(:gets).and_return('0')
|
129
130
|
|
130
|
-
|
131
|
-
|
132
|
-
expect($stdout.string).to eq <<-eos
|
131
|
+
expected_string = <<-eos
|
133
132
|
Image fuzzy name provided. Finding image ID...Multiple images found.
|
134
133
|
|
135
134
|
0) 14.10 x32 (9801951)
|
@@ -148,6 +147,8 @@ Distribution: Ubuntu
|
|
148
147
|
Min Disk Size: 20GB
|
149
148
|
Regions: nyc1,ams1,sfo1,nyc2,ams2,sgp1,lon1,nyc3,ams3,fra1
|
150
149
|
eos
|
150
|
+
|
151
|
+
expect { cli.info_image('ubun') }.to output(expected_string).to_stdout
|
151
152
|
end
|
152
153
|
end
|
153
154
|
end
|
data/spec/cli/keys_cli_spec.rb
CHANGED
@@ -9,14 +9,14 @@ describe Tugboat::CLI do
|
|
9
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
10
|
to_return(status: 200, body: fixture('show_keys'), headers: {})
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
expect($stdout.string).to eq <<-eos
|
12
|
+
expected_string = <<-eos
|
15
13
|
SSH Keys:
|
16
14
|
Name: My SSH Public Key, (id: 512189), fingerprint: 3b:16:bf:e4:8b:00:8b:b8:59:8c:a9:d3:f0:19:45:fa
|
17
15
|
Name: My Other SSH Public Key, (id: 512110), fingerprint: 3b:16:bf:d4:8b:00:8b:b8:59:8c:a9:d3:f0:19:45:fa
|
18
16
|
eos
|
19
17
|
|
18
|
+
expect { cli.keys }.to output(expected_string).to_stdout
|
19
|
+
|
20
20
|
expect(a_request(:get, 'https://api.digitalocean.com/v2/account/keys?per_page=200')).to have_been_made
|
21
21
|
end
|
22
22
|
end
|
@@ -18,13 +18,13 @@ describe Tugboat::CLI do
|
|
18
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
19
|
to_return(status: 200, body: fixture('password_reset_response'), headers: {})
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
expect($stdout.string).to eq <<-eos
|
21
|
+
expected_string = <<-eos
|
24
22
|
Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
25
23
|
Queuing password reset for 6918990 (example.com)...Password reset successful!
|
26
24
|
Your new root password will be emailed to you
|
27
25
|
eos
|
26
|
+
|
27
|
+
expect { cli.password_reset('example.com') }.to output(expected_string).to_stdout
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'resets the root password given an id' do
|
@@ -45,14 +45,14 @@ Your new root password will be emailed to you
|
|
45
45
|
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' }).
|
46
46
|
to_return(status: 200, body: fixture('password_reset_response'), headers: {})
|
47
47
|
|
48
|
-
|
49
|
-
cli.password_reset
|
50
|
-
|
51
|
-
expect($stdout.string).to eq <<-eos
|
48
|
+
expected_string = <<-eos
|
52
49
|
Droplet id provided. Finding Droplet...done\e[0m, 6918990 (example.com)
|
53
50
|
Queuing password reset for 6918990 (example.com)...Password reset successful!
|
54
51
|
Your new root password will be emailed to you
|
55
52
|
eos
|
53
|
+
|
54
|
+
cli.options = cli.options.merge(id: 6_918_990)
|
55
|
+
expect { cli.password_reset }.to output(expected_string).to_stdout
|
56
56
|
end
|
57
57
|
|
58
58
|
it 'resets the root password given a name' do
|
@@ -69,14 +69,14 @@ Your new root password will be emailed to you
|
|
69
69
|
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
70
|
to_return(status: 200, body: fixture('password_reset_response'), headers: {})
|
71
71
|
|
72
|
-
|
73
|
-
cli.password_reset
|
74
|
-
|
75
|
-
expect($stdout.string).to eq <<-eos
|
72
|
+
expected_string = <<-eos
|
76
73
|
Droplet name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
77
74
|
Queuing password reset for 6918990 (example.com)...Password reset successful!
|
78
75
|
Your new root password will be emailed to you
|
79
76
|
eos
|
77
|
+
|
78
|
+
cli.options = cli.options.merge(name: 'example.com')
|
79
|
+
expect { cli.password_reset }.to output(expected_string).to_stdout
|
80
80
|
end
|
81
81
|
|
82
82
|
it 'raises SystemExit when a request fails' do
|
@@ -95,7 +95,7 @@ Your new root password will be emailed to you
|
|
95
95
|
|
96
96
|
cli.options = cli.options.merge(name: 'example.com')
|
97
97
|
|
98
|
-
expect { cli.password_reset('example.com') }.to raise_error(SystemExit)
|
98
|
+
expect { cli.password_reset('example.com') }.to raise_error(SystemExit).and output(%r{Failed to reset password on Droplet: Some error}).to_stdout
|
99
99
|
end
|
100
100
|
end
|
101
101
|
end
|
@@ -24,13 +24,13 @@ describe Tugboat::CLI do
|
|
24
24
|
|
25
25
|
expect($stdin).to receive(:gets).and_return('y')
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
expect($stdout.string).to eq <<-eos
|
27
|
+
expected_string = <<-eos
|
30
28
|
Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
31
29
|
Image fuzzy name provided. Finding image ID...done\e[0m, 12790328 (14.04 x64)
|
32
30
|
Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
|
33
31
|
eos
|
32
|
+
|
33
|
+
expect { cli.rebuild('example.com', 'ubuntu-14-04-x64') }.to output(expected_string).to_stdout
|
34
34
|
end
|
35
35
|
|
36
36
|
it 'rebuilds a droplet with an id based on an image with a fuzzy name' do
|
@@ -54,13 +54,14 @@ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild f
|
|
54
54
|
expect($stdin).to receive(:gets).and_return('y')
|
55
55
|
|
56
56
|
cli.options = cli.options.merge(id: '12790328')
|
57
|
-
cli.rebuild('example.com', 'ubuntu-14-04-x64')
|
58
57
|
|
59
|
-
|
58
|
+
expected_string = <<-eos
|
60
59
|
Droplet id provided. Finding Droplet...done\e[0m, 6918990 (example.com)
|
61
60
|
Image fuzzy name provided. Finding image ID...done\e[0m, 12790328 (14.04 x64)
|
62
61
|
Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
|
63
62
|
eos
|
63
|
+
|
64
|
+
expect { cli.rebuild('example.com', 'ubuntu-14-04-x64') }.to output(expected_string).to_stdout
|
64
65
|
end
|
65
66
|
|
66
67
|
it 'rebuilds a droplet with a name based on an image with a fuzzy name' do
|
@@ -88,13 +89,14 @@ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild f
|
|
88
89
|
expect($stdin).to receive(:gets).and_return('y')
|
89
90
|
|
90
91
|
cli.options = cli.options.merge(name: 'example.com')
|
91
|
-
cli.rebuild('example.com', 'ubuntu-14-04-x64')
|
92
92
|
|
93
|
-
|
93
|
+
expected_string = <<-eos
|
94
94
|
Droplet name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
95
95
|
Image fuzzy name provided. Finding image ID...done\e[0m, 12790328 (14.04 x64)
|
96
96
|
Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
|
97
97
|
eos
|
98
|
+
|
99
|
+
expect { cli.rebuild('example.com', 'ubuntu-14-04-x64') }.to output(expected_string).to_stdout
|
98
100
|
end
|
99
101
|
|
100
102
|
it 'rebuilds a droplet with a fuzzy name based on an image with an id' do
|
@@ -125,14 +127,14 @@ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild f
|
|
125
127
|
|
126
128
|
expect($stdin).to receive(:gets).and_return('y')
|
127
129
|
|
128
|
-
|
129
|
-
cli.rebuild('example.com', 'ubuntu-14-04-x64')
|
130
|
-
|
131
|
-
expect($stdout.string).to eq <<-eos
|
130
|
+
expected_string = <<-eos
|
132
131
|
Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
133
132
|
Image id provided. Finding Image...done\e[0m, 6376601 (My application image)
|
134
133
|
Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 6376601 (My application image)...Rebuild complete
|
135
134
|
eos
|
135
|
+
|
136
|
+
cli.options = cli.options.merge(image_id: 12_790_328)
|
137
|
+
expect { cli.rebuild('example.com', 'ubuntu-14-04-x64') }.to output(expected_string).to_stdout
|
136
138
|
end
|
137
139
|
|
138
140
|
it 'rebuilds a droplet with an id based on an image with an id' do
|
@@ -164,13 +166,14 @@ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild f
|
|
164
166
|
expect($stdin).to receive(:gets).and_return('y')
|
165
167
|
|
166
168
|
cli.options = cli.options.merge(id: '12790328', image_id: 12_790_328)
|
167
|
-
cli.rebuild('example.com', 'ubuntu-14-04-x64')
|
168
169
|
|
169
|
-
|
170
|
+
expected_string = <<-eos
|
170
171
|
Droplet id provided. Finding Droplet...done\e[0m, 6918990 (example.com)
|
171
172
|
Image id provided. Finding Image...done\e[0m, 6376601 (My application image)
|
172
173
|
Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 6376601 (My application image)...Rebuild complete
|
173
174
|
eos
|
175
|
+
|
176
|
+
expect { cli.rebuild('example.com', 'ubuntu-14-04-x64') }.to output(expected_string).to_stdout
|
174
177
|
end
|
175
178
|
|
176
179
|
it 'rebuilds a droplet with a name based on an image with an id' do
|
@@ -202,13 +205,14 @@ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild f
|
|
202
205
|
expect($stdin).to receive(:gets).and_return('y')
|
203
206
|
|
204
207
|
cli.options = cli.options.merge(name: 'example.com', image_id: 12_790_328)
|
205
|
-
cli.rebuild('example.com', 'ubuntu-14-04-x64')
|
206
208
|
|
207
|
-
|
209
|
+
expected_string = <<-eos
|
208
210
|
Droplet name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
209
211
|
Image id provided. Finding Image...done\e[0m, 6376601 (My application image)
|
210
212
|
Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 6376601 (My application image)...Rebuild complete
|
211
213
|
eos
|
214
|
+
|
215
|
+
expect { cli.rebuild('example.com', 'ubuntu-14-04-x64') }.to output(expected_string).to_stdout
|
212
216
|
end
|
213
217
|
|
214
218
|
it 'rebuilds a droplet with a fuzzy name based on an image with a name' do
|
@@ -233,13 +237,13 @@ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild f
|
|
233
237
|
|
234
238
|
cli.options = cli.options.merge(image_name: '14.04 x64')
|
235
239
|
|
236
|
-
|
237
|
-
|
238
|
-
expect($stdout.string).to eq <<-eos
|
240
|
+
expected_string = <<-eos
|
239
241
|
Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
240
242
|
Image name provided. Finding Image...done\e[0m, 12790328 (14.04 x64)
|
241
243
|
Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
|
242
244
|
eos
|
245
|
+
|
246
|
+
expect { cli.rebuild('example.com', 'ubuntu-14-04-x64') }.to output(expected_string).to_stdout
|
243
247
|
end
|
244
248
|
|
245
249
|
it 'rebuilds a droplet with an id based on an image with a name' do
|
@@ -267,13 +271,14 @@ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild f
|
|
267
271
|
expect($stdin).to receive(:gets).and_return('y')
|
268
272
|
|
269
273
|
cli.options = cli.options.merge(id: '12790328', image_name: '14.04 x64')
|
270
|
-
cli.rebuild('example.com', '14.04 x64')
|
271
274
|
|
272
|
-
|
275
|
+
expected_string = <<-eos
|
273
276
|
Droplet id provided. Finding Droplet...done\e[0m, 6918990 (example.com)
|
274
277
|
Image name provided. Finding Image...done\e[0m, 12790328 (14.04 x64)
|
275
278
|
Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
|
276
279
|
eos
|
280
|
+
|
281
|
+
expect { cli.rebuild('example.com', '14.04 x64') }.to output(expected_string).to_stdout
|
277
282
|
end
|
278
283
|
|
279
284
|
it 'rebuilds a droplet with a name based on an image with a name' do
|
@@ -297,13 +302,14 @@ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild f
|
|
297
302
|
expect($stdin).to receive(:gets).and_return('y')
|
298
303
|
|
299
304
|
cli.options = cli.options.merge(name: 'example.com', image_name: '14.04 x64')
|
300
|
-
cli.rebuild('example.com', '14.04 x64')
|
301
305
|
|
302
|
-
|
306
|
+
expected_string = <<-eos
|
303
307
|
Droplet name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
304
308
|
Image name provided. Finding Image...done\e[0m, 12790328 (14.04 x64)
|
305
309
|
Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
|
306
310
|
eos
|
311
|
+
|
312
|
+
expect { cli.rebuild('example.com', '14.04 x64') }.to output(expected_string).to_stdout
|
307
313
|
end
|
308
314
|
|
309
315
|
it 'rebuilds a droplet with confirm flag set' do
|
@@ -325,13 +331,14 @@ Warning! Potentially destructive action. Please confirm [y/n]: Queuing rebuild f
|
|
325
331
|
to_return(status: 200, body: '', headers: {})
|
326
332
|
|
327
333
|
cli.options = cli.options.merge(confirm: 'no')
|
328
|
-
cli.rebuild('example.com', '14.04 x64')
|
329
334
|
|
330
|
-
|
335
|
+
expected_string = <<-eos
|
331
336
|
Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
332
337
|
Image fuzzy name provided. Finding image ID...done\e[0m, 12790328 (14.04 x64)
|
333
338
|
Queuing rebuild for droplet 6918990 (example.com) with image 12790328 (14.04 x64)...Rebuild complete
|
334
339
|
eos
|
340
|
+
|
341
|
+
expect { cli.rebuild('example.com', '14.04 x64') }.to output(expected_string).to_stdout
|
335
342
|
end
|
336
343
|
end
|
337
344
|
end
|
@@ -9,9 +9,7 @@ describe Tugboat::CLI do
|
|
9
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
10
|
to_return(status: 200, body: fixture('show_regions'), headers: { 'Content-Type' => 'application/json' })
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
expect($stdout.string).to eq <<-eos
|
12
|
+
expected_string = <<-eos
|
15
13
|
Regions:
|
16
14
|
Amsterdam 1 (slug: ams1)
|
17
15
|
Amsterdam 2 (slug: ams2)
|
@@ -24,6 +22,8 @@ San Francisco 1 (slug: sfo1)
|
|
24
22
|
Singapore 1 (slug: sgp1)
|
25
23
|
eos
|
26
24
|
|
25
|
+
expect { cli.regions }.to output(expected_string).to_stdout
|
26
|
+
|
27
27
|
expect(a_request(:get, 'https://api.digitalocean.com/v2/regions?page=1&per_page=20')).
|
28
28
|
to have_been_made
|
29
29
|
end
|
data/spec/cli/resize_cli_spec.rb
CHANGED
@@ -18,13 +18,13 @@ describe Tugboat::CLI do
|
|
18
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
19
|
to_return(status: 200, body: fixture('resize_droplet'), headers: {})
|
20
20
|
|
21
|
-
|
22
|
-
cli.resize('example.com')
|
23
|
-
|
24
|
-
expect($stdout.string).to eq <<-eos
|
21
|
+
expected_string = <<-eos
|
25
22
|
Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
26
23
|
Queuing resize for 6918990 (example.com)...Resize complete!
|
27
24
|
eos
|
25
|
+
|
26
|
+
cli.options = cli.options.merge(size: '1gb')
|
27
|
+
expect { cli.resize('example.com') }.to output(expected_string).to_stdout
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'resizes a droplet with an id' do
|
@@ -41,13 +41,13 @@ Queuing resize for 6918990 (example.com)...Resize complete!
|
|
41
41
|
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' }).
|
42
42
|
to_return(status: 200, body: fixture('resize_droplet'), headers: {})
|
43
43
|
|
44
|
-
|
45
|
-
cli.resize
|
46
|
-
|
47
|
-
expect($stdout.string).to eq <<-eos
|
44
|
+
expected_string = <<-eos
|
48
45
|
Droplet id provided. Finding Droplet...done\e[0m, 6918990 (example.com)
|
49
46
|
Queuing resize for 6918990 (example.com)...Resize complete!
|
50
47
|
eos
|
48
|
+
|
49
|
+
cli.options = cli.options.merge(size: '1gb', id: 6_918_990)
|
50
|
+
expect { cli.resize }.to output(expected_string).to_stdout
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'resizes a droplet with a name' do
|
@@ -64,13 +64,13 @@ Queuing resize for 6918990 (example.com)...Resize complete!
|
|
64
64
|
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' }).
|
65
65
|
to_return(status: 200, body: fixture('resize_droplet'), headers: {})
|
66
66
|
|
67
|
-
|
68
|
-
cli.resize
|
69
|
-
|
70
|
-
expect($stdout.string).to eq <<-eos
|
67
|
+
expected_string = <<-eos
|
71
68
|
Droplet name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
72
69
|
Queuing resize for 6918990 (example.com)...Resize complete!
|
73
70
|
eos
|
71
|
+
|
72
|
+
cli.options = cli.options.merge(size: '1gb', name: 'example.com')
|
73
|
+
expect { cli.resize }.to output(expected_string).to_stdout
|
74
74
|
end
|
75
75
|
|
76
76
|
it 'raises SystemExit when a request fails' do
|
@@ -87,13 +87,13 @@ Queuing resize for 6918990 (example.com)...Resize complete!
|
|
87
87
|
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' }).
|
88
88
|
to_return(headers: { 'Content-Type' => 'application/json' }, status: 500, body: '{"status":"ERROR","message":"Some error"}')
|
89
89
|
|
90
|
-
|
91
|
-
expect { cli.resize('example.com') }.to raise_error(SystemExit)
|
92
|
-
|
93
|
-
expect($stdout.string).to eq <<-eos
|
90
|
+
expected_string = <<-eos
|
94
91
|
Droplet fuzzy name provided. Finding droplet ID...done\e[0m, 6918990 (example.com)
|
95
92
|
Queuing resize for 6918990 (example.com)...Failed to resize Droplet: Some error
|
96
93
|
eos
|
94
|
+
|
95
|
+
cli.options = cli.options.merge(size: '1gb')
|
96
|
+
expect { cli.resize('example.com') }.to raise_error(SystemExit).and output(expected_string).to_stdout
|
97
97
|
end
|
98
98
|
end
|
99
99
|
end
|