brightbox-cli 5.0.0.alpha → 5.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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +2 -1
- data/CHANGELOG.md +60 -0
- data/Gemfile.lock +1 -1
- data/lib/brightbox-cli/accounts.rb +5 -1
- data/lib/brightbox-cli/api.rb +34 -1
- data/lib/brightbox-cli/cloud_ips.rb +6 -6
- data/lib/brightbox-cli/collaboration.rb +3 -7
- data/lib/brightbox-cli/commands/lbs/create.rb +0 -2
- data/lib/brightbox-cli/commands/lbs/show.rb +4 -0
- data/lib/brightbox-cli/config.rb +10 -4
- data/lib/brightbox-cli/database_server.rb +20 -20
- data/lib/brightbox-cli/database_snapshot.rb +5 -5
- data/lib/brightbox-cli/database_type.rb +4 -8
- data/lib/brightbox-cli/detailed_server.rb +26 -28
- data/lib/brightbox-cli/detailed_server_group.rb +2 -2
- data/lib/brightbox-cli/firewall_policy.rb +5 -9
- data/lib/brightbox-cli/firewall_rule.rb +14 -15
- data/lib/brightbox-cli/images.rb +22 -21
- data/lib/brightbox-cli/indifferent_access_hash.rb +50 -0
- data/lib/brightbox-cli/load_balancers.rb +27 -11
- data/lib/brightbox-cli/server_groups.rb +4 -8
- data/lib/brightbox-cli/servers.rb +22 -16
- data/lib/brightbox-cli/types.rb +4 -8
- data/lib/brightbox-cli/user_collaboration.rb +1 -1
- data/lib/brightbox-cli/users.rb +3 -5
- data/lib/brightbox-cli/version.rb +1 -1
- data/lib/brightbox-cli/volume.rb +9 -13
- data/lib/brightbox-cli/zones.rb +0 -4
- data/lib/brightbox_cli.rb +1 -0
- data/spec/commands/cloudips/update_spec.rb +7 -5
- data/spec/commands/configmaps/create_spec.rb +6 -6
- data/spec/commands/configmaps/destroy_spec.rb +1 -1
- data/spec/commands/configmaps/list_spec.rb +1 -1
- data/spec/commands/configmaps/show_spec.rb +3 -3
- data/spec/commands/configmaps/update_spec.rb +9 -9
- data/spec/commands/lbs/create_spec.rb +12 -26
- data/spec/commands/lbs/show_spec.rb +15 -3
- data/spec/commands/lbs/update_spec.rb +4 -4
- data/spec/commands/servers/update_spec.rb +7 -7
- data/spec/commands/sql/instances/create_spec.rb +8 -8
- data/spec/commands/sql/instances/reset_spec.rb +3 -3
- data/spec/commands/sql/instances/resize_spec.rb +4 -4
- data/spec/commands/sql/instances/show_spec.rb +2 -1
- data/spec/commands/sql/instances/update_spec.rb +3 -3
- data/spec/commands/sql/snapshots/list_spec.rb +1 -1
- data/spec/commands/sql/snapshots/show_spec.rb +50 -7
- data/spec/commands/volumes/attach_spec.rb +4 -4
- data/spec/commands/volumes/copy_spec.rb +2 -2
- data/spec/commands/volumes/destroy_spec.rb +1 -1
- data/spec/commands/volumes/detach_spec.rb +1 -1
- data/spec/commands/volumes/list_spec.rb +1 -1
- data/spec/commands/volumes/resize_spec.rb +3 -3
- data/spec/commands/volumes/show_spec.rb +1 -1
- data/spec/commands/volumes/update_spec.rb +4 -4
- data/spec/spec_helper.rb +14 -10
- data/spec/support/shared/api_resource_examples.rb +25 -0
- data/spec/unit/brightbox/account/attributes_spec.rb +13 -0
- data/spec/unit/brightbox/api/attributes_spec.rb +65 -0
- data/spec/unit/brightbox/api/fog_attributes_spec.rb +65 -0
- data/spec/unit/brightbox/cloud_ip/attributes_spec.rb +19 -0
- data/spec/unit/brightbox/collaborating_account/attributes_spec.rb +13 -0
- data/spec/unit/brightbox/database_server/attributes_spec.rb +13 -0
- data/spec/unit/brightbox/database_snapshot/attributes_spec.rb +13 -0
- data/spec/unit/brightbox/database_type/attributes_spec.rb +20 -0
- data/spec/unit/brightbox/detailed_server/attributes_spec.rb +29 -0
- data/spec/unit/brightbox/detailed_server_group/attributes_spec.rb +13 -0
- data/spec/unit/brightbox/firewall_policy/attributes_spec.rb +21 -0
- data/spec/unit/brightbox/firewall_rule/attributes_spec.rb +18 -0
- data/spec/unit/brightbox/image/attributes_spec.rb +13 -0
- data/spec/unit/brightbox/image/status_spec.rb +67 -0
- data/spec/unit/brightbox/load_balancer/acme_cert_spec.rb +75 -0
- data/spec/unit/brightbox/load_balancer/attributes_spec.rb +13 -0
- data/spec/unit/brightbox/load_balancer/formatted_acme_domains_spec.rb +78 -0
- data/spec/unit/brightbox/server/attributes_spec.rb +29 -0
- data/spec/unit/brightbox/server_group/attributes_spec.rb +13 -0
- data/spec/unit/brightbox/type/attributes_spec.rb +20 -0
- data/spec/unit/brightbox/user/attributes_spec.rb +13 -0
- data/spec/unit/brightbox/user_collaboration/attributes_spec.rb +13 -0
- metadata +47 -4
- data/spec/cassettes/brightbox_sql_snapshots/show/when_resource_exists/does_not_output_to_stderr.yml +0 -93
@@ -26,7 +26,7 @@ describe "brightbox servers update" do
|
|
26
26
|
it "does not error" do
|
27
27
|
expect { output }.to_not raise_error
|
28
28
|
|
29
|
-
expect(stderr).to
|
29
|
+
expect(stderr).to include("ERROR: You must specify a valid server id as the first argument\n")
|
30
30
|
|
31
31
|
expect(stdout).to match("")
|
32
32
|
end
|
@@ -66,7 +66,7 @@ describe "brightbox servers update" do
|
|
66
66
|
it "does not error" do
|
67
67
|
expect { output }.to_not raise_error
|
68
68
|
|
69
|
-
expect(stderr).to
|
69
|
+
expect(stderr).to include("Updating server srv-klfkd\n")
|
70
70
|
|
71
71
|
expect(stdout).to match("srv-klfkd")
|
72
72
|
end
|
@@ -104,7 +104,7 @@ describe "brightbox servers update" do
|
|
104
104
|
it "does not error" do
|
105
105
|
expect { output }.to_not raise_error
|
106
106
|
|
107
|
-
expect(stderr).to
|
107
|
+
expect(stderr).to include("Updating server srv-ds321\n")
|
108
108
|
|
109
109
|
expect(stdout).to match("srv-ds321")
|
110
110
|
end
|
@@ -144,7 +144,7 @@ describe "brightbox servers update" do
|
|
144
144
|
it "does not error" do
|
145
145
|
expect { output }.to_not raise_error
|
146
146
|
|
147
|
-
expect(stderr).to
|
147
|
+
expect(stderr).to include("Updating server srv-ds321\n")
|
148
148
|
|
149
149
|
expect(stdout).to match("srv-ds321")
|
150
150
|
end
|
@@ -184,7 +184,7 @@ describe "brightbox servers update" do
|
|
184
184
|
it "does not error" do
|
185
185
|
expect { output }.to_not raise_error
|
186
186
|
|
187
|
-
expect(stderr).to
|
187
|
+
expect(stderr).to include("Updating server srv-ds321\n")
|
188
188
|
|
189
189
|
expect(stdout).to match("srv-ds321")
|
190
190
|
end
|
@@ -224,7 +224,7 @@ describe "brightbox servers update" do
|
|
224
224
|
it "does not error" do
|
225
225
|
expect { output }.to_not raise_error
|
226
226
|
|
227
|
-
expect(stderr).to
|
227
|
+
expect(stderr).to include("Updating server srv-ds321 with 0.01k of user data\n")
|
228
228
|
|
229
229
|
expect(stdout).to match("srv-ds321")
|
230
230
|
end
|
@@ -264,7 +264,7 @@ describe "brightbox servers update" do
|
|
264
264
|
it "does not error" do
|
265
265
|
expect { output }.to_not raise_error
|
266
266
|
|
267
|
-
expect(stderr).to
|
267
|
+
expect(stderr).to include("Updating server srv-ds321 with 0.00k of user data\n")
|
268
268
|
|
269
269
|
expect(stdout).to match("srv-ds321")
|
270
270
|
end
|
@@ -39,7 +39,7 @@ describe "brightbox sql instances" do
|
|
39
39
|
|
40
40
|
it "correctly sends API parameters" do
|
41
41
|
expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
|
42
|
-
expect(stderr).to
|
42
|
+
expect(stderr).to be_empty unless ENV["DEBUG"]
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -55,7 +55,7 @@ describe "brightbox sql instances" do
|
|
55
55
|
|
56
56
|
it "correctly sends API parameters" do
|
57
57
|
expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
|
58
|
-
expect(stderr).to
|
58
|
+
expect(stderr).to be_empty unless ENV["DEBUG"]
|
59
59
|
end
|
60
60
|
|
61
61
|
after do
|
@@ -69,7 +69,7 @@ describe "brightbox sql instances" do
|
|
69
69
|
|
70
70
|
it "correctly sends API parameters" do
|
71
71
|
expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
|
72
|
-
expect(stderr).to
|
72
|
+
expect(stderr).to be_empty unless ENV["DEBUG"]
|
73
73
|
expect(stdout).to include("version: 8.0")
|
74
74
|
end
|
75
75
|
end
|
@@ -80,7 +80,7 @@ describe "brightbox sql instances" do
|
|
80
80
|
|
81
81
|
it "correctly sends API parameters" do
|
82
82
|
expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
|
83
|
-
expect(stderr).to
|
83
|
+
expect(stderr).to be_empty unless ENV["DEBUG"]
|
84
84
|
expect(stdout).to include("version: 8.0")
|
85
85
|
end
|
86
86
|
end
|
@@ -91,7 +91,7 @@ describe "brightbox sql instances" do
|
|
91
91
|
|
92
92
|
it "correctly sends API parameters" do
|
93
93
|
expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
|
94
|
-
expect(stderr).to
|
94
|
+
expect(stderr).to be_empty unless ENV["DEBUG"]
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
@@ -101,7 +101,7 @@ describe "brightbox sql instances" do
|
|
101
101
|
|
102
102
|
it "correctly sends API parameters" do
|
103
103
|
expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
|
104
|
-
expect(stderr).to
|
104
|
+
expect(stderr).to be_empty unless ENV["DEBUG"]
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
@@ -124,7 +124,7 @@ describe "brightbox sql instances" do
|
|
124
124
|
it "includes schedule fields in response" do
|
125
125
|
expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
|
126
126
|
expect(stdout).to include("id: #{sql_instance.id}")
|
127
|
-
expect(stderr).to
|
127
|
+
expect(stderr).to be_empty unless ENV["DEBUG"]
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
@@ -136,7 +136,7 @@ describe "brightbox sql instances" do
|
|
136
136
|
expect(Brightbox::DatabaseServer).to receive(:create).with(expected_args).and_call_original
|
137
137
|
expect(stdout).to include("snapshots_schedule: 0 12 * * 4")
|
138
138
|
expect(stdout).to match(/snapshots_schedule_next_at: 20\d{2}-\d{2}-\d{2}T12:\d{2}Z/)
|
139
|
-
expect(stderr).to
|
139
|
+
expect(stderr).to be_empty unless ENV["DEBUG"]
|
140
140
|
end
|
141
141
|
end
|
142
142
|
end
|
@@ -26,7 +26,7 @@ describe "brightbox sql instances reset" do
|
|
26
26
|
it "does not error" do
|
27
27
|
expect { output }.to_not raise_error
|
28
28
|
|
29
|
-
expect(stderr).to
|
29
|
+
expect(stderr).to include("ERROR: You must specify a valid SQL instance ID as the first argument\n")
|
30
30
|
|
31
31
|
expect(stdout).to match("")
|
32
32
|
end
|
@@ -47,7 +47,7 @@ describe "brightbox sql instances reset" do
|
|
47
47
|
it "does not error" do
|
48
48
|
expect { output }.to_not raise_error
|
49
49
|
|
50
|
-
expect(stderr).to
|
50
|
+
expect(stderr).to include("ERROR: Couldn't find 'dbs-l3kd4'\n")
|
51
51
|
|
52
52
|
expect(stdout).to match("")
|
53
53
|
end
|
@@ -79,7 +79,7 @@ describe "brightbox sql instances reset" do
|
|
79
79
|
it "does not error" do
|
80
80
|
expect { output }.to_not raise_error
|
81
81
|
|
82
|
-
expect(stderr).to
|
82
|
+
expect(stderr).to include("Resetting dbs-po953\n")
|
83
83
|
|
84
84
|
expect(stdout).to match("dbs-po953")
|
85
85
|
end
|
@@ -26,7 +26,7 @@ describe "brightbox sql instances resize" do
|
|
26
26
|
it "does not error" do
|
27
27
|
expect { output }.to_not raise_error
|
28
28
|
|
29
|
-
expect(stderr).to
|
29
|
+
expect(stderr).to include("ERROR: You must specify a valid SQL instance ID as the first argument\n")
|
30
30
|
|
31
31
|
expect(stdout).to match("")
|
32
32
|
end
|
@@ -47,7 +47,7 @@ describe "brightbox sql instances resize" do
|
|
47
47
|
it "does not error" do
|
48
48
|
expect { output }.to_not raise_error
|
49
49
|
|
50
|
-
expect(stderr).to
|
50
|
+
expect(stderr).to include("ERROR: Couldn't find 'dbs-xsd23'\n")
|
51
51
|
|
52
52
|
expect(stdout).to match("")
|
53
53
|
end
|
@@ -59,7 +59,7 @@ describe "brightbox sql instances resize" do
|
|
59
59
|
it "does not error" do
|
60
60
|
expect { output }.to_not raise_error
|
61
61
|
|
62
|
-
expect(stderr).to
|
62
|
+
expect(stderr).to include("ERROR: Cloud SQL type format is invalid\n")
|
63
63
|
|
64
64
|
expect(stdout).to match("")
|
65
65
|
end
|
@@ -104,7 +104,7 @@ describe "brightbox sql instances resize" do
|
|
104
104
|
it "does not error" do
|
105
105
|
expect { output }.to_not raise_error
|
106
106
|
|
107
|
-
expect(stderr).to
|
107
|
+
expect(stderr).to include("Resizing dbs-zzasa\n")
|
108
108
|
|
109
109
|
expect(stdout).to match("dbs-zzasa")
|
110
110
|
end
|
@@ -66,8 +66,9 @@ describe "brightbox sql instances" do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
it "simplifies the maintenance window" do
|
69
|
+
expect(stderr).to be_empty unless ENV["DEBUG"]
|
70
|
+
|
69
71
|
expect(stdout).to include("maintenance_window: Sunday 06:00 UTC")
|
70
|
-
expect(stderr).to be_empty
|
71
72
|
end
|
72
73
|
|
73
74
|
it "includes snapshots schedule fields" do
|
@@ -30,7 +30,7 @@ describe "brightbox sql instances" do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it "sets custom maintenance window settings" do
|
33
|
-
expect(stderr).to
|
33
|
+
expect(stderr).to include("Updating dbs-12345\n")
|
34
34
|
expect(stdout).to include("dbs-12345")
|
35
35
|
end
|
36
36
|
end
|
@@ -54,7 +54,7 @@ describe "brightbox sql instances" do
|
|
54
54
|
expect(Brightbox::DatabaseServer).to receive(:find).and_return(dbs)
|
55
55
|
expect(dbs).to receive(:update).with(expected_args).and_call_original
|
56
56
|
|
57
|
-
expect(stderr).to
|
57
|
+
expect(stderr).to include("Updating dbs-12345\n")
|
58
58
|
expect(stdout).to include("dbs-12345")
|
59
59
|
end
|
60
60
|
end
|
@@ -78,7 +78,7 @@ describe "brightbox sql instances" do
|
|
78
78
|
expect(Brightbox::DatabaseServer).to receive(:find).and_return(dbs)
|
79
79
|
expect(dbs).to receive(:update).with(expected_args).and_call_original
|
80
80
|
|
81
|
-
expect(stderr).to
|
81
|
+
expect(stderr).to include("Updating dbs-432sf\n")
|
82
82
|
expect(stdout).to include("dbs-432sf")
|
83
83
|
end
|
84
84
|
end
|
@@ -8,21 +8,64 @@ describe "brightbox sql snapshots" do
|
|
8
8
|
|
9
9
|
before do
|
10
10
|
config = config_from_contents(USER_APP_CONFIG_CONTENTS)
|
11
|
-
|
12
|
-
# Setup in the VCR recordings
|
13
11
|
cache_access_token(config, "f83da712e6299cda953513ec07f7a754f747d727")
|
14
12
|
end
|
15
13
|
|
16
|
-
context "
|
14
|
+
context "without arguments" do
|
15
|
+
let(:argv) { %w[sql snapshots show] }
|
16
|
+
|
17
|
+
it "reports error" do
|
18
|
+
expect(stderr).to include("You must specify snapshot ids to show")
|
19
|
+
expect(stdout).to be_empty
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context "with identifier argument" do
|
17
24
|
let(:argv) { %w[sql snapshots show dbi-12345] }
|
25
|
+
let(:json_response) do
|
26
|
+
<<~EOS
|
27
|
+
{
|
28
|
+
"id": "dbi-12345",
|
29
|
+
"resource_type": "database_snapshot",
|
30
|
+
"url": "string",
|
31
|
+
"name": "string",
|
32
|
+
"description": "string",
|
33
|
+
"status": "creating",
|
34
|
+
"locked": true,
|
35
|
+
"database_engine": "string",
|
36
|
+
"database_version": "string",
|
37
|
+
"source": "string",
|
38
|
+
"source_trigger": "manual",
|
39
|
+
"size": 0,
|
40
|
+
"created_at": "2024-12-17T10:14:38.092Z",
|
41
|
+
"updated_at": "2024-12-17T10:14:38.092Z",
|
42
|
+
"deleted_at": "2024-12-17T10:14:38.092Z",
|
43
|
+
"account": {
|
44
|
+
"id": "acc-12345",
|
45
|
+
"resource_type": "account",
|
46
|
+
"url": "string",
|
47
|
+
"name": "string",
|
48
|
+
"description": "string",
|
49
|
+
"status": "pending"
|
50
|
+
},
|
51
|
+
"metadata": {
|
52
|
+
"labels": {}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
EOS
|
56
|
+
end
|
18
57
|
|
19
|
-
|
20
|
-
|
58
|
+
before do
|
59
|
+
stub_request(:get, "http://api.brightbox.localhost/1.0/database_snapshots/dbi-12345?account_id=acc-12345")
|
60
|
+
.to_return(status: 200, body: json_response)
|
21
61
|
end
|
22
62
|
|
23
63
|
it "outputs table details to stdout" do
|
24
|
-
|
25
|
-
|
64
|
+
aggregate_failures do
|
65
|
+
expect(stderr).to be_empty unless ENV["DEBUG"]
|
66
|
+
expect(stdout).to_not be_empty
|
67
|
+
expect(stdout).to match(/dbi-12345/)
|
68
|
+
end
|
26
69
|
end
|
27
70
|
end
|
28
71
|
end
|
@@ -28,7 +28,7 @@ describe "brightbox volumes attach" do
|
|
28
28
|
it "does not error" do
|
29
29
|
expect { output }.to_not raise_error
|
30
30
|
|
31
|
-
expect(stderr).to
|
31
|
+
expect(stderr).to include("ERROR: You must specify the volume ID as the first argument\n")
|
32
32
|
|
33
33
|
expect(stdout).to match("")
|
34
34
|
end
|
@@ -40,7 +40,7 @@ describe "brightbox volumes attach" do
|
|
40
40
|
it "does not error" do
|
41
41
|
expect { output }.to_not raise_error
|
42
42
|
|
43
|
-
expect(stderr).to
|
43
|
+
expect(stderr).to include("ERROR: You must specify the server ID to attach to as the second argument\n")
|
44
44
|
|
45
45
|
expect(stdout).to match("")
|
46
46
|
end
|
@@ -94,7 +94,7 @@ describe "brightbox volumes attach" do
|
|
94
94
|
it "does not error" do
|
95
95
|
expect { output }.to_not raise_error
|
96
96
|
|
97
|
-
expect(stderr).to
|
97
|
+
expect(stderr).to include("Attaching vol-809s1\n")
|
98
98
|
|
99
99
|
aggregate_failures do
|
100
100
|
expect(stdout).to match("vol-809s1")
|
@@ -153,7 +153,7 @@ describe "brightbox volumes attach" do
|
|
153
153
|
it "does not error" do
|
154
154
|
expect { output }.to_not raise_error
|
155
155
|
|
156
|
-
expect(stderr).to
|
156
|
+
expect(stderr).to include("Attaching vol-90328\n")
|
157
157
|
|
158
158
|
aggregate_failures do
|
159
159
|
expect(stdout).to match("vol-90328")
|
@@ -28,7 +28,7 @@ describe "brightbox volumes copy" do
|
|
28
28
|
it "does not error" do
|
29
29
|
expect { output }.to_not raise_error
|
30
30
|
|
31
|
-
expect(stderr).to
|
31
|
+
expect(stderr).to include("ERROR: You must specify the volume ID as the first argument\n")
|
32
32
|
|
33
33
|
expect(stdout).to match("")
|
34
34
|
end
|
@@ -66,7 +66,7 @@ describe "brightbox volumes copy" do
|
|
66
66
|
it "does not error" do
|
67
67
|
expect { output }.to_not raise_error
|
68
68
|
|
69
|
-
expect(stderr).to
|
69
|
+
expect(stderr).to include("Copying vol-909ds\n")
|
70
70
|
|
71
71
|
expect(stdout).to match("vol-909ds")
|
72
72
|
end
|
@@ -28,7 +28,7 @@ describe "brightbox volumes destroy" do
|
|
28
28
|
it "does not error" do
|
29
29
|
expect { output }.to_not raise_error
|
30
30
|
|
31
|
-
expect(stderr).to
|
31
|
+
expect(stderr).to include("ERROR: You must specify volume IDs as arguments\n")
|
32
32
|
|
33
33
|
expect(stdout).to match("")
|
34
34
|
end
|
@@ -28,7 +28,7 @@ describe "brightbox volumes detach" do
|
|
28
28
|
it "does not error" do
|
29
29
|
expect { output }.to_not raise_error
|
30
30
|
|
31
|
-
expect(stderr).to
|
31
|
+
expect(stderr).to include("ERROR: You must specify volume IDs as arguments\n")
|
32
32
|
|
33
33
|
expect(stdout).to match("")
|
34
34
|
end
|
@@ -37,7 +37,7 @@ describe "brightbox volumes list" do
|
|
37
37
|
it "does not error" do
|
38
38
|
expect { output }.to_not raise_error
|
39
39
|
|
40
|
-
expect(stderr).to
|
40
|
+
expect(stderr).to be_empty unless ENV["DEBUG"]
|
41
41
|
|
42
42
|
aggregate_failures do
|
43
43
|
expect(stdout).to match("id.*type.*size.*status.*server.*boot")
|
@@ -28,7 +28,7 @@ describe "brightbox volumes resize" do
|
|
28
28
|
it "does not error" do
|
29
29
|
expect { output }.to_not raise_error
|
30
30
|
|
31
|
-
expect(stderr).to
|
31
|
+
expect(stderr).to include("ERROR: You must specify the volume ID as the first argument\n")
|
32
32
|
|
33
33
|
expect(stdout).to match("")
|
34
34
|
end
|
@@ -40,7 +40,7 @@ describe "brightbox volumes resize" do
|
|
40
40
|
it "does not error" do
|
41
41
|
expect { output }.to_not raise_error
|
42
42
|
|
43
|
-
expect(stderr).to
|
43
|
+
expect(stderr).to include("ERROR: A 'size' option is required\n")
|
44
44
|
|
45
45
|
expect(stdout).to match("")
|
46
46
|
end
|
@@ -85,7 +85,7 @@ describe "brightbox volumes resize" do
|
|
85
85
|
it "does not error" do
|
86
86
|
expect { output }.to_not raise_error
|
87
87
|
|
88
|
-
expect(stderr).to
|
88
|
+
expect(stderr).to include("Resizing vol-op324\n")
|
89
89
|
|
90
90
|
aggregate_failures do
|
91
91
|
expect(stdout).to match("vol-op324")
|
@@ -28,7 +28,7 @@ describe "brightbox volumes update" do
|
|
28
28
|
it "does not error" do
|
29
29
|
expect { output }.to_not raise_error
|
30
30
|
|
31
|
-
expect(stderr).to
|
31
|
+
expect(stderr).to include("ERROR: You must specify the volume ID as the first argument\n")
|
32
32
|
|
33
33
|
expect(stdout).to match("")
|
34
34
|
end
|
@@ -82,7 +82,7 @@ describe "brightbox volumes update" do
|
|
82
82
|
it "does not error" do
|
83
83
|
expect { output }.to_not raise_error
|
84
84
|
|
85
|
-
expect(stderr).to
|
85
|
+
expect(stderr).to include("Updating vol-908us\n")
|
86
86
|
|
87
87
|
aggregate_failures do
|
88
88
|
expect(stdout).to match("vol-908us")
|
@@ -129,7 +129,7 @@ describe "brightbox volumes update" do
|
|
129
129
|
it "does not error" do
|
130
130
|
expect { output }.to_not raise_error
|
131
131
|
|
132
|
-
expect(stderr).to
|
132
|
+
expect(stderr).to include("Updating vol-kl234\n")
|
133
133
|
|
134
134
|
aggregate_failures do
|
135
135
|
expect(stdout).to match("vol-kl234")
|
@@ -176,7 +176,7 @@ describe "brightbox volumes update" do
|
|
176
176
|
it "does not error" do
|
177
177
|
expect { output }.to_not raise_error
|
178
178
|
|
179
|
-
expect(stderr).to
|
179
|
+
expect(stderr).to include("Updating vol-sdj2j\n")
|
180
180
|
|
181
181
|
aggregate_failures do
|
182
182
|
expect(stdout).to match("vol-sdj2j")
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,22 @@
|
|
1
|
+
require "simplecov"
|
2
|
+
|
3
|
+
SimpleCov.start do
|
4
|
+
add_filter "/spec/"
|
5
|
+
add_filter "/config/"
|
6
|
+
add_filter "/vendor/"
|
7
|
+
|
8
|
+
track_files "{lib}/**/*.rb"
|
9
|
+
|
10
|
+
# Currently just above 75% coverage - don't make it worse
|
11
|
+
minimum_coverage 75
|
12
|
+
refuse_coverage_drop
|
13
|
+
end
|
14
|
+
|
1
15
|
LIB_DIR = File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
|
2
16
|
|
3
17
|
$LOAD_PATH.unshift LIB_DIR unless
|
4
18
|
$LOAD_PATH.include?(LIB_DIR) || $LOAD_PATH.include?(File.expand_path(LIB_DIR))
|
5
19
|
|
6
|
-
require "simplecov"
|
7
20
|
require "brightbox_cli"
|
8
21
|
require "json"
|
9
22
|
require "tmpdir"
|
@@ -31,15 +44,6 @@ Fog.timeout = 10
|
|
31
44
|
|
32
45
|
require "fog/brightbox"
|
33
46
|
|
34
|
-
SimpleCov.start do
|
35
|
-
add_filter "/spec/"
|
36
|
-
add_filter "/config/"
|
37
|
-
add_filter "/vendor/"
|
38
|
-
end
|
39
|
-
|
40
|
-
# Currently just above 80% coverage - don't make it worse
|
41
|
-
SimpleCov.minimum_coverage 80
|
42
|
-
|
43
47
|
RSpec.configure do |config|
|
44
48
|
config.include CommonHelpers
|
45
49
|
config.include ConfigHelpers
|
@@ -9,7 +9,32 @@ shared_examples "a wrapped API resource" do
|
|
9
9
|
it { is_expected.to respond_to(:to_row) }
|
10
10
|
|
11
11
|
it { is_expected.to respond_to(:to_s) }
|
12
|
+
|
12
13
|
it "#to_s equals the #id" do
|
13
14
|
expect(subject.to_s).to eql(subject.id)
|
14
15
|
end
|
16
|
+
|
17
|
+
# describe "#attributes" do
|
18
|
+
# subject { described_class.new(fog_model) }
|
19
|
+
|
20
|
+
# let(:fog_model) do
|
21
|
+
# double("Fog::Model", id: "res-12345", attributes: { id: "res-12345"})
|
22
|
+
# end
|
23
|
+
|
24
|
+
# it "returns an IndifferentAccessHash" do
|
25
|
+
# expect(subject.attributes).to be_a(IndifferentAccessHash)
|
26
|
+
# end
|
27
|
+
# end
|
28
|
+
|
29
|
+
# describe "#to_row" do
|
30
|
+
# subject { described_class.new(fog_model) }
|
31
|
+
|
32
|
+
# let(:fog_model) do
|
33
|
+
# double("Fog::Model", id: "res-12345", attributes: { id: "res-12345"})
|
34
|
+
# end
|
35
|
+
|
36
|
+
# it "returns a Hash to avoid hirb errors" do
|
37
|
+
# expect(subject.to_row).to be_a(Hash)
|
38
|
+
# end
|
39
|
+
# end
|
15
40
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe Brightbox::Account, "#attributes" do
|
4
|
+
subject { described_class.new(fog_model) }
|
5
|
+
|
6
|
+
let(:fog_model) do
|
7
|
+
double("Fog::Model", id: "res-12345", attributes: { id: "res-12345"})
|
8
|
+
end
|
9
|
+
|
10
|
+
it "returns an IndifferentAccessHash" do
|
11
|
+
expect(subject.attributes).to be_a(IndifferentAccessHash)
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe Brightbox::Api, "#attributes" do
|
4
|
+
subject(:model_attributes) { api_model.attributes }
|
5
|
+
|
6
|
+
let(:api_model) { Brightbox::Api.new(fog_model) }
|
7
|
+
let(:fog_model) do
|
8
|
+
double(
|
9
|
+
"Fog::Compute::Brightbox::Api",
|
10
|
+
id: "res-12345",
|
11
|
+
attributes: attributes
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
context "when attributes are not set" do
|
16
|
+
let(:attributes) { nil }
|
17
|
+
|
18
|
+
it "returns an indifferent access hash" do
|
19
|
+
expect(model_attributes).to be_instance_of(IndifferentAccessHash)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context "when attributes are set with a mix of string and symbols" do
|
24
|
+
let(:attributes) do
|
25
|
+
{
|
26
|
+
id: "res-12345",
|
27
|
+
name: "test",
|
28
|
+
acme: acme_details
|
29
|
+
}
|
30
|
+
end
|
31
|
+
let(:acme_details) do
|
32
|
+
{
|
33
|
+
"domains" => [
|
34
|
+
{
|
35
|
+
"identifier" => "example.test",
|
36
|
+
"status" => "pending"
|
37
|
+
}
|
38
|
+
]
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
it "transforms the keys with deep symbolize" do
|
43
|
+
expect(model_attributes).to eq(
|
44
|
+
id: "res-12345",
|
45
|
+
name: "test",
|
46
|
+
acme: {
|
47
|
+
domains: [
|
48
|
+
{
|
49
|
+
identifier: "example.test",
|
50
|
+
status: "pending"
|
51
|
+
}
|
52
|
+
]
|
53
|
+
}
|
54
|
+
)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "can accessed by string keys" do
|
58
|
+
expect(model_attributes["acme"]["domains"].first["identifier"]).to eq("example.test")
|
59
|
+
end
|
60
|
+
|
61
|
+
it "can accessed by symbol keys" do
|
62
|
+
expect(model_attributes[:acme][:domains].first[:identifier]).to eq("example.test")
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|