Add conditional ruby path based on pe
[puppet_vcsrepo.git] / spec / acceptance / beaker / git / basic_auth / basic_auth_checkout_http.rb
1 test_name 'C3492 - checkout with basic auth (http protocol)'
2
3 # Globals
4 repo_name = 'testrepo_checkout'
5 user      = 'foo'
6 password  = 'bar'
7 http_server_script = 'basic_auth_http_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 http server' do
20     script =<<-EOF
21     require 'webrick'
22
23     authenticate = Proc.new do |req, res|
24       WEBrick::HTTPAuth.basic_auth(req, res, '') do |user, password|
25         user == '#{user}' && password == '#{password}'
26       end
27     end
28
29     server = WEBrick::HTTPServer.new(
30     :Port               => 8000,
31     :DocumentRoot       => "#{tmpdir}",
32     :DocumentRootOptions=> {:HandlerCallback => authenticate},
33     )
34     WEBrick::Daemon.start
35     server.start
36     EOF
37     create_remote_file(host, "#{tmpdir}/#{http_server_script}", script)
38     on(host, "#{ruby} #{tmpdir}/#{http_server_script} &")
39   end
40
41   teardown do
42     on(host, "rm -fr #{tmpdir}")
43     on(host, "ps ax | grep '#{ruby} #{tmpdir}/#{http_server_script}' | grep -v grep | awk '{print \"kill -9 \" $1}' | sh")
44   end
45
46   step 'checkout with puppet using basic auth' do
47     pp = <<-EOS
48     vcsrepo { "#{tmpdir}/#{repo_name}":
49       ensure => present,
50       source => "http://#{host}:8000/testrepo.git",
51       provider => git,
52       basic_auth_username => '#{user}',
53       basic_auth_password => '#{password}',
54     }
55     EOS
56
57     apply_manifest_on(host, pp)
58     apply_manifest_on(host, pp)
59   end
60
61   step "verify checkout" do
62     on(host, "ls #{tmpdir}/#{repo_name}/.git/") do |res|
63       fail_test('checkout not found') unless res.stdout.include? "HEAD"
64     end
65   end
66
67 end