vmware-vra 2.7.2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/CHANGELOG.md +5 -0
  4. data/README.md +79 -144
  5. data/Rakefile +0 -11
  6. data/lib/vra/catalog.rb +39 -8
  7. data/lib/vra/catalog_base.rb +62 -0
  8. data/lib/vra/catalog_item.rb +28 -74
  9. data/lib/vra/catalog_source.rb +116 -0
  10. data/lib/vra/catalog_type.rb +56 -0
  11. data/lib/vra/client.rb +62 -54
  12. data/lib/vra/deployment.rb +155 -0
  13. data/lib/vra/deployment_request.rb +117 -0
  14. data/lib/vra/{resources.rb → deployments.rb} +26 -17
  15. data/lib/vra/exceptions.rb +1 -1
  16. data/lib/vra/http.rb +11 -6
  17. data/lib/vra/request.rb +28 -36
  18. data/lib/vra/request_parameters.rb +12 -12
  19. data/lib/vra/resource.rb +32 -203
  20. data/lib/vra/version.rb +2 -2
  21. data/lib/vra.rb +15 -12
  22. data/spec/catalog_item_spec.rb +64 -222
  23. data/spec/catalog_source_spec.rb +178 -0
  24. data/spec/catalog_spec.rb +112 -72
  25. data/spec/catalog_type_spec.rb +114 -0
  26. data/spec/client_spec.rb +271 -226
  27. data/spec/deployment_request_spec.rb +192 -0
  28. data/spec/deployment_spec.rb +227 -0
  29. data/spec/deployments_spec.rb +80 -0
  30. data/spec/fixtures/resource/sample_catalog_item.json +18 -0
  31. data/spec/fixtures/resource/sample_catalog_item_2.json +18 -0
  32. data/spec/fixtures/resource/sample_catalog_source.json +20 -0
  33. data/spec/fixtures/resource/sample_catalog_type.json +49 -0
  34. data/spec/fixtures/resource/sample_dep_actions.json +58 -0
  35. data/spec/fixtures/resource/sample_dep_request.json +19 -0
  36. data/spec/fixtures/resource/sample_dep_resource.json +112 -0
  37. data/spec/fixtures/resource/sample_deployment.json +26 -0
  38. data/spec/fixtures/resource/sample_entitlements.json +25 -0
  39. data/spec/http_spec.rb +63 -61
  40. data/spec/request_spec.rb +62 -68
  41. data/spec/resource_spec.rb +71 -390
  42. data/spec/spec_helper.rb +10 -4
  43. data/vmware-vra.gemspec +0 -1
  44. metadata +40 -30
  45. data/.travis.yml +0 -14
  46. data/lib/vra/catalog_request.rb +0 -137
  47. data/lib/vra/requests.rb +0 -41
  48. data/spec/catalog_request_spec.rb +0 -268
  49. data/spec/requests_spec.rb +0 -60
  50. data/spec/resources_spec.rb +0 -71
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  #
3
3
  # Author:: Chef Partner Engineering (<partnereng@chef.io>)
4
- # Copyright:: Copyright (c) 2015 Chef Software, Inc.
4
+ # Copyright:: Copyright (c) 2022 Chef Software, Inc.
5
5
  # License:: Apache License, Version 2.0
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,463 +17,144 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require "spec_helper"
21
- require "ffi_yajl"
22
-
23
- shared_examples_for "a resource action" do |action_method, action_name|
24
- context "when the action is available" do
25
- it "calls gets the action ID and submits the request" do
26
- expect(resource).to receive(:action_id_by_name).with(action_name).and_return("action-123")
27
- expect(resource).to receive(:submit_action_request).with("action-123")
28
- resource.send(action_method)
29
- end
30
- end
31
-
32
- context "when the action is not available" do
33
- it "raises an exception" do
34
- expect(resource).to receive(:action_id_by_name).with(action_name).and_return nil
35
- expect { resource.send(action_method) }.to raise_error(Vra::Exception::NotFound)
36
- end
37
- end
38
- end
20
+ require 'spec_helper'
21
+ require 'ffi_yajl'
39
22
 
40
23
  describe Vra::Resource do
41
24
  let(:client) do
42
- Vra::Client.new(username: "user@corp.local",
43
- password: "password",
44
- tenant: "tenant",
45
- base_url: "https://vra.corp.local")
46
- end
47
-
48
- let(:resource_id) { "31a7badc-6562-458d-84f3-ec58d74a6953" }
49
- let(:vm_payload) do
50
- FFI_Yajl::Parser.parse(File.read(File.join(File.dirname(__FILE__),
51
- "fixtures",
52
- "resource",
53
- "vm_resource.json")))
54
- end
55
-
56
- let(:vm_payload_no_ops) do
57
- FFI_Yajl::Parser.parse(File.read(File.join(File.dirname(__FILE__),
58
- "fixtures",
59
- "resource",
60
- "vm_resource_no_operations.json")))
25
+ Vra::Client.new(
26
+ username: 'user@corp.local',
27
+ password: 'password',
28
+ tenant: 'tenant',
29
+ base_url: 'https://vra.corp.local'
30
+ )
61
31
  end
62
32
 
63
- let(:non_vm_payload) do
64
- FFI_Yajl::Parser.parse(File.read(File.join(File.dirname(__FILE__),
65
- "fixtures",
66
- "resource",
67
- "non_vm_resource.json")))
68
- end
69
-
70
- describe "#by_name" do
71
- it "can lookup and return resource" do
72
- resource = Vra::Resource.allocate
73
- allow(resource).to receive(:name).and_return("host1234")
74
- name = resource.name
75
- expect(Vra::Resources).to receive(:all).with(client).and_return([resource])
76
- expect(Vra::Resource.by_name(client, name)).to eq(resource)
77
- end
33
+ let(:resource_id) { 'res-123' }
34
+ let(:deployment_id) { 'dep-123' }
78
35
 
79
- it "returns nil if nothing found" do
80
- resource = Vra::Resource.allocate
81
- allow(resource).to receive(:name).and_return("host1234")
82
- name = "somethingelse1234"
83
- expect(Vra::Resources).to receive(:all).with(client).and_return([resource])
84
- expect(Vra::Resource.by_name(client, name)).to be nil
85
- end
36
+ let(:vm_payload) do
37
+ JSON.parse(File.read('spec/fixtures/resource/sample_dep_resource.json'))
86
38
  end
87
39
 
88
- describe "#initialize" do
89
- it "raises an error if no ID or resource data have been provided" do
90
- expect { Vra::Resource.new }.to raise_error(ArgumentError)
40
+ describe '#initialize' do
41
+ it 'raises an error if no ID or resource data have been provided' do
42
+ expect { Vra::Resource.new(client, deployment_id) }.to raise_error(ArgumentError)
91
43
  end
92
44
 
93
- it "raises an error if an ID and resource data have both been provided" do
94
- expect { Vra::Resource.new(id: 123, data: "foo") }.to raise_error(ArgumentError)
45
+ it 'raises an error if an ID and resource data have both been provided' do
46
+ expect { Vra::Resource.new(client, deployment_id, id: 123, data: 'foo') }.to raise_error(ArgumentError)
95
47
  end
96
48
 
97
- context "when an ID is provided" do
98
- it "calls fetch_resource_data" do
49
+ context 'when an ID is provided' do
50
+ it 'calls fetch_resource_data' do
99
51
  resource = Vra::Resource.allocate
100
52
  expect(resource).to receive(:fetch_resource_data)
101
- resource.send(:initialize, client, id: resource_id)
53
+ resource.send(:initialize, client, deployment_id, id: resource_id)
102
54
  end
103
55
  end
104
56
 
105
- context "when resource data is provided" do
106
- it "populates the ID correctly" do
107
- resource = Vra::Resource.new(client, data: vm_payload)
57
+ context 'when resource data is provided' do
58
+ it 'populates the ID correctly' do
59
+ resource = Vra::Resource.new(client, deployment_id, data: vm_payload)
108
60
  expect(resource.id).to eq resource_id
109
61
  end
110
62
  end
111
63
  end
112
64
 
113
- describe "#fetch_resource_data" do
114
- it "calls get_parsed against the resources API endpoint" do
65
+ describe '#fetch_resource_data' do
66
+ it 'calls get_parsed against the resources API endpoint' do
115
67
  expect(client).to receive(:get_parsed)
116
- .with("/catalog-service/api/consumer/resources/#{resource_id}")
68
+ .with("/deployment/api/deployments/#{deployment_id}/resources/#{resource_id}")
117
69
  .and_return({})
118
70
 
119
- Vra::Resource.new(client, id: resource_id)
71
+ Vra::Resource.new(client, deployment_id, id: resource_id)
120
72
  end
121
- end
122
73
 
123
- context "when a valid VM resource instance has been created" do
124
- let(:resource) { Vra::Resource.new(client, data: vm_payload) }
74
+ it 'should raise an exception if the resource not found' do
75
+ allow(client).to receive(:get_parsed).and_raise(Vra::Exception::HTTPNotFound)
125
76
 
126
- describe "#name" do
127
- it "returns the correct name" do
128
- expect(resource.name).to eq "hol-dev-11"
129
- end
77
+ expect { Vra::Resource.new(client, deployment_id, id: resource_id) }
78
+ .to raise_error(Vra::Exception::NotFound)
79
+ .with_message("resource ID #{resource_id} does not exist")
130
80
  end
81
+ end
131
82
 
132
- describe "#description" do
133
- it "returns the correct description" do
134
- expect(resource.description).to eq "test-description"
83
+ context 'when a valid VM resource instance has been created' do
84
+ let(:resource) { Vra::Resource.new(client, deployment_id, data: vm_payload) }
85
+
86
+ describe '#name' do
87
+ it 'returns the correct name' do
88
+ expect(resource.name).to eq 'Cloud_vSphere_Machine_1'
135
89
  end
136
90
  end
137
91
 
138
- describe "#status" do
139
- it "returns the correct status" do
140
- expect(resource.status).to eq "ACTIVE"
92
+ describe '#status' do
93
+ it 'returns the correct status' do
94
+ expect(resource.status).to eq 'SUCCESS'
141
95
  end
142
96
  end
143
97
 
144
- describe "#vm?" do
145
- context "when the resource type is Infrastructure.Virtual" do
146
- let(:resource_data) { { "resourceTypeRef" => { "id" => "Infrastructure.Virtual" } } }
147
- it "returns true" do
98
+ describe '#vm?' do
99
+ context 'when the resource type is Cloud.vSphere.Machine' do
100
+ let(:resource_data) { { 'type' => 'Cloud.vSphere.Machine' } }
101
+ it 'returns true' do
148
102
  allow(resource).to receive(:resource_data).and_return(resource_data)
149
103
  expect(resource.vm?).to eq(true)
150
104
  end
151
105
  end
152
106
 
153
- context "when the resource type is Infrastructure.Cloud" do
154
- let(:resource_data) { { "resourceTypeRef" => { "id" => "Infrastructure.Cloud" } } }
155
- it "returns true" do
107
+ context 'when the resource type is Cloud.Machine' do
108
+ let(:resource_data) { { 'type' => 'Cloud.Machine' } }
109
+ it 'returns true' do
156
110
  allow(resource).to receive(:resource_data).and_return(resource_data)
157
111
  expect(resource.vm?).to eq(true)
158
112
  end
159
113
  end
160
114
 
161
- context "when the resource type is an unknown type" do
162
- let(:resource_data) { { "resourceTypeRef" => { "id" => "Infrastructure.Unknown" } } }
163
- it "returns false" do
115
+ context 'when the resource type is an unknown type' do
116
+ let(:resource_data) { { 'type' => 'Infrastructure.Unknown' } }
117
+ it 'returns false' do
164
118
  allow(resource).to receive(:resource_data).and_return(resource_data)
165
119
  expect(resource.vm?).to eq(false)
166
120
  end
167
121
  end
168
122
  end
169
123
 
170
- describe "#tenant_id" do
171
- it "returns the correct tenant ID" do
172
- expect(resource.tenant_id).to eq "vsphere.local"
173
- end
174
- end
175
-
176
- describe "#tenant_name" do
177
- it "returns the correct tenant name" do
178
- expect(resource.tenant_name).to eq "vsphere.local"
179
- end
180
- end
181
-
182
- describe "#subtenant_id" do
183
- it "returns the correct subtenant ID" do
184
- expect(resource.subtenant_id).to eq "5327ddd3-1a4e-4663-9e9d-63db86ffc8af"
185
- end
186
- end
187
-
188
- describe "#subtenant_name" do
189
- it "returns the correct subtenant name" do
190
- expect(resource.subtenant_name).to eq "Rainpole Developers"
191
- end
192
- end
193
-
194
- describe "#owner_ids" do
195
- it "returns the correct owner IDs" do
196
- expect(resource.owner_ids).to eq %w{user1@corp.local user2@corp.local}
197
- end
198
- end
199
-
200
- describe "#owner_names" do
201
- it "returns the correct owner names" do
202
- expect(resource.owner_names).to eq [ "Joe User", "Jane User" ]
203
- end
204
- end
205
-
206
- describe "#machine_status" do
207
- context "when no MachineStatus exists" do
208
- let(:resource_data) { { "resourceData" => { "entries" => [] } } }
209
-
210
- it "raises an exception" do
211
- allow(resource).to receive(:resource_data).and_return(resource_data)
212
- expect { resource.machine_status }.to raise_error(RuntimeError)
213
- end
214
- end
215
-
216
- context "when MachineStatus Exists" do
217
- let(:resource_data) do
218
- {
219
- "resourceData" => {
220
- "entries" => [
221
- {
222
- "key" => "MachineStatus",
223
- "value" => { "type" => "string", "value" => "Off" },
224
- },
225
- ],
226
- },
227
- }
228
- end
229
-
230
- it "returns the correct status value" do
231
- allow(resource).to receive(:resource_data).and_return(resource_data)
232
- expect(resource.machine_status).to eq("Off")
233
- end
234
- end
235
- end
236
-
237
- describe "#machine_on?" do
238
- it "returns true if the machine_status is On" do
239
- allow(resource).to receive(:machine_status).and_return("On")
240
- expect(resource.machine_on?).to eq(true)
241
- end
242
-
243
- it "returns false if the machine_status is not On" do
244
- allow(resource).to receive(:machine_status).and_return("Off")
245
- expect(resource.machine_on?).to eq(false)
246
- end
247
- end
248
-
249
- describe "#machine_off?" do
250
- it "returns true if the machine_status is Off" do
251
- allow(resource).to receive(:machine_status).and_return("Off")
252
- expect(resource.machine_off?).to eq(true)
253
- end
254
-
255
- it "returns false if the machine_status is not Off" do
256
- allow(resource).to receive(:machine_status).and_return("On")
257
- expect(resource.machine_off?).to eq(false)
258
- end
259
- end
260
-
261
- describe "#machine_turning_on?" do
262
- it "returns true if the machine_status is TurningOn" do
263
- allow(resource).to receive(:machine_status).and_return("TurningOn")
264
- expect(resource.machine_turning_on?).to eq(true)
265
- end
266
-
267
- it "returns true if the machine_status is MachineActivated" do
268
- allow(resource).to receive(:machine_status).and_return("MachineActivated")
269
- expect(resource.machine_turning_on?).to eq(true)
270
- end
271
-
272
- it "returns false if the machine_status is not TurningOn" do
273
- allow(resource).to receive(:machine_status).and_return("On")
274
- expect(resource.machine_turning_on?).to eq(false)
275
- end
276
- end
277
-
278
- describe "#machine_turning_off?" do
279
- it "returns true if the machine_status is TurningOff" do
280
- allow(resource).to receive(:machine_status).and_return("TurningOff")
281
- expect(resource.machine_turning_off?).to eq(true)
282
- end
283
-
284
- it "returns true if the machine_status is ShuttingDown" do
285
- allow(resource).to receive(:machine_status).and_return("ShuttingDown")
286
- expect(resource.machine_turning_off?).to eq(true)
287
- end
288
-
289
- it "returns false if the machine_status is not TurningOff or ShuttingDown" do
290
- allow(resource).to receive(:machine_status).and_return("Off")
291
- expect(resource.machine_turning_off?).to eq(false)
124
+ describe '#project' do
125
+ it 'returns the correct project ID' do
126
+ expect(resource.project_id).to eq 'pro-123'
292
127
  end
293
128
  end
294
129
 
295
- describe "#machine_in_provisioned_state?" do
296
- it "returns true if the machine_status is MachineProvisioned" do
297
- allow(resource).to receive(:machine_status).and_return("MachineProvisioned")
298
- expect(resource.machine_in_provisioned_state?).to eq(true)
299
- end
300
-
301
- it "returns false if the machine_status is not MachineProvisioned" do
302
- allow(resource).to receive(:machine_status).and_return("On")
303
- expect(resource.machine_in_provisioned_state?).to eq(false)
130
+ describe '#owner_names' do
131
+ it 'returns the correct owner names' do
132
+ expect(resource.owner_names).to eq 'admin'
304
133
  end
305
134
  end
306
135
 
307
- describe "#network_interfaces" do
308
- it "returns an array of 2 elements" do
136
+ describe '#network_interfaces' do
137
+ it 'returns an array of 2 elements' do
309
138
  expect(resource.network_interfaces.size).to be 2
310
139
  end
311
140
 
312
- it "contains the correct data" do
141
+ it 'contains the correct data' do
313
142
  nic1, nic2 = resource.network_interfaces
314
143
 
315
- expect(nic1["NETWORK_NAME"]).to eq "VM Network"
316
- expect(nic1["NETWORK_ADDRESS"]).to eq "192.168.110.200"
317
- expect(nic1["NETWORK_MAC_ADDRESS"]).to eq "00:50:56:ae:95:3c"
318
-
319
- expect(nic2["NETWORK_NAME"]).to eq "Management Network"
320
- expect(nic2["NETWORK_ADDRESS"]).to eq "192.168.220.200"
321
- expect(nic2["NETWORK_MAC_ADDRESS"]).to eq "00:50:56:ae:95:3d"
322
- end
323
- end
324
-
325
- describe "#ip_addresses" do
326
- let(:authn_payload) do
327
- {
328
- "username" => "user@corp.local",
329
- "password" => "password",
330
- "tenant" => "tenant",
331
- }.to_json
332
- end
333
-
334
- let(:resource_view_body) do
335
- File.read(File.join(File.dirname(__FILE__),
336
- "fixtures",
337
- "resource",
338
- "ip_address.txt"))
339
- end
340
-
341
- before do
342
- stub_request(
343
- :post,
344
- "https://vra.corp.local/identity/api/tokens"
345
- ).with(
346
- body: authn_payload,
347
- headers: { "Accept" => "application/json", "Content-Type" => "application/json" }
348
- ).to_return(
349
- status: 200,
350
- body: '{"id":"12345"}',
351
- headers: {}
352
- )
353
-
354
- stub_request(
355
- :head,
356
- "https://vra.corp.local/identity/api/tokens/12345"
357
- ).with(
358
- headers: { "Accept" => "application/json", "Authorization" => "Bearer 12345", "Content-Type" => "application/json" }
359
- ).to_return(
360
- status: 204,
361
- body: "",
362
- headers: {}
363
- )
364
-
365
- stub_request(
366
- :get,
367
- "https://vra.corp.local/catalog-service/api/consumer/requests/bogus/resourceViews"
368
- ).with(
369
- headers: { "Accept" => "application/json", "Content-Type" => "application/json" }
370
- ).to_return(
371
- status: 200,
372
- body: resource_view_body,
373
- headers: {}
374
- )
375
- end
376
-
377
- context "with IP address in the second element" do
378
- it "returns the correct IP addresses" do
379
- expect(resource.ip_addresses).to eq [ "172.16.20.147" ]
380
- end
381
- end
382
-
383
- context "with IP address in the third element" do
384
- let(:resource_view_body) do
385
- File.read(File.join(File.dirname(__FILE__),
386
- "fixtures",
387
- "resource",
388
- "ip_address_third_element.txt"))
389
- end
390
-
391
- it "returns the correct IP addresses" do
392
- expect(resource.ip_addresses).to eq [ "172.16.20.147" ]
393
- end
394
- end
144
+ expect(nic1['NETWORK_NAME']).to eq 'VM Network'
145
+ expect(nic1['NETWORK_ADDRESS']).to eq '192.168.110.200'
146
+ expect(nic1['NETWORK_MAC_ADDRESS']).to eq '00:50:56:ae:95:3c'
395
147
 
396
- it "returns nil if there are no network interfaces" do
397
- allow(resource).to receive(:network_interfaces).and_return nil
398
- expect(resource.ip_addresses).to be_nil
148
+ expect(nic2['NETWORK_NAME']).to eq 'Management Network'
149
+ expect(nic2['NETWORK_ADDRESS']).to eq '192.168.220.200'
150
+ expect(nic2['NETWORK_MAC_ADDRESS']).to eq '00:50:56:ae:95:3d'
399
151
  end
400
152
  end
401
153
 
402
- describe "#actions" do
403
- it "does not call #fetch_resource_data" do
404
- expect(resource).not_to receive(:fetch_resource_data)
405
- resource.actions
154
+ describe '#ip_addresses' do
155
+ it 'should have the correct ip address' do
156
+ expect(resource.ip_address).to eq '10.30.236.64'
406
157
  end
407
158
  end
408
-
409
- describe "#action_id_by_name" do
410
- it "returns the correct action ID for the destroy action" do
411
- expect(resource.action_id_by_name("Destroy")).to eq "ace8ba42-e724-48d8-9614-9b3a62b5a464"
412
- end
413
-
414
- it "returns nil if there are no resource operations" do
415
- allow(resource).to receive(:actions).and_return nil
416
- expect(resource.action_id_by_name("Destroy")).to be_nil
417
- end
418
-
419
- it "returns nil if there are actions, but none with the right name" do
420
- allow(resource).to receive(:actions).and_return([ { "name" => "some action" }, { "name" => "another action" } ])
421
- expect(resource.action_id_by_name("Destroy")).to be_nil
422
- end
423
- end
424
-
425
- describe "#destroy" do
426
- it_behaves_like "a resource action", :destroy, "Destroy"
427
- end
428
-
429
- describe "#shutdown" do
430
- it_behaves_like "a resource action", :shutdown, "Shutdown"
431
- end
432
-
433
- describe "#poweroff" do
434
- it_behaves_like "a resource action", :poweroff, "Power Off"
435
- end
436
-
437
- describe "#poweron" do
438
- it_behaves_like "a resource action", :poweron, "Power On"
439
- end
440
-
441
- describe "#submit_action_request" do
442
- before do
443
- allow(resource).to receive(:action_request_payload).and_return({})
444
- response = double("response", location: "/requests/request-12345")
445
- allow(client).to receive(:http_post).with("/catalog-service/api/consumer/requests", "{}").and_return(response)
446
- end
447
-
448
- it "calls http_post" do
449
- expect(client).to receive(:http_post).with("/catalog-service/api/consumer/requests", "{}")
450
-
451
- resource.submit_action_request("action-123")
452
- end
453
-
454
- it "returns a Vra::Request object" do
455
- expect(resource.submit_action_request("action-123")).to be_an_instance_of(Vra::Request)
456
- end
457
- end
458
- end
459
-
460
- context "when a valid VM resource instance with no operations is created" do
461
- let(:resource) { Vra::Resource.new(client, data: vm_payload_no_ops) }
462
-
463
- describe "#actions" do
464
- it "calls #fetch_resource_data" do
465
- expect(resource).to receive(:fetch_resource_data)
466
- resource.actions
467
- end
468
- end
469
- end
470
-
471
- context "when a valid non-VM resource instance has been created" do
472
- let(:resource) { Vra::Resource.new(client, data: non_vm_payload) }
473
-
474
- it "returns nil for network_interfaces and ip_addresses" do
475
- expect(resource.network_interfaces).to be_nil
476
- expect(resource.ip_addresses).to be_nil
477
- end
478
159
  end
479
160
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  #
3
3
  # Author:: Chef Partner Engineering (<partnereng@chef.io>)
4
- # Copyright:: Copyright (c) 2015 Chef Software, Inc.
4
+ # Copyright:: Copyright (c) 2022 Chef Software, Inc.
5
5
  # License:: Apache License, Version 2.0
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,13 +17,19 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require "vra"
21
- require "webmock/rspec"
20
+ require 'webmock/rspec'
21
+ require 'simplecov'
22
+
23
+ SimpleCov.start do
24
+ enable_coverage :branch
25
+ end
26
+
27
+ require 'vra'
22
28
 
23
29
  def fixtures_dir
24
30
  @fixtures_dir ||= begin
25
31
  base_dir = File.dirname(__FILE__)
26
- File.join(base_dir, "fixtures")
32
+ File.join(base_dir, 'fixtures')
27
33
  end
28
34
  end
29
35
 
data/vmware-vra.gemspec CHANGED
@@ -23,7 +23,6 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_development_dependency "bundler", ">= 1.7"
25
25
  spec.add_development_dependency "chefstyle"
26
- spec.add_development_dependency "github_changelog_generator"
27
26
  spec.add_development_dependency "pry", "~> 0.10"
28
27
  spec.add_development_dependency "rake", "~> 10.0"
29
28
  spec.add_development_dependency "rspec", "~> 3.0"