/puppet/modules/apache/spec/spec_helper_acceptance.rb
https://gitlab.com/tmountjr/vagrant-lamp · Ruby · 82 lines · 53 code · 16 blank · 13 comment · 19 complexity · bd3dc8d42f3774c2c5cea26df7488b07 MD5 · raw file
- require 'beaker-rspec/spec_helper'
- require 'beaker-rspec/helpers/serverspec'
- require 'beaker/puppet_install_helper'
- run_puppet_install_helper
- RSpec.configure do |c|
- c.filter_run :focus => true
- c.run_all_when_everything_filtered = true
- # apache on Ubuntu 10.04 and 12.04 doesn't like IPv6 VirtualHosts, so we skip ipv6 tests on those systems
- if fact('operatingsystem') == 'Ubuntu' and (fact('operatingsystemrelease') == '10.04' or fact('operatingsystemrelease') == '12.04')
- c.filter_run_excluding :ipv6 => true
- end
- # Project root
- proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
- # Readable test descriptions
- c.formatter = :documentation
- # detect the situation where PUP-5016 is triggered and skip the idempotency tests in that case
- # also note how fact('puppetversion') is not available because of PUP-4359
- if fact('osfamily') == 'Debian' && fact('operatingsystemmajrelease') == '8' && shell('puppet --version').stdout =~ /^4\.2/
- c.filter_run_excluding :skip_pup_5016 => true
- end
- # Configure all nodes in nodeset
- c.before :suite do
- # net-tools required for netstat utility being used by be_listening
- if fact('osfamily') == 'RedHat' && fact('operatingsystemmajrelease') == '7'
- pp = <<-EOS
- package { 'net-tools': ensure => installed }
- EOS
- apply_manifest_on(agents, pp, :catch_failures => false)
- end
- if fact('osfamily') == 'Debian'
- # Make sure snake-oil certs are installed.
- shell 'apt-get install -y ssl-cert'
- end
- # Install module and dependencies
- hosts.each do |host|
- copy_module_to(host, :source => proj_root, :module_name => 'apache')
- on host, puppet('module','install','puppetlabs-stdlib')
- on host, puppet('module','install','puppetlabs-concat')
- # Required for mod_passenger tests.
- if fact('osfamily') == 'RedHat'
- on host, puppet('module','install','stahnma/epel')
- on host, puppet('module','install','puppetlabs/inifile')
- #we need epel installed, so we can get plugins, wsgi, mime ...
- pp = <<-EOS
- class { 'epel': }
- EOS
- apply_manifest_on(host, pp, :catch_failures => true)
- end
- # Required for manifest to make mod_pagespeed repository available
- if fact('osfamily') == 'Debian'
- on host, puppet('module','install','puppetlabs-apt')
- end
- # Make sure selinux is disabled so the tests work.
- on host, puppet('apply', '-e',
- %{"exec { 'setenforce 0': path => '/bin:/sbin:/usr/bin:/usr/sbin', onlyif => 'which setenforce && getenforce | grep Enforcing', }"})
- end
- end
- end
- shared_examples "a idempotent resource" do
- it 'should apply with no errors' do
- apply_manifest(pp, :catch_failures => true)
- end
- it 'should apply a second time without changes', :skip_pup_5016 do
- apply_manifest(pp, :catch_changes => true)
- end
- end