summaryrefslogtreecommitdiff
path: root/spec/acceptance
diff options
context:
space:
mode:
authorJohn Duarte <john.duarte@puppetlabs.com>2014-05-05 14:02:51 -0700
committerJohn Duarte <john.duarte@puppetlabs.com>2014-05-18 11:38:18 -0700
commitbca6ff5c480d4aa129766ccac4cb385aef092fd9 (patch)
tree1886b8895516da002a0aeffbcea8941eac75b200 /spec/acceptance
parent4021245ebb54878c691d50efe3f9ce712734e4b6 (diff)
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.
Diffstat (limited to 'spec/acceptance')
-rwxr-xr-xspec/acceptance/files/create_git_repo.sh1
-rw-r--r--spec/acceptance/files/server.crt13
-rw-r--r--spec/acceptance/files/server.key15
-rw-r--r--spec/acceptance/git_clone_protocols_spec.rb94
4 files changed, 123 insertions, 0 deletions
diff --git a/spec/acceptance/files/create_git_repo.sh b/spec/acceptance/files/create_git_repo.sh
index 03c4f44..87b00a4 100755
--- a/spec/acceptance/files/create_git_repo.sh
+++ b/spec/acceptance/files/create_git_repo.sh
@@ -34,3 +34,4 @@ cd ..
git --git-dir=testrepo/.git config core.bare true
cp -r testrepo/.git testrepo.git
rm -rf testrepo
+touch testrepo.git/git-daemon-export-ok
diff --git a/spec/acceptance/files/server.crt b/spec/acceptance/files/server.crt
new file mode 100644
index 0000000..ef1de5a
--- /dev/null
+++ b/spec/acceptance/files/server.crt
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIICATCCAWoCCQCS3fQotV10LzANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJB
+VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
+cyBQdHkgTHRkMB4XDTE0MDQyMzIyMzEyM1oXDTE1MDQyMzIyMzEyM1owRTELMAkG
+A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
+IFdpZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAyRTv
+uX6328aQ5Auc8PI+xNaCiE0UZNYcs+xq3AEkR/Tnz0HGXdx3+PnFG7MIRSS65hXA
+VGenZk3wP4vNIe9gu+G9jtOFTJOgoOBUnJ/Hcs79Zgcmz3cAWQpqww+CZpyngUDS
+msZ5HoEbNS+qaIron3IrYCgPsy1BHFs5ze7JrtcCAwEAATANBgkqhkiG9w0BAQUF
+AAOBgQA2uLvdc1cf+nt7d8Lmu0SdaoIsCzh6DjVscCpFJKXdDjGT2Ys40iKbLRnY
+Tt98wa6uRzEhSKfx+zVi8n3PSkQHlER7jzKFXMVx8NEt2/O/APKXVizmLFjk5WcT
+FvGmmbkqX+Nj9TUTuSRZEmF776r5k8U5ABu/VarxvAzyoXAhqA==
+-----END CERTIFICATE-----
diff --git a/spec/acceptance/files/server.key b/spec/acceptance/files/server.key
new file mode 100644
index 0000000..b594f13
--- /dev/null
+++ b/spec/acceptance/files/server.key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDJFO+5frfbxpDkC5zw8j7E1oKITRRk1hyz7GrcASRH9OfPQcZd
+3Hf4+cUbswhFJLrmFcBUZ6dmTfA/i80h72C74b2O04VMk6Cg4FScn8dyzv1mBybP
+dwBZCmrDD4JmnKeBQNKaxnkegRs1L6poiuifcitgKA+zLUEcWznN7smu1wIDAQAB
+AoGAQPnD8OOyk5DZVuctwmn0wHQ0X8jQczkAs18MtKSlzZ6knUM6zy+jkM9c0vOK
+E5Wn0xtqN5v66sL6g/4vvex1DA5Q6YsXvZ48VpVliZXXK/1pdTv0qwMyHdlBhmgJ
+MhnZbyNy61QHdOTsWDR1YrELpDyFMJ9cZZD0NOnsuhd2DbECQQDq7W/zlJBZPWNR
+ab2dP+HLpm/PiEBT13SuEEskh3GEEfZlwz/cGu0Z8DHA4E3Z60KFjwgnc92GNFMg
+m0t3hHtpAkEA2x5PsDxBk9sWwdIvu57vjQLdotvAfyb+W9puIaZS1JRSVLTsUVEj
+Y0KxgsPHtcjrVoN//zGymn4ePxWOzlrQPwJBAN5thEuZY7o6dyiD9zVFYKGSqdZS
+aKV5H04Wuy6Q1pd28lWTMYlSLR8b3d+B//PN3SPbMps4BoukSvhaUG+OjdECQFzF
+KZIBAPa7pJftCH6UHPIDy5ifF5H+DWUQRt6CT8FnBrCMZR1MkAH/g65Me6pwZYsc
+Y73E6cxVJzMoSmz9r/sCQQCOhPflFCxZ23ocsuRBo9O/mMUDaLoHZXWuJ2DqAUN2
+mS6UUR/lpyc7Cmy0VOyhS8783D7MUfji5ddfVxb5tWgm
+-----END RSA PRIVATE KEY-----
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