From bca6ff5c480d4aa129766ccac4cb385aef092fd9 Mon Sep 17 00:00:00 2001 From: John Duarte Date: Mon, 5 May 2014 14:02:51 -0700 Subject: Add spec for clone protocols skeleton The git_clone_protocols_spec.rb will be used to enumerate over the available protocols for git to use to clone to disk. The initial skeleton includes the 'file://' protocol test as well as support key files to be used later. --- spec/acceptance/git_clone_protocols_spec.rb | 94 +++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 spec/acceptance/git_clone_protocols_spec.rb (limited to 'spec/acceptance/git_clone_protocols_spec.rb') diff --git a/spec/acceptance/git_clone_protocols_spec.rb b/spec/acceptance/git_clone_protocols_spec.rb new file mode 100644 index 0000000..9663889 --- /dev/null +++ b/spec/acceptance/git_clone_protocols_spec.rb @@ -0,0 +1,94 @@ +require 'spec_helper_acceptance' + +hosts.each do |host| + +describe 'clones a repo with git' do + tmpdir = host.tmpdir('vcsrepo') + before(:all) do + pp = <<-EOS + user { 'testuser': + ensure => absent, + managehome => true, + } + EOS + on(host,apply_manifest(pp, :catch_failures => true)) + on(host,apply_manifest("file {'#{tmpdir}': ensure => absent}", :catch_failures => true)) + # {{{ setup + # install git + install_package(host, 'git') + + # create git repo + my_root = File.expand_path(File.join(File.dirname(__FILE__), '..')) + #shell("mkdir -p #{tmpdir}") # win test + scp_to(host, "#{my_root}/acceptance/files/create_git_repo.sh", tmpdir) + host.execute("cd #{tmpdir} && ./create_git_repo.sh") + + # copy ssl keys + scp_to(host, "#{my_root}/acceptance/files/server.crt", tmpdir) + scp_to(host, "#{my_root}/acceptance/files/server.key", tmpdir) + + # hack for non-vagrant deploys (deleteme) + on(host,apply_manifest("user{'vagrant': ensure => present, }")) + + # create user + pp = <<-EOS + user { 'testuser': + ensure => present, + managehome => true, + } + EOS + on(host,apply_manifest(pp, :catch_failures => true)) + + # create ssh keys + host.execute('mkdir -p /home/testuser/.ssh') + host.execute('ssh-keygen -q -t rsa -f /home/testuser/.ssh/id_rsa -N ""') + + # copy public key to authorized_keys + host.execute('cat /home/testuser/.ssh/id_rsa.pub > /home/testuser/.ssh/authorized_keys') + host.execute('echo -e "Host localhost\n\tStrictHostKeyChecking no\n" > /home/testuser/.ssh/config') + host.execute('chown -R testuser:testuser /home/testuser/.ssh') + # }}} + end + + after(:all) do + # {{{ teardown + pp = <<-EOS + user { 'testuser': + ensure => absent, + managehome => true, + } + EOS + on(host,apply_manifest(pp, :catch_failures => true)) + on(host,apply_manifest("file {'#{tmpdir}': ensure => absent}", :catch_failures => true)) + # }}} + end + + after(:each) do + on(host,apply_manifest("file {'#{tmpdir}/testrepo': ensure => absent}", :catch_failures => true)) + end + + #--------------- TESTS ----------------------# + + context 'using local protocol (file URL)' do + it 'should have HEAD pointing to master' do + pp = <<-EOS + vcsrepo { "#{tmpdir}/testrepo": + ensure => present, + provider => git, + source => "file://#{tmpdir}/testrepo.git", + } + EOS + + # Run it twice and test for idempotency + on(host,apply_manifest(pp, :catch_failures => true)) + on(host,apply_manifest(pp, :catch_changes => true)) + end + + describe file("#{tmpdir}/testrepo/.git/HEAD") do + it { should contain 'ref: refs/heads/master' } + end + + end + +end +end -- cgit v1.2.3