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