beaker 2.5.0 → 2.5.1

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.
@@ -579,6 +579,63 @@ describe ClassMixedWithDSLInstallUtils do
579
579
  end
580
580
  end
581
581
 
582
+ describe 'configure_puppet_on' do
583
+ before do
584
+ allow(subject).to receive(:on).and_return(Beaker::Result.new({},''))
585
+ end
586
+ context 'on debian' do
587
+ let(:platform) { 'debian-7-amd64' }
588
+ let(:host) { make_host('testbox.test.local', :platform => 'debian-7-amd64') }
589
+ it 'it sets the puppet.conf file to the provided config' do
590
+ config = { 'main' => {'server' => 'testbox.test.local'} }
591
+ expect(subject).to receive(:on).with(host, "echo \"[main]\nserver=testbox.test.local\n\n\" > /etc/puppet/puppet.conf")
592
+ subject.configure_puppet_on(host, config)
593
+ end
594
+ end
595
+ context 'on windows' do
596
+ let(:platform) { 'windows-2008R2-amd64' }
597
+ let(:host) { make_host('testbox.test.local', :platform => 'windows-2008R2-amd64') }
598
+ it 'it sets the puppet.conf file to the provided config' do
599
+ config = { 'main' => {'server' => 'testbox.test.local'} }
600
+ expect(subject).to receive(:on) do |host, command|
601
+ expect(command.command).to eq('powershell.exe')
602
+ expect(command.args).to eq(["-ExecutionPolicy Bypass", "-InputFormat None", "-NoLogo", "-NoProfile", "-NonInteractive", "-Command $text = \\\"[main]`nserver=testbox.test.local`n`n\\\"; Set-Content -path '`cygpath -smF 35`/PuppetLabs/puppet/etc\\puppet.conf' -value $text"])
603
+ end
604
+ subject.configure_puppet_on(host, config)
605
+ end
606
+ end
607
+ end
608
+
609
+ describe 'configure_puppet' do
610
+ let(:hosts) do
611
+ make_hosts({:platform => platform })
612
+ end
613
+
614
+ before do
615
+ allow( subject ).to receive(:hosts).and_return(hosts)
616
+ allow( subject ).to receive(:on).and_return(Beaker::Result.new({},''))
617
+ end
618
+ context 'on debian' do
619
+ let(:platform) { 'debian-7-amd64' }
620
+ it 'it sets the puppet.conf file to the provided config' do
621
+ config = { 'main' => {'server' => 'testbox.test.local'} }
622
+ expect(subject).to receive(:on).with(hosts[0], "echo \"[main]\nserver=testbox.test.local\n\n\" > /etc/puppet/puppet.conf")
623
+ subject.configure_puppet(config)
624
+ end
625
+ end
626
+ context 'on windows' do
627
+ let(:platform) { 'windows-2008R2-amd64' }
628
+ it 'it sets the puppet.conf file to the provided config' do
629
+ config = { 'main' => {'server' => 'testbox.test.local'} }
630
+ expect(subject).to receive(:on) do |host, command|
631
+ expect(command.command).to eq('powershell.exe')
632
+ expect(command.args).to eq(["-ExecutionPolicy Bypass", "-InputFormat None", "-NoLogo", "-NoProfile", "-NonInteractive", "-Command $text = \\\"[main]`nserver=testbox.test.local`n`n\\\"; Set-Content -path '`cygpath -smF 35`/PuppetLabs/puppet/etc\\puppet.conf' -value $text"])
633
+ end
634
+ subject.configure_puppet(config)
635
+ end
636
+ end
637
+ end
638
+
582
639
  describe '#add_system32_hosts_entry' do
583
640
  before do
584
641
  allow( subject ).to receive(:on).and_return(Beaker::Result.new({},''))
@@ -601,7 +658,7 @@ describe ClassMixedWithDSLInstallUtils do
601
658
  entry = { 'ip' => '23.251.154.122', 'name' => 'forge.puppetlabs.com' }
602
659
  expect(subject).to receive(:on) do |host, command|
603
660
  expect(command.command).to eq('powershell.exe')
604
- expect(command.args).to eq(" -ExecutionPolicy Bypass -InputFormat None -NoLogo -NoProfile -NonInteractive -Command \"$text = \\\"23.251.154.122`t`tforge.puppetlabs.com\\\"; Add-Content -path 'C:\\Windows\\System32\\Drivers\\etc\\hosts' -value $text\"")
661
+ expect(command.args).to eq(["-ExecutionPolicy Bypass", "-InputFormat None", "-NoLogo", "-NoProfile", "-NonInteractive", "-Command $text = \\\"23.251.154.122`t`tforge.puppetlabs.com\\\"; Add-Content -path 'C:\\Windows\\System32\\Drivers\\etc\\hosts' -value $text"])
605
662
  end
606
663
 
607
664
 
@@ -658,10 +715,11 @@ describe ClassMixedWithDSLInstallUtils do
658
715
  the_hosts = [ hosts[0].dup, hosts[1].dup, hosts[2].dup ]
659
716
  allow( subject ).to receive( :hosts ).and_return( the_hosts )
660
717
  allow( subject ).to receive( :options ).and_return( {} )
718
+ allow( subject ).to receive( :version_is_less ).with('3.0', '3.4.0').and_return( true )
661
719
  allow( subject ).to receive( :version_is_less ).with('2.8', '3.0').and_return( true )
662
720
  version = version_win = '2.8'
663
721
  path = "/path/to/upgradepkg"
664
- expect( subject ).to receive( :do_install ).with( the_hosts, { :type => :upgrade } )
722
+ expect( subject ).to receive( :do_install ).with( the_hosts, {:type=>:upgrade, :set_console_password=>true} )
665
723
  subject.upgrade_pe( path )
666
724
  the_hosts.each do |h|
667
725
  expect( h['pe_installer'] ).to be === 'puppet-enterprise-upgrader'
@@ -674,10 +732,11 @@ describe ClassMixedWithDSLInstallUtils do
674
732
  the_hosts = [ hosts[0].dup, hosts[1].dup, hosts[2].dup ]
675
733
  allow( subject ).to receive( :hosts ).and_return( the_hosts )
676
734
  allow( subject ).to receive( :options ).and_return( {} )
735
+ allow( subject ).to receive( :version_is_less ).with('3.0', '3.4.0').and_return( true )
677
736
  allow( subject ).to receive( :version_is_less ).with('3.1', '3.0').and_return( false )
678
737
  version = version_win = '3.1'
679
738
  path = "/path/to/upgradepkg"
680
- expect( subject ).to receive( :do_install ).with( the_hosts, { :type => :upgrade } )
739
+ expect( subject ).to receive( :do_install ).with( the_hosts, {:type=>:upgrade, :set_console_password=>true} )
681
740
  subject.upgrade_pe( path )
682
741
  the_hosts.each do |h|
683
742
  expect( h['pe_installer'] ).to be nil
@@ -690,10 +749,11 @@ describe ClassMixedWithDSLInstallUtils do
690
749
  the_hosts = [ hosts[0].dup, hosts[1].dup, hosts[2].dup ]
691
750
  allow( subject ).to receive( :hosts ).and_return( the_hosts )
692
751
  allow( subject ).to receive( :options ).and_return( {} )
752
+ allow( subject ).to receive( :version_is_less ).with('3.0', '3.4.0').and_return( true )
693
753
  allow( subject ).to receive( :version_is_less ).with('2.8', '3.0').and_return( true )
694
754
  version = version_win = '2.8'
695
755
  path = "/path/to/upgradepkg"
696
- expect( subject ).to receive( :do_install ).with( the_hosts, { :type => :upgrade } )
756
+ expect( subject ).to receive( :do_install ).with( the_hosts, {:type=>:upgrade, :set_console_password=>true} )
697
757
  subject.upgrade_pe( path )
698
758
  the_hosts.each do |h|
699
759
  expect( h['pe_ver'] ).to be === '2.8'
@@ -917,6 +977,24 @@ describe ClassMixedWithDSLInstallUtils do
917
977
  subject.install_puppetagent_dev_repo( host, opts )
918
978
  end
919
979
 
980
+ it 'runs the correct install for windows platforms' do
981
+ platform = Object.new()
982
+ allow(platform).to receive(:to_array) { ['windows', '5', 'x64']}
983
+ host = basic_hosts.first
984
+ host['platform'] = platform
985
+ opts = { :version => '0.1.0' }
986
+ allow( subject ).to receive( :options ).and_return( {} )
987
+ mock_echo = Object.new()
988
+ allow( mock_echo ).to receive( :raw_output ).and_return( " " )
989
+
990
+ expect(subject).to receive(:fetch_http_file).once.with(/\/windows$/, 'puppet-agent-x64.msi', /\/windows$/)
991
+ expect(subject).to receive(:scp_to).once.with(host, /\/puppet-agent-x64.msi$/, /cygpath/)
992
+ expect(subject).to receive(:on).ordered.with(host, /echo/).and_return(mock_echo)
993
+ expect(subject).to receive(:on).ordered.with(host, anything)
994
+
995
+ subject.install_puppetagent_dev_repo( host, opts )
996
+ end
997
+
920
998
  it 'allows you to override the local copy directory' do
921
999
  platform = Object.new()
922
1000
  allow(platform).to receive(:to_array) { ['debian', '5', 'x4']}
@@ -62,14 +62,14 @@ describe ClassMixedWithDSLWrappers do
62
62
  it 'should pass "powershell.exe <args> -Command <command>" to Command' do
63
63
  command = subject.powershell("Set-Content -path 'fu.txt' -value 'fu'")
64
64
  expect(command.command ).to be === 'powershell.exe'
65
- expect( command.args).to be === ' -ExecutionPolicy Bypass -InputFormat None -NoLogo -NoProfile -NonInteractive -Command "Set-Content -path \'fu.txt\' -value \'fu\'"'
65
+ expect( command.args).to be === ["-ExecutionPolicy Bypass", "-InputFormat None", "-NoLogo", "-NoProfile", "-NonInteractive", "-Command Set-Content -path 'fu.txt' -value 'fu'"]
66
66
  expect( command.options ).to be === {}
67
67
  end
68
68
 
69
69
  it 'should merge the arguments provided with the defaults' do
70
70
  command = subject.powershell("Set-Content -path 'fu.txt' -value 'fu'", {'ExecutionPolicy' => 'Unrestricted'})
71
71
  expect( command.command).to be === 'powershell.exe'
72
- expect( command.args ).to be === ' -ExecutionPolicy Unrestricted -InputFormat None -NoLogo -NoProfile -NonInteractive -Command "Set-Content -path \'fu.txt\' -value \'fu\'"'
72
+ expect( command.args ).to be === ["-ExecutionPolicy Unrestricted", "-InputFormat None", "-NoLogo", "-NoProfile", "-NonInteractive", "-Command Set-Content -path 'fu.txt' -value 'fu'"]
73
73
  expect( command.options ).to be === {}
74
74
  end
75
75
  end
@@ -220,8 +220,8 @@ module Beaker
220
220
 
221
221
  describe "#delete_env_var" do
222
222
  it "deletes env var" do
223
- expect( Beaker::SedCommand ).to receive(:new).with('unix', '/key=\\/my\\/first\\/value$/d', '~/.ssh/environment')
224
- expect( Beaker::SedCommand ).to receive(:new).with('unix', 's/key=\\(.*[:;]*\\)\\/my\\/first\\/value[:;]*/key=\\1/', '~/.ssh/environment')
223
+ expect( Beaker::SedCommand ).to receive(:new).with('unix', '/KEY=\\/my\\/first\\/value$/d', '~/.ssh/environment')
224
+ expect( Beaker::SedCommand ).to receive(:new).with('unix', 's/KEY=\\(.*[:;]*\\)\\/my\\/first\\/value[:;]*/KEY=\\1/', '~/.ssh/environment')
225
225
  host.delete_env_var('key', '/my/first/value')
226
226
  end
227
227
 
@@ -553,6 +553,34 @@ module Beaker
553
553
  end
554
554
  end
555
555
 
556
+ context 'do_rsync_to' do
557
+ it 'do_rsync_to logs info and call Rsync class' do
558
+ create_files(['source'])
559
+ logger = host[:logger]
560
+ @options = { :logger => logger }
561
+ args = [ 'source', 'target', {:ignore => ['.bundle']} ]
562
+
563
+ key = host['ssh']['keys']
564
+ if key.is_a? Array
565
+ key = key.first
566
+ end
567
+
568
+ rsync_args = [ 'source', 'target', ['-az', "-e \"ssh -i #{key} -p 22 -o 'StrictHostKeyChecking no'\"", "--exclude '.bundle'"] ]
569
+
570
+ expect( host ).to receive(:to_s).and_return('host.example.org')
571
+
572
+ expect( Rsync ).to receive(:run).with( *rsync_args ).and_return(Beaker::Result.new(host, 'output!'))
573
+
574
+ host.do_rsync_to *args
575
+
576
+ expect(Rsync.host).to eq('root@host.example.org')
577
+ end
578
+
579
+ it 'throws an IOError when the file given doesn\'t exist' do
580
+ expect { host.do_rsync_to "/does/not/exist", "does/not/exist/over/there", {} }.to raise_error(IOError)
581
+ end
582
+ end
583
+
556
584
  it 'interpolates to its "name"' do
557
585
  expect( "#{host}" ).to be === 'name'
558
586
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppetlabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-23 00:00:00.000000000 Z
11
+ date: 2015-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -234,6 +234,20 @@ dependencies:
234
234
  - - ~>
235
235
  - !ruby/object:Gem::Version
236
236
  version: '2.0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: rsync
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ~>
242
+ - !ruby/object:Gem::Version
243
+ version: 1.0.9
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ~>
249
+ - !ruby/object:Gem::Version
250
+ version: 1.0.9
237
251
  - !ruby/object:Gem::Dependency
238
252
  name: rbvmomi
239
253
  requirement: !ruby/object:Gem::Requirement
@@ -268,14 +282,14 @@ dependencies:
268
282
  requirements:
269
283
  - - ~>
270
284
  - !ruby/object:Gem::Version
271
- version: '0.7'
285
+ version: '0.8'
272
286
  type: :runtime
273
287
  prerelease: false
274
288
  version_requirements: !ruby/object:Gem::Requirement
275
289
  requirements:
276
290
  - - ~>
277
291
  - !ruby/object:Gem::Version
278
- version: '0.7'
292
+ version: '0.8'
279
293
  - !ruby/object:Gem::Dependency
280
294
  name: aws-sdk
281
295
  requirement: !ruby/object:Gem::Requirement