Add conditional ruby path based on pe
[puppet_vcsrepo.git] / spec / acceptance / beaker / git / basic_auth / basic_auth_checkout_https.rb
1 test_name 'C3493 - checkout with basic auth (https protocol)'
2
3 # Globals
4 repo_name = 'testrepo_checkout'
5 user      = 'foo'
6 password  = 'bar'
7 http_server_script = 'basic_auth_https_daemon.rb'
8
9 hosts.each do |host|
10   ruby = '/opt/puppet/bin/ruby' if host.is_pe? || 'ruby'
11   tmpdir = host.tmpdir('vcsrepo')
12   step 'setup - create repo' do
13     install_package(host, 'git')
14     my_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../..'))
15     scp_to(host, "#{my_root}/acceptance/files/create_git_repo.sh", tmpdir)
16     on(host, "cd #{tmpdir} && ./create_git_repo.sh")
17   end
18
19   step 'setup - start https server' do
20     script =<<-EOF
21     require 'webrick'
22     require 'webrick/https'
23
24     authenticate = Proc.new do |req, res|
25       WEBrick::HTTPAuth.basic_auth(req, res, '') do |user, password|
26         user == '#{user}' && password == '#{password}'
27       end
28     end
29
30     server = WEBrick::HTTPServer.new(
31     :Port               => 8443,
32     :DocumentRoot       => "#{tmpdir}",
33     :DocumentRootOptions=> {:HandlerCallback => authenticate},
34     :SSLEnable          => true,
35     :SSLVerifyClient    => OpenSSL::SSL::VERIFY_NONE,
36     :SSLCertificate     => OpenSSL::X509::Certificate.new(  File.open("#{tmpdir}/server.crt").read),
37     :SSLPrivateKey      => OpenSSL::PKey::RSA.new(          File.open("#{tmpdir}/server.key").read),
38     :SSLCertName        => [ [ "CN",WEBrick::Utils::getservername ] ])
39     WEBrick::Daemon.start
40     server.start
41     EOF
42     create_remote_file(host, "#{tmpdir}/#{http_server_script}", script)
43     on(host, "#{ruby} #{tmpdir}/#{http_server_script}")
44   end
45
46   teardown do
47     on(host, "rm -fr #{tmpdir}")
48     on(host, "ps ax | grep '#{ruby} #{tmpdir}/#{http_server_script}' | grep -v grep | awk '{print \"kill -9 \" $1}' | sh")
49   end
50
51   step 'checkout with puppet using basic auth' do
52     pp = <<-EOS
53     vcsrepo { "#{tmpdir}/#{repo_name}":
54       ensure => present,
55       source => "http://#{host}:8443/testrepo.git",
56       provider => git,
57       basic_auth_username => '#{user}',
58       basic_auth_password => '#{password}',
59     }
60     EOS
61
62     apply_manifest_on(host, pp)
63     apply_manifest_on(host, pp)
64   end
65
66   step "verify checkout" do
67     on(host, "ls #{tmpdir}/#{repo_name}/.git/") do |res|
68       fail_test('checkout not found') unless res.stdout.include? "HEAD"
69     end
70   end
71
72 end