brightbox-cli 5.0.0.alpha → 5.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +2 -1
  3. data/CHANGELOG.md +60 -0
  4. data/Gemfile.lock +1 -1
  5. data/lib/brightbox-cli/accounts.rb +5 -1
  6. data/lib/brightbox-cli/api.rb +34 -1
  7. data/lib/brightbox-cli/cloud_ips.rb +6 -6
  8. data/lib/brightbox-cli/collaboration.rb +3 -7
  9. data/lib/brightbox-cli/commands/lbs/create.rb +0 -2
  10. data/lib/brightbox-cli/commands/lbs/show.rb +4 -0
  11. data/lib/brightbox-cli/config.rb +10 -4
  12. data/lib/brightbox-cli/database_server.rb +20 -20
  13. data/lib/brightbox-cli/database_snapshot.rb +5 -5
  14. data/lib/brightbox-cli/database_type.rb +4 -8
  15. data/lib/brightbox-cli/detailed_server.rb +26 -28
  16. data/lib/brightbox-cli/detailed_server_group.rb +2 -2
  17. data/lib/brightbox-cli/firewall_policy.rb +5 -9
  18. data/lib/brightbox-cli/firewall_rule.rb +14 -15
  19. data/lib/brightbox-cli/images.rb +22 -21
  20. data/lib/brightbox-cli/indifferent_access_hash.rb +50 -0
  21. data/lib/brightbox-cli/load_balancers.rb +27 -11
  22. data/lib/brightbox-cli/server_groups.rb +4 -8
  23. data/lib/brightbox-cli/servers.rb +22 -16
  24. data/lib/brightbox-cli/types.rb +4 -8
  25. data/lib/brightbox-cli/user_collaboration.rb +1 -1
  26. data/lib/brightbox-cli/users.rb +3 -5
  27. data/lib/brightbox-cli/version.rb +1 -1
  28. data/lib/brightbox-cli/volume.rb +9 -13
  29. data/lib/brightbox-cli/zones.rb +0 -4
  30. data/lib/brightbox_cli.rb +1 -0
  31. data/spec/commands/cloudips/update_spec.rb +7 -5
  32. data/spec/commands/configmaps/create_spec.rb +6 -6
  33. data/spec/commands/configmaps/destroy_spec.rb +1 -1
  34. data/spec/commands/configmaps/list_spec.rb +1 -1
  35. data/spec/commands/configmaps/show_spec.rb +3 -3
  36. data/spec/commands/configmaps/update_spec.rb +9 -9
  37. data/spec/commands/lbs/create_spec.rb +12 -26
  38. data/spec/commands/lbs/show_spec.rb +15 -3
  39. data/spec/commands/lbs/update_spec.rb +4 -4
  40. data/spec/commands/servers/update_spec.rb +7 -7
  41. data/spec/commands/sql/instances/create_spec.rb +8 -8
  42. data/spec/commands/sql/instances/reset_spec.rb +3 -3
  43. data/spec/commands/sql/instances/resize_spec.rb +4 -4
  44. data/spec/commands/sql/instances/show_spec.rb +2 -1
  45. data/spec/commands/sql/instances/update_spec.rb +3 -3
  46. data/spec/commands/sql/snapshots/list_spec.rb +1 -1
  47. data/spec/commands/sql/snapshots/show_spec.rb +50 -7
  48. data/spec/commands/volumes/attach_spec.rb +4 -4
  49. data/spec/commands/volumes/copy_spec.rb +2 -2
  50. data/spec/commands/volumes/destroy_spec.rb +1 -1
  51. data/spec/commands/volumes/detach_spec.rb +1 -1
  52. data/spec/commands/volumes/list_spec.rb +1 -1
  53. data/spec/commands/volumes/resize_spec.rb +3 -3
  54. data/spec/commands/volumes/show_spec.rb +1 -1
  55. data/spec/commands/volumes/update_spec.rb +4 -4
  56. data/spec/spec_helper.rb +14 -10
  57. data/spec/support/shared/api_resource_examples.rb +25 -0
  58. data/spec/unit/brightbox/account/attributes_spec.rb +13 -0
  59. data/spec/unit/brightbox/api/attributes_spec.rb +65 -0
  60. data/spec/unit/brightbox/api/fog_attributes_spec.rb +65 -0
  61. data/spec/unit/brightbox/cloud_ip/attributes_spec.rb +19 -0
  62. data/spec/unit/brightbox/collaborating_account/attributes_spec.rb +13 -0
  63. data/spec/unit/brightbox/database_server/attributes_spec.rb +13 -0
  64. data/spec/unit/brightbox/database_snapshot/attributes_spec.rb +13 -0
  65. data/spec/unit/brightbox/database_type/attributes_spec.rb +20 -0
  66. data/spec/unit/brightbox/detailed_server/attributes_spec.rb +29 -0
  67. data/spec/unit/brightbox/detailed_server_group/attributes_spec.rb +13 -0
  68. data/spec/unit/brightbox/firewall_policy/attributes_spec.rb +21 -0
  69. data/spec/unit/brightbox/firewall_rule/attributes_spec.rb +18 -0
  70. data/spec/unit/brightbox/image/attributes_spec.rb +13 -0
  71. data/spec/unit/brightbox/image/status_spec.rb +67 -0
  72. data/spec/unit/brightbox/load_balancer/acme_cert_spec.rb +75 -0
  73. data/spec/unit/brightbox/load_balancer/attributes_spec.rb +13 -0
  74. data/spec/unit/brightbox/load_balancer/formatted_acme_domains_spec.rb +78 -0
  75. data/spec/unit/brightbox/server/attributes_spec.rb +29 -0
  76. data/spec/unit/brightbox/server_group/attributes_spec.rb +13 -0
  77. data/spec/unit/brightbox/type/attributes_spec.rb +20 -0
  78. data/spec/unit/brightbox/user/attributes_spec.rb +13 -0
  79. data/spec/unit/brightbox/user_collaboration/attributes_spec.rb +13 -0
  80. metadata +47 -4
  81. data/spec/cassettes/brightbox_sql_snapshots/show/when_resource_exists/does_not_output_to_stderr.yml +0 -93
@@ -9,26 +9,42 @@ module Brightbox
9
9
  new(conn.load_balancers.create(options))
10
10
  end
11
11
 
12
- def acme_domains
13
- if attributes["acme"]
14
- attributes["acme"]["domains"].map do |domain|
15
- [domain["identifier"], domain["status"]].join(":")
16
- end.join(",")
12
+ def acme_cert
13
+ if attributes[:acme] && attributes[:acme][:certificate]
14
+ OpenStruct.new(
15
+ :expires_at => attributes[:acme][:certificate][:expires_at],
16
+ :fingerprint => attributes[:acme][:certificate][:fingerprint],
17
+ :issued_at => attributes[:acme][:certificate][:issued_at],
18
+ :subjects => attributes[:acme][:certificate][:domains].join(",")
19
+ )
17
20
  else
18
- []
21
+ OpenStruct.new(
22
+ :expires_at => "",
23
+ :fingerprint => "",
24
+ :issued_at => "",
25
+ :subjects => ""
26
+ )
19
27
  end
20
- rescue StandardError
21
- []
22
28
  end
23
29
 
24
- def attributes
25
- fog_model.attributes
30
+ def formatted_acme_domains
31
+ return "" unless attributes[:acme]
32
+
33
+ attributes[:acme][:domains].map do |domain|
34
+ [domain[:identifier], domain[:status]].join(":")
35
+ end.join(",")
36
+ rescue StandardError
37
+ ""
26
38
  end
27
39
 
28
40
  def to_row
29
41
  attributes.merge(
30
42
  :locked => locked?,
31
- :acme_domains => acme_domains,
43
+ :acme_domains => formatted_acme_domains,
44
+ :acme_cert_expires_at => acme_cert.expires_at,
45
+ :acme_cert_fingerprint => acme_cert.fingerprint,
46
+ :acme_cert_issued_at => acme_cert.issued_at,
47
+ :acme_cert_subjects => acme_cert.subjects,
32
48
  :ssl_minimum_version => ssl_minimum_version,
33
49
  :ssl_issuer => certificate_issuer,
34
50
  :ssl_subject => certificate_subject,
@@ -34,15 +34,11 @@ module Brightbox
34
34
  fog_model.destroy
35
35
  end
36
36
 
37
- def attributes
38
- fog_model.attributes
39
- end
40
-
41
37
  def to_row
42
- o = attributes
43
- o[:servers] = server_string
44
- o[:server_count] = server_count
45
- o
38
+ super.merge(
39
+ servers: server_string,
40
+ server_count: server_count
41
+ ).to_h
46
42
  end
47
43
 
48
44
  def server_ids
@@ -37,25 +37,31 @@ module Brightbox
37
37
  end
38
38
 
39
39
  def attributes
40
- a = fog_model.attributes
41
- a[:image] = image_id
42
- a[:created_at] = created_at
43
- a[:created_on] = created_on
44
- a[:type] = server_type["handle"]
45
- a[:status] = fog_model.state
46
- a[:locked] = locked?
47
- a[:zone] = zone && zone["handle"]
48
- a[:hostname] = hostname
49
- a[:public_hostname] = "public.#{fqdn}" unless cloud_ips.empty?
50
- a[:ipv6_hostname] = ipv6_fqdn if interfaces.any? { |i| i["ipv6_address"] }
51
- a
40
+ fog_attributes.tap do |attrs|
41
+ attrs[:created_at] = created_at
42
+ attrs[:created_on] = created_on
43
+ attrs[:hostname] = hostname
44
+ attrs[:image] = image_id
45
+ attrs[:locked] = locked?
46
+ attrs[:status] = fog_model.state
47
+ attrs[:type] = server_type["handle"]
48
+ attrs[:zone] = zone && zone["handle"]
49
+
50
+ unless cloud_ips.empty?
51
+ attrs[:public_hostname] = "public.#{fqdn}"
52
+ end
53
+
54
+ if interfaces.any? { |i| i["ipv6_address"] }
55
+ attrs[:ipv6_hostname] = ipv6_fqdn
56
+ end
57
+ end
52
58
  end
53
59
 
54
60
  def to_row
55
- o = attributes
56
- o[:cloud_ip_ids] = cloud_ips.map { |i| i["id"] }
57
- o[:ips] = interfaces.map { |i| i["ipv4_address"] }.join(", ")
58
- o
61
+ attributes.merge(
62
+ cloud_ips: cloud_ips.map { |i| i["public_ip"] }.join(", "),
63
+ ips: interfaces.map { |i| i["ipv4_address"] }.join(", ")
64
+ )
59
65
  end
60
66
 
61
67
  def deleted?
@@ -3,10 +3,10 @@ module Brightbox
3
3
  def self.require_account?; true; end
4
4
 
5
5
  def attributes
6
- o = fog_model.attributes
7
- o[:ram] = ram
8
- o[:disk] = disk
9
- o
6
+ fog_attributes.tap do |attrs|
7
+ attrs[:ram] = ram
8
+ attrs[:disk] = disk
9
+ end
10
10
  end
11
11
 
12
12
  def ram
@@ -17,10 +17,6 @@ module Brightbox
17
17
  fog_model.disk.to_i
18
18
  end
19
19
 
20
- def to_row
21
- attributes
22
- end
23
-
24
20
  def render_cell
25
21
  fog_model.handle
26
22
  end
@@ -69,7 +69,7 @@ module Brightbox
69
69
  def to_row
70
70
  row_attributes = attributes
71
71
  row_attributes[:account] = attributes[:account]["id"]
72
- row_attributes
72
+ row_attributes.to_h
73
73
  end
74
74
  end
75
75
  end
@@ -1,11 +1,9 @@
1
1
  module Brightbox
2
2
  class User < Api
3
- def attributes
4
- fog_model.attributes
5
- end
6
-
7
3
  def to_row
8
- attributes.merge(:accounts => accounts.size)
4
+ attributes.merge(
5
+ accounts: accounts.size
6
+ )
9
7
  end
10
8
 
11
9
  def self.all
@@ -1,3 +1,3 @@
1
1
  module Brightbox
2
- VERSION = "5.0.0.alpha".freeze unless defined?(Brightbox::VERSION)
2
+ VERSION = "5.0.0.rc1".freeze unless defined?(Brightbox::VERSION)
3
3
  end
@@ -57,19 +57,15 @@ module Brightbox
57
57
  end
58
58
 
59
59
  def attributes
60
- a = fog_model.attributes
61
- a[:id] = fog_model.id
62
- a[:image] = image_id
63
- a[:locked] = locked?
64
- a[:server] = server_id
65
- a[:status] = state
66
- a[:type] = storage_type
67
- a[:zone] = zone_id
68
- a
69
- end
70
-
71
- def to_row
72
- attributes
60
+ super.merge(
61
+ id: fog_model.id,
62
+ image: image_id,
63
+ locked: locked?,
64
+ server: server_id,
65
+ status: state,
66
+ type: storage_type,
67
+ zone: zone_id
68
+ )
73
69
  end
74
70
 
75
71
  def update(options)
@@ -2,10 +2,6 @@ module Brightbox
2
2
  class Zone < Api
3
3
  def self.require_account?; true; end
4
4
 
5
- def to_row
6
- attributes
7
- end
8
-
9
5
  def self.all
10
6
  conn.zones
11
7
  end
data/lib/brightbox_cli.rb CHANGED
@@ -71,6 +71,7 @@ require_relative "brightbox/cli/config"
71
71
  require_relative "brightbox-cli/connection_manager"
72
72
  require_relative "brightbox-cli/tables"
73
73
  require_relative "brightbox-cli/logging"
74
+ require_relative "brightbox-cli/indifferent_access_hash"
74
75
  require_relative "brightbox-cli/api"
75
76
  require_relative "brightbox-cli/config/cache"
76
77
  require_relative "brightbox-cli/config/gpg_encrypted_passwords"
@@ -59,7 +59,9 @@ describe "brightbox cloudips update" do
59
59
 
60
60
  it "puts new name in update" do
61
61
  expect(Brightbox::CloudIP.conn).to receive(:update_cloud_ip).with(*expected_args).and_call_original
62
- expect(stderr).to eq("")
62
+
63
+ expect(stderr).to be_empty unless ENV["DEBUG"]
64
+
63
65
  expect(stdout).to include("cip-12345")
64
66
  expect(stdout).to include("New name")
65
67
  end
@@ -82,7 +84,7 @@ describe "brightbox cloudips update" do
82
84
 
83
85
  it "puts new name in update" do
84
86
  expect(Brightbox::CloudIP.conn).to receive(:update_cloud_ip).with(*expected_args).and_call_original
85
- expect(stderr).to eq("")
87
+ expect(stderr).to be_empty unless ENV["DEBUG"]
86
88
  expect(stdout).to include("cip-12345")
87
89
  end
88
90
  end
@@ -114,7 +116,7 @@ describe "brightbox cloudips update" do
114
116
  end
115
117
 
116
118
  it "puts new name in update" do
117
- expect(stderr).to eq("")
119
+ expect(stderr).to be_empty unless ENV["DEBUG"]
118
120
  expect(stdout).to include("cip-dfsa3")
119
121
  expect(stdout).to include("domain.example")
120
122
  end
@@ -146,7 +148,7 @@ describe "brightbox cloudips update" do
146
148
  end
147
149
 
148
150
  it "puts new name in update" do
149
- expect(stderr).to eq("")
151
+ expect(stderr).to be_empty unless ENV["DEBUG"]
150
152
  expect(stdout).to include("cip-dfsa3")
151
153
  end
152
154
  end
@@ -155,7 +157,7 @@ describe "brightbox cloudips update" do
155
157
  let(:argv) { ["cloudips", "update", "--reverse-dns", "domain.example", "--delete-reverse-dns", "cip-dfsa3"] }
156
158
 
157
159
  it "puts new name in update" do
158
- expect(stderr).to eq("ERROR: You must either specify a reverse DNS record or --delete-reverse-dns\n")
160
+ expect(stderr).to include("ERROR: You must either specify a reverse DNS record or --delete-reverse-dns\n")
159
161
  expect(stdout).to eq("")
160
162
  end
161
163
  end
@@ -109,7 +109,7 @@ describe "brightbox configmaps create" do
109
109
  it "does not error" do
110
110
  expect { output }.to_not raise_error
111
111
 
112
- expect(stderr).to eq("ERROR: Config map data was not valid JSON\n")
112
+ expect(stderr).to include("ERROR: Config map data was not valid JSON\n")
113
113
 
114
114
  expect(stdout).to eq("")
115
115
  end
@@ -156,7 +156,7 @@ describe "brightbox configmaps create" do
156
156
  it "does not error" do
157
157
  expect { output }.to_not raise_error
158
158
 
159
- expect(stderr).to eq("Creating config map\n")
159
+ expect(stderr).to include("Creating config map\n")
160
160
 
161
161
  aggregate_failures do
162
162
  expect(stdout).to match("cfg-s432l")
@@ -169,7 +169,7 @@ describe "brightbox configmaps create" do
169
169
  it "does not error" do
170
170
  expect { output }.to_not raise_error
171
171
 
172
- expect(stderr).to eq("ERROR: Config map data was not valid JSON\n")
172
+ expect(stderr).to include("ERROR: Config map data was not valid JSON\n")
173
173
 
174
174
  expect(stdout).to eq("")
175
175
  end
@@ -219,7 +219,7 @@ describe "brightbox configmaps create" do
219
219
  it "does not error" do
220
220
  expect { output }.to_not raise_error
221
221
 
222
- expect(stderr).to eq("Creating config map\n")
222
+ expect(stderr).to include("Creating config map\n")
223
223
 
224
224
  aggregate_failures do
225
225
  expect(stdout).to match("cfg-mj53s")
@@ -232,7 +232,7 @@ describe "brightbox configmaps create" do
232
232
  it "does not error" do
233
233
  expect { output }.to_not raise_error
234
234
 
235
- expect(stderr).to eq("ERROR: Config map data was not valid JSON\n")
235
+ expect(stderr).to include("ERROR: Config map data was not valid JSON\n")
236
236
 
237
237
  expect(stdout).to eq("")
238
238
  end
@@ -248,7 +248,7 @@ describe "brightbox configmaps create" do
248
248
  it "does not error" do
249
249
  expect { output }.to_not raise_error
250
250
 
251
- expect(stderr).to eq("ERROR: Config map data can only be passed by either 'data' or 'data-file'\n")
251
+ expect(stderr).to include("ERROR: Config map data can only be passed by either 'data' or 'data-file'\n")
252
252
 
253
253
  expect(stdout).to eq("")
254
254
  end
@@ -26,7 +26,7 @@ describe "brightbox configmaps destroy" do
26
26
  it "does not error" do
27
27
  expect { output }.to_not raise_error
28
28
 
29
- expect(stderr).to eq("ERROR: You must specify config map IDs as arguments\n")
29
+ expect(stderr).to include("ERROR: You must specify config map IDs as arguments\n")
30
30
 
31
31
  expect(stdout).to match("")
32
32
  end
@@ -35,7 +35,7 @@ describe "brightbox configmaps list" do
35
35
  it "does not error" do
36
36
  expect { output }.to_not raise_error
37
37
 
38
- expect(stderr).to eq("")
38
+ expect(stderr).to be_empty unless ENV["DEBUG"]
39
39
 
40
40
  aggregate_failures do
41
41
  expect(stdout).to match("id.*name")
@@ -35,7 +35,7 @@ describe "brightbox configmaps show" do
35
35
  it "does not error" do
36
36
  expect { output }.to_not raise_error
37
37
 
38
- expect(stderr).to eq("")
38
+ expect(stderr).to be_empty unless ENV["DEBUG"]
39
39
 
40
40
  aggregate_failures do
41
41
  expect(stdout).to match("id: cfg-12345")
@@ -81,7 +81,7 @@ describe "brightbox configmaps show" do
81
81
  it "does not error" do
82
82
  expect { output }.to_not raise_error
83
83
 
84
- expect(stderr).to eq("ERROR: You can only access data for a single config map at a time\n")
84
+ expect(stderr).to include("ERROR: You can only access data for a single config map at a time\n")
85
85
 
86
86
  expect(stdout).to eq("")
87
87
  end
@@ -137,7 +137,7 @@ describe "brightbox configmaps show" do
137
137
  it "does not error" do
138
138
  expect { output }.to_not raise_error
139
139
 
140
- expect(stderr).to eq("")
140
+ expect(stderr).to be_empty unless ENV["DEBUG"]
141
141
 
142
142
  expect(stdout).to eq(%({"key":"value","name":"key name"}\n))
143
143
  end
@@ -27,7 +27,7 @@ describe "brightbox configmaps update" do
27
27
  it "does not error" do
28
28
  expect { output }.to_not raise_error
29
29
 
30
- expect(stderr).to eq("ERROR: You must specify the config map ID as the first argument\n")
30
+ expect(stderr).to include("ERROR: You must specify the config map ID as the first argument\n")
31
31
 
32
32
  expect(stdout).to match("")
33
33
  end
@@ -73,7 +73,7 @@ describe "brightbox configmaps update" do
73
73
  it "does not error" do
74
74
  expect { output }.to_not raise_error
75
75
 
76
- expect(stderr).to eq("Updating cfg-0932s\n")
76
+ expect(stderr).to include("Updating cfg-0932s\n")
77
77
 
78
78
  aggregate_failures do
79
79
  expect(stdout).to match("cfg-0932s")
@@ -134,7 +134,7 @@ describe "brightbox configmaps update" do
134
134
  it "does not error" do
135
135
  expect { output }.to_not raise_error
136
136
 
137
- expect(stderr).to eq("Updating cfg-25hrt\n")
137
+ expect(stderr).to include("Updating cfg-25hrt\n")
138
138
 
139
139
  aggregate_failures do
140
140
  expect(stdout).to match("cfg-25hrt")
@@ -148,7 +148,7 @@ describe "brightbox configmaps update" do
148
148
  it "does not error" do
149
149
  expect { output }.to_not raise_error
150
150
 
151
- expect(stderr).to eq("ERROR: Config map data was not valid JSON\n")
151
+ expect(stderr).to include("ERROR: Config map data was not valid JSON\n")
152
152
 
153
153
  expect(stdout).to eq("")
154
154
  end
@@ -218,7 +218,7 @@ describe "brightbox configmaps update" do
218
218
  it "does not error" do
219
219
  expect { output }.to_not raise_error
220
220
 
221
- expect(stderr).to eq("Updating cfg-gr45a\n")
221
+ expect(stderr).to include("Updating cfg-gr45a\n")
222
222
 
223
223
  aggregate_failures do
224
224
  expect(stdout).to match("cfg-gr45a")
@@ -231,7 +231,7 @@ describe "brightbox configmaps update" do
231
231
  it "does not error" do
232
232
  expect { output }.to_not raise_error
233
233
 
234
- expect(stderr).to eq("ERROR: Config map data was not valid JSON\n")
234
+ expect(stderr).to include("ERROR: Config map data was not valid JSON\n")
235
235
 
236
236
  expect(stdout).to eq("")
237
237
  end
@@ -303,7 +303,7 @@ describe "brightbox configmaps update" do
303
303
  it "does not error" do
304
304
  expect { output }.to_not raise_error
305
305
 
306
- expect(stderr).to eq("Updating cfg-stdin\n")
306
+ expect(stderr).to include("Updating cfg-stdin\n")
307
307
 
308
308
  aggregate_failures do
309
309
  expect(stdout).to match("cfg-stdin")
@@ -316,7 +316,7 @@ describe "brightbox configmaps update" do
316
316
  it "does not error" do
317
317
  expect { output }.to_not raise_error
318
318
 
319
- expect(stderr).to eq("ERROR: Config map data was not valid JSON\n")
319
+ expect(stderr).to include("ERROR: Config map data was not valid JSON\n")
320
320
 
321
321
  expect(stdout).to eq("")
322
322
  end
@@ -332,7 +332,7 @@ describe "brightbox configmaps update" do
332
332
  it "does not error" do
333
333
  expect { output }.to_not raise_error
334
334
 
335
- expect(stderr).to eq("ERROR: Config map data can only be passed by either 'data' or 'data-file'\n")
335
+ expect(stderr).to include("ERROR: Config map data can only be passed by either 'data' or 'data-file'\n")
336
336
 
337
337
  expect(stdout).to eq("")
338
338
  end
@@ -11,48 +11,34 @@ describe "brightbox lbs" do
11
11
  cache_access_token(config, "f83da712e6299cda953513ec07f7a754f747d727")
12
12
  end
13
13
 
14
- context "without required nodes arguments" do
14
+ context "without nodes arguments" do
15
15
  let(:argv) { %w[lbs create] }
16
-
17
- it "does not error" do
18
- expect { output }.to_not raise_error
19
-
20
- expect(stderr).to eq("ERROR: You must specify which servers to balance connections to\n")
21
- end
22
- end
23
-
24
- context "with required nodes arguments" do
25
- let(:argv) { %w[lbs create srv-12345] }
26
- let(:expected_args) { { nodes: [{ node: "srv-12345" }] } }
16
+ let(:expected_args) { { nodes: [] } }
27
17
 
28
18
  let(:json_response) do
29
19
  <<~EOS
30
20
  {
31
21
  "id": "lba-12345",
32
- "nodes": [
33
- {
34
- "id": "srv-12345"
35
- }
36
- ]
22
+ "nodes": []
37
23
  }
38
24
  EOS
39
25
  end
40
26
 
41
27
  before do
42
28
  stub_request(:post, "http://api.brightbox.localhost/1.0/load_balancers?account_id=acc-12345")
43
- .with(:body => hash_including("nodes" => [{ "node" => "srv-12345" }]))
29
+ .with(:body => hash_including("nodes" => []))
44
30
  .to_return(:status => 202, :body => json_response)
45
31
  end
46
32
 
47
33
  it "makes request" do
48
34
  expect(Brightbox::LoadBalancer).to receive(:create).with(hash_including(expected_args)).and_call_original
49
35
 
50
- expect(stderr).to eq("Creating a new load balancer\n")
36
+ expect(stderr).to include("Creating a new load balancer\n")
51
37
  expect(stdout).to include("lba-12345")
52
38
  end
53
39
  end
54
40
 
55
- context "with required nodes arguments" do
41
+ context "with a nodes argument" do
56
42
  let(:argv) { %w[lbs create srv-12345] }
57
43
  let(:expected_args) { { nodes: [{ node: "srv-12345" }] } }
58
44
 
@@ -78,12 +64,12 @@ describe "brightbox lbs" do
78
64
  it "makes request" do
79
65
  expect(Brightbox::LoadBalancer).to receive(:create).with(hash_including(expected_args)).and_call_original
80
66
 
81
- expect(stderr).to eq("Creating a new load balancer\n")
67
+ expect(stderr).to include("Creating a new load balancer\n")
82
68
  expect(stdout).to include("lba-12345")
83
69
  end
84
70
  end
85
71
 
86
- context "with multiple nodes" do
72
+ context "with multiple node arguments" do
87
73
  let(:argv) { %w[lbs create srv-12345 srv-54321] }
88
74
  let(:expected_args) { { nodes: [{ node: "srv-12345" }, { node: "srv-54321" }] } }
89
75
 
@@ -112,7 +98,7 @@ describe "brightbox lbs" do
112
98
  it "makes request" do
113
99
  expect(Brightbox::LoadBalancer).to receive(:create).with(hash_including(expected_args)).and_call_original
114
100
 
115
- expect(stderr).to eq("Creating a new load balancer\n")
101
+ expect(stderr).to include("Creating a new load balancer\n")
116
102
  expect(stdout).to include("lba-12345")
117
103
  end
118
104
  end
@@ -139,7 +125,7 @@ describe "brightbox lbs" do
139
125
  it "includes buffer_size in response" do
140
126
  expect(Brightbox::LoadBalancer).to receive(:create).with(hash_including(expected_args)).and_call_original
141
127
 
142
- expect(stderr).to eq("Creating a new load balancer\n")
128
+ expect(stderr).to include("Creating a new load balancer\n")
143
129
  expect(stdout).to include("lba-12345")
144
130
  end
145
131
  end
@@ -165,7 +151,7 @@ describe "brightbox lbs" do
165
151
 
166
152
  it "includes ssl_minimum_version in response" do
167
153
  expect(Brightbox::LoadBalancer).to receive(:create).with(hash_including(expected_args)).and_call_original
168
- expect(stderr).to eq("Creating a new load balancer\n")
154
+ expect(stderr).to include("Creating a new load balancer\n")
169
155
  expect(stdout).to include("lba-12345")
170
156
  end
171
157
  end
@@ -206,7 +192,7 @@ describe "brightbox lbs" do
206
192
  end
207
193
 
208
194
  it "includes acme_certificate_domain in response" do
209
- expect(stderr).to eq("Creating a new load balancer\n")
195
+ expect(stderr).to include("Creating a new load balancer\n")
210
196
  expect(stdout).to include("lba-12345")
211
197
  end
212
198
  end
@@ -39,7 +39,7 @@ describe "brightbox lbs" do
39
39
 
40
40
  it "shows load balancer details" do
41
41
  aggregate_failures do
42
- expect(stderr).to eq("")
42
+ expect(stderr).to be_empty unless ENV["DEBUG"]
43
43
  expect(stdout).to include("id: lba-12345")
44
44
  expect(stdout).to include("status: active")
45
45
  expect(stdout).to include("name: app-lb1")
@@ -68,7 +68,15 @@ describe "brightbox lbs" do
68
68
  "identifier": "domain2.test",
69
69
  "status": "verified"
70
70
  }
71
- ]
71
+ ],
72
+ "certificate": {
73
+ "domains": [
74
+ "domain.test"
75
+ ],
76
+ "expires_at": "2025-12-31T23:59:59Z",
77
+ "fingerprint": "fingerprint",
78
+ "issued_at": "2025-01-01T00:00:00Z"
79
+ }
72
80
  },
73
81
  "nodes":[
74
82
  {
@@ -87,13 +95,17 @@ describe "brightbox lbs" do
87
95
 
88
96
  it "shows load balancer details" do
89
97
  aggregate_failures do
90
- expect(stderr).to eq("")
98
+ expect(stderr).to be_empty unless ENV["DEBUG"]
91
99
  expect(stdout).to include("id: lba-12345")
92
100
  expect(stdout).to include("status: active")
93
101
  expect(stdout).to include("name: app-lb1")
94
102
  expect(stdout).to include("created_at: 2012-03-05T12:00Z")
95
103
  expect(stdout).to include("nodes: srv-12345")
96
104
  expect(stdout).to include("acme_domains: domain.test:verified,domain2.test:verified")
105
+ expect(stdout).to include("acme_cert_subjects: domain.test")
106
+ expect(stdout).to include("acme_cert_expires_at: 2025-12-31T23:59:59Z")
107
+ expect(stdout).to include("acme_cert_fingerprint: fingerprint")
108
+ expect(stdout).to include("acme_cert_issued_at: 2025-01-01T00:00:00Z")
97
109
  end
98
110
  end
99
111
  end
@@ -41,7 +41,7 @@ describe "brightbox lbs" do
41
41
  end
42
42
 
43
43
  it "includes ssl_minimum_version in response" do
44
- expect(stderr).to eq("Updating load balancer lba-12345\n")
44
+ expect(stderr).to include("Updating load balancer lba-12345\n")
45
45
  expect(stdout).to include("lba-12345")
46
46
  end
47
47
  end
@@ -68,7 +68,7 @@ describe "brightbox lbs" do
68
68
  end
69
69
 
70
70
  it "includes ssl_minimum_version in response" do
71
- expect(stderr).to eq("Updating load balancer lba-grt24\n")
71
+ expect(stderr).to include("Updating load balancer lba-grt24\n")
72
72
  expect(stdout).to include("lba-grt24")
73
73
  end
74
74
  end
@@ -95,7 +95,7 @@ describe "brightbox lbs" do
95
95
  end
96
96
 
97
97
  it "includes ssl_minimum_version in response" do
98
- expect(stderr).to eq("Updating load balancer lba-kl432\n")
98
+ expect(stderr).to include("Updating load balancer lba-kl432\n")
99
99
  expect(stdout).to include("lba-kl432")
100
100
  end
101
101
  end
@@ -139,7 +139,7 @@ describe "brightbox lbs" do
139
139
  end
140
140
 
141
141
  it "includes acme_certificate_domain in response" do
142
- expect(stderr).to eq("Updating load balancer lba-12345\n")
142
+ expect(stderr).to include("Updating load balancer lba-12345\n")
143
143
  expect(stdout).to include("lba-12345")
144
144
  end
145
145
  end