beaker-vagrant 0.6.7 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,56 +6,53 @@ describe Beaker::VagrantLibvirt do
6
6
  'libvirt' => { 'uri' => 'qemu+ssh://root@host/system'},
7
7
  'vagrant_cpus' => 2,
8
8
  }) }
9
- let( :vagrant ) { Beaker::VagrantLibvirt.new( @hosts, options ) }
10
-
11
- before :each do
12
- @hosts = make_hosts()
9
+ let( :vagrant ) { described_class.new( hosts, options ) }
10
+ let( :hosts ) do
11
+ make_hosts().each do |host|
12
+ host.delete('ip')
13
+ end
13
14
  end
14
15
 
15
16
  it "uses the vagrant_libvirt provider for provisioning" do
16
- @hosts.each do |host|
17
+ hosts.each do |host|
17
18
  host_prev_name = host['user']
18
19
  expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
19
20
  expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
20
21
  expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
21
22
  end
22
- expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
23
- FakeFS.activate!
23
+ expect( vagrant ).to receive( :hack_etc_hosts ).with( hosts, options ).once
24
24
  expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider libvirt" ).once
25
- vagrant.provision
25
+ FakeFS do
26
+ vagrant.provision
27
+ end
26
28
  end
27
29
 
28
30
  context 'Correct vagrant configuration' do
29
- before(:each) do
30
- FakeFS.activate!
31
- path = vagrant.instance_variable_get( :@vagrant_path )
31
+ subject do
32
+ FakeFS do
33
+ vagrant.make_vfile( hosts, options )
34
+ File.read(vagrant.instance_variable_get(:@vagrant_file))
35
+ end
36
+ end
32
37
 
33
- vagrant.make_vfile( @hosts, options )
34
- @vagrantfile = File.read( File.expand_path( File.join( path, "Vagrantfile")))
38
+ it 'has a provider section' do
39
+ is_expected.to include( %Q{ v.vm.provider :libvirt do |node|})
35
40
  end
36
41
 
37
- it "can make a Vagranfile for a set of hosts" do
38
- expect( @vagrantfile ).to include( %Q{ v.vm.provider :libvirt do |node|})
42
+ it "has no private network" do
43
+ is_expected.not_to include('v.vm.network :private_network')
39
44
  end
40
45
 
41
46
  it "can specify the memory as an integer" do
42
- expect( @vagrantfile.split("\n").map(&:strip) )
43
- .to include('node.memory = 1024')
47
+ is_expected.to include('node.memory = 1024')
44
48
  end
45
49
 
46
50
  it "can specify the number of cpus" do
47
- expect( @vagrantfile.split("\n").map(&:strip) )
48
- .to include("node.cpus = 2")
51
+ is_expected.to include("node.cpus = 2")
49
52
  end
50
53
 
51
54
  it "can specify any libvirt option" do
52
- expect( @vagrantfile.split("\n").map(&:strip) )
53
- .to include("node.uri = 'qemu+ssh://root@host/system'")
54
- end
55
-
56
- it "has a mac address in the proper format" do
57
- expect( @vagrantfile.split("\n").map(&:strip) )
58
- .to include(/:mac => "08:00:27:\h{2}:\h{2}:\h{2}"/)
55
+ is_expected.to include("node.uri = 'qemu+ssh://root@host/system'")
59
56
  end
60
57
  end
61
58
  end
@@ -2,43 +2,40 @@ require 'spec_helper'
2
2
 
3
3
  describe Beaker::VagrantParallels do
4
4
  let( :options ) { make_opts.merge({ :hosts_file => 'sample.cfg', 'logger' => double().as_null_object }) }
5
- let( :vagrant ) { Beaker::VagrantParallels.new( @hosts, options ) }
6
-
7
- before :each do
8
- @hosts = make_hosts()
9
- end
5
+ let( :vagrant ) { Beaker::VagrantParallels.new( hosts, options ) }
6
+ let( :hosts ) { make_hosts }
10
7
 
11
8
  it "uses the parallels provider for provisioning" do
12
- @hosts.each do |host|
9
+ hosts.each do |host|
13
10
  host_prev_name = host['user']
14
11
  expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
15
12
  expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
16
13
  expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
17
14
  end
18
- expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
15
+ expect( vagrant ).to receive( :hack_etc_hosts ).with( hosts, options ).once
19
16
  expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider parallels" ).once
20
17
  vagrant.provision
21
18
  end
22
19
 
23
- it "can make a Vagranfile for a set of hosts" do
24
- path = vagrant.instance_variable_get( :@vagrant_path )
25
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
26
-
27
- vagrant.make_vfile( @hosts )
20
+ context 'Correct vagrant configuration' do
21
+ subject do
22
+ FakeFS do
23
+ vagrant.make_vfile( hosts, options )
24
+ File.read(vagrant.instance_variable_get(:@vagrant_file))
25
+ end
26
+ end
28
27
 
29
- vagrantfile = File.read( File.expand_path( File.join( path, 'Vagrantfile' )))
30
- expect( vagrantfile ).to include( %Q{ v.vm.provider :parallels do |prl|\n prl.optimize_power_consumption = false\n prl.memory = '1024'\n end})
28
+ it "can make a Vagrantfile for a set of hosts" do
29
+ is_expected.to include( %Q{ v.vm.provider :parallels do |prl|\n prl.optimize_power_consumption = false\n prl.memory = '1024'\n end})
30
+ end
31
31
  end
32
32
 
33
- it "can disable the auto-update functionality of the Parallels Guest Tools" do
34
- options.merge!({ :prl_update_guest_tools => 'disable' })
35
-
36
- vfile_section = vagrant.class.provider_vfile_section( @hosts.first, options )
37
-
38
- match = vfile_section.match(/prl.update_guest_tools = false/)
39
-
40
- expect( match ).to_not be nil
33
+ context 'disabled guest tools' do
34
+ let(:options) { super().merge({ :prl_update_guest_tools => 'disable' }) }
35
+ subject { vagrant.class.provider_vfile_section( hosts.first, options ) }
41
36
 
37
+ it "can disable the auto-update functionality of the Parallels Guest Tools" do
38
+ is_expected.to match(/prl.update_guest_tools = false/)
39
+ end
42
40
  end
43
-
44
41
  end
@@ -30,7 +30,6 @@ module Beaker
30
30
  end
31
31
 
32
32
  it "stores the vagrant file in $WORKINGDIR/.vagrant/beaker_vagrant_files/beaker_sample.cfg" do
33
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
34
33
  path = vagrant.instance_variable_get( :@vagrant_path )
35
34
 
36
35
  expect( path ).to be === File.join(Dir.pwd, '.vagrant', 'beaker_vagrant_files', 'beaker_sample.cfg')
@@ -39,7 +38,6 @@ module Beaker
39
38
 
40
39
  it "can make a Vagrantfile for a set of hosts" do
41
40
  path = vagrant.instance_variable_get( :@vagrant_path )
42
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
43
41
 
44
42
  vagrant.make_vfile( @hosts )
45
43
 
@@ -53,7 +51,7 @@ Vagrant.configure("2") do |c|
53
51
  v.vm.box = 'vm2vm1_of_my_box'
54
52
  v.vm.box_url = 'http://address.for.my.box.vm1'
55
53
  v.vm.box_check_update = 'true'
56
- v.vm.network :private_network, ip: "ip.address.for.vm1", :netmask => "255.255.0.0", :mac => "0123456789"
54
+ v.vm.network :private_network, ip: "ip.address.for.vm1", :netmask => "255.255.0.0"
57
55
  v.vm.synced_folder './', '/temp', create: true
58
56
  v.vm.synced_folder '../', '/tmp', create: true
59
57
  v.vm.network :forwarded_port, guest: 80, host: 10080
@@ -68,7 +66,7 @@ Vagrant.configure("2") do |c|
68
66
  v.vm.box = 'vm2vm2_of_my_box'
69
67
  v.vm.box_url = 'http://address.for.my.box.vm2'
70
68
  v.vm.box_check_update = 'true'
71
- v.vm.network :private_network, ip: "ip.address.for.vm2", :netmask => "255.255.0.0", :mac => "0123456789"
69
+ v.vm.network :private_network, ip: "ip.address.for.vm2", :netmask => "255.255.0.0"
72
70
  v.vm.synced_folder './', '/temp', create: true
73
71
  v.vm.synced_folder '../', '/tmp', create: true
74
72
  v.vm.network :forwarded_port, guest: 80, host: 10080
@@ -83,7 +81,7 @@ Vagrant.configure("2") do |c|
83
81
  v.vm.box = 'vm2vm3_of_my_box'
84
82
  v.vm.box_url = 'http://address.for.my.box.vm3'
85
83
  v.vm.box_check_update = 'true'
86
- v.vm.network :private_network, ip: "ip.address.for.vm3", :netmask => "255.255.0.0", :mac => "0123456789"
84
+ v.vm.network :private_network, ip: "ip.address.for.vm3", :netmask => "255.255.0.0"
87
85
  v.vm.synced_folder './', '/temp', create: true
88
86
  v.vm.synced_folder '../', '/tmp', create: true
89
87
  v.vm.network :forwarded_port, guest: 80, host: 10080
@@ -99,7 +97,6 @@ EOF
99
97
 
100
98
  it "can make a Vagrantfile with ssh agent forwarding enabled" do
101
99
  path = vagrant.instance_variable_get( :@vagrant_path )
102
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
103
100
 
104
101
  hosts = make_hosts({},1)
105
102
  vagrant.make_vfile( hosts, options )
@@ -110,7 +107,6 @@ EOF
110
107
 
111
108
  it "can replace underscores in host.name with hypens" do
112
109
  path = vagrant.instance_variable_get( :@vagrant_path )
113
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
114
110
 
115
111
  host = make_host( 'name-with_underscore', {} )
116
112
  vagrant.make_vfile( [host,], options )
@@ -122,7 +118,6 @@ EOF
122
118
 
123
119
  it "can make a Vagrantfile with synced_folder disabled" do
124
120
  path = vagrant.instance_variable_get( :@vagrant_path )
125
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
126
121
 
127
122
  hosts = make_hosts({:synced_folder => 'disabled'},1)
128
123
  vagrant.make_vfile( hosts, options )
@@ -131,16 +126,6 @@ EOF
131
126
  expect( vagrantfile ).to match(/v.vm.synced_folder .* disabled: true/)
132
127
  end
133
128
 
134
- it "can make a Vagrantfile with network mac autogenerated" do
135
- path = vagrant.instance_variable_get( :@vagrant_path )
136
-
137
- hosts = make_hosts({},1)
138
- vagrant.make_vfile( hosts, options )
139
-
140
- vagrantfile = File.read( File.expand_path( File.join( path, "Vagrantfile")))
141
- expect( vagrantfile ).to match(/v.vm.network :private_network, ip: "ip.address.for.vm1", :netmask => "255.255.0.0", :mac => ".+/)
142
- end
143
-
144
129
  it "can make a Vagrantfile with network mac specified" do
145
130
  path = vagrant.instance_variable_get( :@vagrant_path )
146
131
 
@@ -151,16 +136,6 @@ EOF
151
136
  expect( vagrantfile ).to match(/v.vm.network :private_network, ip: "ip.address.for.vm1", :netmask => "255.255.0.0", :mac => "b6:33:ae:19:48:f9/)
152
137
  end
153
138
 
154
- it "can make a Vagrantfile with network mac disabled" do
155
- path = vagrant.instance_variable_get( :@vagrant_path )
156
-
157
- hosts = make_hosts({:network_mac => 'false'},1)
158
- vagrant.make_vfile( hosts, options )
159
-
160
- vagrantfile = File.read( File.expand_path( File.join( path, "Vagrantfile")))
161
- expect( vagrantfile ).to match(/v.vm.network :private_network, ip: "ip.address.for.vm1", :netmask => "255.255.0.0"/)
162
- end
163
-
164
139
  it "can make a Vagrantfile with improper keys for synced folders" do
165
140
  path = vagrant.instance_variable_get( :@vagrant_path )
166
141
 
@@ -182,7 +157,6 @@ EOF
182
157
 
183
158
  it "can make a Vagrantfile with optional shell provisioner" do
184
159
  path = vagrant.instance_variable_get( :@vagrant_path )
185
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
186
160
 
187
161
  shell_path = '/path/to/shell/script'
188
162
  hosts = make_hosts({
@@ -198,7 +172,6 @@ EOF
198
172
 
199
173
  it "can make a Vagrantfile with optional shell provisioner with args" do
200
174
  path = vagrant.instance_variable_get( :@vagrant_path )
201
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
202
175
 
203
176
  shell_path = '/path/to/shell/script.sh'
204
177
  shell_args = 'arg1 arg2'
@@ -216,7 +189,6 @@ EOF
216
189
 
217
190
  it "raises an error if path is not set on shell_provisioner" do
218
191
  path = vagrant.instance_variable_get( :@vagrant_path )
219
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
220
192
 
221
193
  hosts = make_hosts({:shell_provisioner => {}}, 1)
222
194
  expect{ vagrant.make_vfile( hosts, options ) }.to raise_error RuntimeError, /No path defined for shell_provisioner or path empty/
@@ -224,7 +196,6 @@ EOF
224
196
 
225
197
  it "raises an error if path is EMPTY on shell_provisioner" do
226
198
  path = vagrant.instance_variable_get( :@vagrant_path )
227
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
228
199
 
229
200
  empty_shell_path = ''
230
201
  hosts = make_hosts({
@@ -238,7 +209,6 @@ EOF
238
209
  context "when generating a windows config" do
239
210
  before do
240
211
  path = vagrant.instance_variable_get( :@vagrant_path )
241
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
242
212
  @hosts[0][:platform] = 'windows'
243
213
 
244
214
  vagrant.make_vfile( @hosts )
@@ -270,7 +240,6 @@ EOF
270
240
  context 'when generating a freebsd config' do
271
241
  before do
272
242
  path = vagrant.instance_variable_get( :@vagrant_path )
273
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
274
243
  @hosts[0][:platform] = 'freebsd'
275
244
 
276
245
  vagrant.make_vfile( @hosts )
@@ -285,15 +254,10 @@ EOF
285
254
  it 'has the proper guest setting' do
286
255
  expect( @generated_file ).to match /v.vm.guest = :freebsd\n/
287
256
  end
288
-
289
- it 'sets the vm.base_mac setting' do
290
- expect( @generated_file ).to match /v.vm.base_mac = '0123456789'\n/
291
- end
292
257
  end
293
258
 
294
259
  it "uses the memsize defined per vagrant host" do
295
260
  path = vagrant.instance_variable_get( :@vagrant_path )
296
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
297
261
 
298
262
  vagrant.make_vfile( @hosts, {'vagrant_memsize' => 'hello!'} )
299
263
 
@@ -307,7 +271,6 @@ EOF
307
271
 
308
272
  it "uses the cpus defined per vagrant host" do
309
273
  path = vagrant.instance_variable_get( :@vagrant_path )
310
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
311
274
 
312
275
  vagrant.make_vfile( @hosts, {'vagrant_cpus' => 'goodbye!'} )
313
276
 
@@ -322,7 +285,6 @@ EOF
322
285
  context "port forwarding rules" do
323
286
  it "supports all Vagrant parameters" do
324
287
  path = vagrant.instance_variable_get( :@vagrant_path )
325
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
326
288
 
327
289
  hosts = make_hosts(
328
290
  {
@@ -344,7 +306,6 @@ EOF
344
306
 
345
307
  it "supports supports from_ip" do
346
308
  path = vagrant.instance_variable_get( :@vagrant_path )
347
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
348
309
 
349
310
  hosts = make_hosts(
350
311
  {
@@ -364,7 +325,6 @@ EOF
364
325
 
365
326
  it "supports all to_ip" do
366
327
  path = vagrant.instance_variable_get( :@vagrant_path )
367
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
368
328
 
369
329
  hosts = make_hosts(
370
330
  {
@@ -384,7 +344,6 @@ EOF
384
344
 
385
345
  it "supports all protocol" do
386
346
  path = vagrant.instance_variable_get( :@vagrant_path )
387
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
388
347
 
389
348
  hosts = make_hosts(
390
349
  {
@@ -451,57 +410,57 @@ EOF
451
410
  end
452
411
 
453
412
  describe "set_ssh_config" do
454
- let( :out ) { double( 'stdout' ) }
413
+ let( :out ) do
414
+ <<-CONFIG
415
+ Host #{name}
416
+ HostName 127.0.0.1
417
+ User vagrant
418
+ Port 2222
419
+ UserKnownHostsFile /dev/null
420
+ StrictHostKeyChecking no
421
+ PasswordAuthentication no
422
+ IdentityFile /home/root/.vagrant.d/insecure_private_key
423
+ IdentitiesOnly yes
424
+ CONFIG
425
+ end
455
426
  let( :host ) { @hosts[0] }
456
427
  let( :name ) { host.name }
457
- let( :file ) { double( 'file' ) }
428
+ let( :override_options ) { {} }
458
429
 
459
430
  before :each do
460
- allow( Dir ).to receive( :chdir ).and_yield()
461
- wait_thr = OpenStruct.new
462
- state = double( 'state' )
463
- allow( state ).to receive( :success? ).and_return( true )
464
- wait_thr.value = state
465
-
466
- allow( Open3 ).to receive( :popen3 ).with( {"RUBYLIB"=>"", "RUBYOPT"=>""}, 'vagrant', 'ssh-config', name ).and_return( [ "", out, "", wait_thr ])
431
+ # FakeFS is just broken with Tempfile
432
+ FakeFS.deactivate!
433
+ Dir.mktmpdir do |dir|
434
+ vagrant.instance_variable_get(:@options).merge!(override_options)
435
+ vagrant.instance_variable_set(:@vagrant_path, dir)
436
+ state = double( 'state' )
437
+ allow( state ).to receive( :success? ).and_return( true )
438
+ allow( Open3 ).to receive( :capture3 ).with( {"RUBYLIB"=>"", "RUBYOPT"=>""}, 'vagrant', 'ssh-config', name ).and_return( [ out, "", state ])
467
439
 
468
- allow( file ).to receive( :path ).and_return( '/path/sshconfig' )
469
- allow( file ).to receive( :rewind ).and_return( true )
440
+ vagrant.set_ssh_config( host, 'root' )
441
+ end
442
+ end
470
443
 
471
- allow( out ).to receive( :read ).and_return("Host #{name}
472
- HostName 127.0.0.1
473
- User vagrant
474
- Port 2222
475
- UserKnownHostsFile /dev/null
476
- StrictHostKeyChecking no
477
- PasswordAuthentication no
478
- IdentityFile /home/root/.vagrant.d/insecure_private_key
479
- IdentitiesOnly yes")
444
+ it 'sets the user to root' do
445
+ expect(host['user']).to be === 'root'
480
446
  end
481
447
 
482
- it "can generate a ssh-config file" do
483
- expect( Tempfile ).to receive( :new ).with( "#{host.name}").and_return( file )
484
- expect( file ).to receive( :write ).with("Host ip.address.for.#{name}\n HostName 127.0.0.1\n User root\n Port 2222\n UserKnownHostsFile /dev/null\n StrictHostKeyChecking no\n PasswordAuthentication no\n IdentityFile /home/root/.vagrant.d/insecure_private_key\n IdentitiesOnly no")
448
+ it 'sets the ssh user to root' do
449
+ expect(host['ssh']['user']).to be === 'root'
450
+ end
485
451
 
486
- vagrant.set_ssh_config( host, 'root' )
487
- expect( host[:vagrant_ssh_config] ).to be === '/path/sshconfig'
488
- expect( host['ssh'][:config]).to be === false
489
- expect( host['user']).to be === 'root'
452
+ # This is because forward_ssh_agent is true by default
453
+ it 'sets IdentitiesOnly to no' do
454
+ expect(host['ssh'][:keys_only]).to be === false
490
455
  end
491
456
 
492
457
  context "when :forward_ssh_agent is false" do
493
- it "should not change IdentitiesOnly to no" do
494
- options = vagrant.instance_variable_get( :@options )
495
- options['forward_ssh_agent'] = false
496
- options = vagrant.instance_variable_set( :@options, options )
497
-
498
- expect( Tempfile ).to receive( :new ).with( "#{host.name}").and_return( file )
499
- expect( file ).to receive( :write ).with("Host ip.address.for.#{name}\n HostName 127.0.0.1\n User root\n Port 2222\n UserKnownHostsFile /dev/null\n StrictHostKeyChecking no\n PasswordAuthentication no\n IdentityFile /home/root/.vagrant.d/insecure_private_key\n IdentitiesOnly yes")
458
+ let(:override_options) do
459
+ {forward_ssh_agent: false}
460
+ end
500
461
 
501
- vagrant.set_ssh_config( host, 'root' )
502
- expect( host[:vagrant_ssh_config] ).to be === '/path/sshconfig'
503
- expect( host['ssh'][:config]).to be === false
504
- expect( host['user']).to be === 'root'
462
+ it "should keep IdentitiesOnly to yes" do
463
+ expect( host['ssh'][:keys_only]).to be === true
505
464
  end
506
465
  end
507
466
  end
@@ -515,17 +474,6 @@ EOF
515
474
  end
516
475
  end
517
476
 
518
- it 'calls #get_ip_from_vagrant_file' do
519
- vagrant.make_vfile(@hosts)
520
-
521
- @hosts.each do |host|
522
- allow(vagrant).to receive(:set_ssh_config).with(host, anything)
523
- expect(vagrant).to receive(:get_ip_from_vagrant_file).with(host.name)
524
- end
525
-
526
- vagrant.configure
527
- end
528
-
529
477
  it 'calls #set_all_ssh_config' do
530
478
  vagrant.make_vfile(@hosts)
531
479
  expect(vagrant).to receive(:set_all_ssh_config)
@@ -569,31 +517,6 @@ EOF
569
517
  end
570
518
  end
571
519
 
572
- describe "get_ip_from_vagrant_file" do
573
- before :each do
574
- allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
575
- vagrant.make_vfile( @hosts )
576
- end
577
-
578
- it "can find the correct ip for the provided hostname" do
579
- @hosts.each do |host|
580
- expect( vagrant.get_ip_from_vagrant_file(host.name) ).to be === host[:ip]
581
- end
582
-
583
- end
584
-
585
- it "returns nil if it is unable to find an ip" do
586
- expect( vagrant.get_ip_from_vagrant_file("unknown") ).to be_nil
587
- end
588
-
589
- it "raises an error if no Vagrantfile is present" do
590
- File.delete( vagrant.instance_variable_get( :@vagrant_file ) )
591
- @hosts.each do |host|
592
- expect{ vagrant.get_ip_from_vagrant_file(host.name) }.to raise_error RuntimeError, /No vagrant file found/
593
- end
594
- end
595
- end
596
-
597
520
  describe "provisioning and cleanup" do
598
521
 
599
522
  before :each do