Page MenuHomeSoftware Heritage

No OneTemporary

diff --git a/lib/puppet/parser/functions/enclose_ipv6.rb b/lib/puppet/parser/functions/enclose_ipv6.rb
index 968bd723..80ffc3ac 100644
--- a/lib/puppet/parser/functions/enclose_ipv6.rb
+++ b/lib/puppet/parser/functions/enclose_ipv6.rb
@@ -1,43 +1,45 @@
#
# enclose_ipv6.rb
#
module Puppet::Parser::Functions
newfunction(:enclose_ipv6, :type => :rvalue, :doc => <<-EOS
Takes an array of ip addresses and encloses the ipv6 addresses with square brackets.
EOS
) do |arguments|
require 'ipaddr'
rescuable_exceptions = [ ArgumentError ]
if defined?(IPAddr::InvalidAddressError)
rescuable_exceptions << IPAddr::InvalidAddressError
end
if (arguments.size != 1) then
raise(Puppet::ParseError, "enclose_ipv6(): Wrong number of arguments "+
"given #{arguments.size} for 1")
end
unless arguments[0].is_a?(String) or arguments[0].is_a?(Array) then
raise(Puppet::ParseError, "enclose_ipv6(): Wrong argument type "+
"given #{arguments[0].class} expected String or Array")
end
input = [arguments[0]].flatten.compact
result = []
input.each do |val|
- begin
- ip = IPAddr.new(val)
- rescue *rescuable_exceptions
- raise(Puppet::ParseError, "enclose_ipv6(): Wrong argument "+
- "given #{val} is not an ip address.")
+ unless val == '*'
+ begin
+ ip = IPAddr.new(val)
+ rescue *rescuable_exceptions
+ raise(Puppet::ParseError, "enclose_ipv6(): Wrong argument "+
+ "given #{val} is not an ip address.")
+ end
+ val = "[#{ip.to_s}]" if ip.ipv6?
end
- val = "[#{ip.to_s}]" if ip.ipv6?
- result = [result,val]
+ result << val
end
- return result.flatten.compact
+ return result.uniq
end
end
diff --git a/spec/defines/vhost_spec.rb b/spec/defines/vhost_spec.rb
index 40d93a0e..9a302760 100644
--- a/spec/defines/vhost_spec.rb
+++ b/spec/defines/vhost_spec.rb
@@ -1,1118 +1,1151 @@
require 'spec_helper'
describe 'apache::vhost', :type => :define do
let :pre_condition do
'class { "apache": default_vhost => false, default_mods => false, vhost_enable_dir => "/etc/apache2/sites-enabled"}'
end
let :title do
'rspec.example.com'
end
let :default_params do
{
:docroot => '/rspec/docroot',
:port => '84',
}
end
describe 'os-dependent items' do
context "on RedHat based systems" do
let :default_facts do
{
:osfamily => 'RedHat',
:operatingsystemrelease => '6',
:concat_basedir => '/dne',
:operatingsystem => 'RedHat',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:is_pe => false,
}
end
let :params do default_params end
let :facts do default_facts end
it { is_expected.to contain_class("apache") }
it { is_expected.to contain_class("apache::params") }
end
context "on Debian based systems" do
let :default_facts do
{
:osfamily => 'Debian',
:operatingsystemrelease => '6',
:concat_basedir => '/dne',
:lsbdistcodename => 'squeeze',
:operatingsystem => 'Debian',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:is_pe => false,
}
end
let :params do default_params end
let :facts do default_facts end
it { is_expected.to contain_class("apache") }
it { is_expected.to contain_class("apache::params") }
it { is_expected.to contain_file("25-rspec.example.com.conf").with(
:ensure => 'present',
:path => '/etc/apache2/sites-available/25-rspec.example.com.conf'
) }
it { is_expected.to contain_file("25-rspec.example.com.conf symlink").with(
:ensure => 'link',
:path => '/etc/apache2/sites-enabled/25-rspec.example.com.conf',
:target => '/etc/apache2/sites-available/25-rspec.example.com.conf'
) }
end
context "on FreeBSD systems" do
let :default_facts do
{
:osfamily => 'FreeBSD',
:operatingsystemrelease => '9',
:concat_basedir => '/dne',
:operatingsystem => 'FreeBSD',
:id => 'root',
:kernel => 'FreeBSD',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:is_pe => false,
}
end
let :params do default_params end
let :facts do default_facts end
it { is_expected.to contain_class("apache") }
it { is_expected.to contain_class("apache::params") }
it { is_expected.to contain_file("25-rspec.example.com.conf").with(
:ensure => 'present',
:path => '/usr/local/etc/apache24/Vhosts/25-rspec.example.com.conf'
) }
end
context "on Gentoo systems" do
let :default_facts do
{
:osfamily => 'Gentoo',
:operatingsystem => 'Gentoo',
:operatingsystemrelease => '3.16.1-gentoo',
:concat_basedir => '/dne',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
:is_pe => false,
}
end
let :params do default_params end
let :facts do default_facts end
it { is_expected.to contain_class("apache") }
it { is_expected.to contain_class("apache::params") }
it { is_expected.to contain_file("25-rspec.example.com.conf").with(
:ensure => 'present',
:path => '/etc/apache2/vhosts.d/25-rspec.example.com.conf'
) }
end
end
describe 'os-independent items' do
let :facts do
{
:osfamily => 'Debian',
:operatingsystemrelease => '6',
:concat_basedir => '/dne',
:lsbdistcodename => 'squeeze',
:operatingsystem => 'Debian',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:is_pe => false,
}
end
describe 'basic assumptions' do
let :params do default_params end
it { is_expected.to contain_class("apache") }
it { is_expected.to contain_class("apache::params") }
it { is_expected.to contain_apache__listen(params[:port]) }
it { is_expected.to contain_apache__namevirtualhost("*:#{params[:port]}") }
end
context 'set everything!' do
let :params do
{
'docroot' => '/var/www/foo',
'manage_docroot' => false,
'virtual_docroot' => true,
'port' => '8080',
'ip' => '127.0.0.1',
'ip_based' => true,
'add_listen' => false,
'docroot_owner' => 'user',
'docroot_group' => 'wheel',
'docroot_mode' => '0664',
'serveradmin' => 'foo@localhost',
'ssl' => true,
'ssl_cert' => '/ssl/cert',
'ssl_key' => '/ssl/key',
'ssl_chain' => '/ssl/chain',
'ssl_crl_path' => '/ssl/crl',
'ssl_crl' => 'foo.crl',
'ssl_certs_dir' => '/ssl/certs',
'ssl_protocol' => 'SSLv2',
'ssl_cipher' => 'HIGH',
'ssl_honorcipherorder' => 'Off',
'ssl_verify_client' => 'optional',
'ssl_verify_depth' => '3',
'ssl_options' => '+ExportCertData',
'ssl_openssl_conf_cmd' => 'DHParameters "foo.pem"',
'ssl_proxy_verify' => 'require',
'ssl_proxy_check_peer_cn' => 'on',
'ssl_proxy_check_peer_name' => 'on',
'ssl_proxyengine' => true,
'priority' => '30',
'default_vhost' => true,
'servername' => 'example.com',
'serveraliases' => ['test-example.com'],
'options' => ['MultiView'],
'override' => ['All'],
'directoryindex' => 'index.html',
'vhost_name' => 'test',
'logroot' => '/var/www/logs',
'logroot_ensure' => 'directory',
'logroot_mode' => '0600',
'log_level' => 'crit',
'access_log' => false,
'access_log_file' => 'httpd_access_log',
'access_log_syslog' => true,
'access_log_format' => '%h %l %u %t \"%r\" %>s %b',
'access_log_env_var' => '',
'aliases' => '/image',
'directories' => [
{
'path' => '/var/www/files',
'provider' => 'files',
'require' => [ 'valid-user', 'all denied', ],
},
{
'path' => '/var/www/files',
'provider' => 'files',
'require' => 'all granted',
},
{
'path' => '*',
'provider' => 'proxy',
},
{ 'path' => '/var/www/files/indexed_directory',
'directoryindex' => 'disabled',
'options' => ['Indexes','FollowSymLinks','MultiViews'],
'index_options' => ['FancyIndexing'],
'index_style_sheet' => '/styles/style.css',
},
{ 'path' => '/var/www/files/output_filtered',
'set_output_filter' => 'output_filter',
},
],
'error_log' => false,
'error_log_file' => 'httpd_error_log',
'error_log_syslog' => true,
'error_documents' => 'true',
'fallbackresource' => '/index.php',
'scriptalias' => '/usr/lib/cgi-bin',
'scriptaliases' => [
{
'alias' => '/myscript',
'path' => '/usr/share/myscript',
},
{
'aliasmatch' => '^/foo(.*)',
'path' => '/usr/share/fooscripts$1',
},
],
'proxy_dest' => '/',
'proxy_pass' => [
{
'path' => '/a',
'url' => 'http://backend-a/',
'keywords' => ['noquery', 'interpolate'],
'reverse_cookies' => [
{
'path' => '/a',
'url' => 'http://backend-a/',
},
{
'domain' => 'foo',
'url' => 'http://foo',
}
],
'params' => {
'retry' => '0',
'timeout' => '5'
},
'options' => {
'Require' =>'valid-user',
'AuthType' =>'Kerberos',
'AuthName' =>'"Kerberos Login"'
},
'setenv' => ['proxy-nokeepalive 1','force-proxy-request-1.0 1'],
}
],
'proxy_pass_match' => [
{
'path' => '/a',
'url' => 'http://backend-a/',
'keywords' => ['noquery', 'interpolate'],
'params' => {
'retry' => '0',
'timeout' => '5'
},
'setenv' => ['proxy-nokeepalive 1','force-proxy-request-1.0 1'],
}
],
'suphp_addhandler' => 'foo',
'suphp_engine' => 'on',
'suphp_configpath' => '/var/www/html',
'php_admin_flags' => ['foo', 'bar'],
'php_admin_values' => ['true', 'false'],
'no_proxy_uris' => '/foo',
'no_proxy_uris_match' => '/foomatch',
'proxy_preserve_host' => true,
'proxy_error_override' => true,
'redirect_source' => '/bar',
'redirect_dest' => '/',
'redirect_status' => 'temp',
'redirectmatch_status' => ['404'],
'redirectmatch_regexp' => ['\.git$'],
'redirectmatch_dest' => ['http://www.example.com'],
'rack_base_uris' => ['/rackapp1'],
'passenger_base_uris' => ['/passengerapp1'],
'headers' => 'Set X-Robots-Tag "noindex, noarchive, nosnippet"',
'request_headers' => ['append MirrorID "mirror 12"'],
'rewrites' => [
{
'rewrite_rule' => ['^index\.html$ welcome.html']
}
],
'filters' => [
'FilterDeclare COMPRESS',
'FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html',
'FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css',
'FilterProvider COMPRESS DEFLATE resp=Content-Type $text/plain',
'FilterProvider COMPRESS DEFLATE resp=Content-Type $text/xml',
'FilterChain COMPRESS',
'FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no',
],
'rewrite_base' => '/',
'rewrite_rule' => '^index\.html$ welcome.html',
'rewrite_cond' => '%{HTTP_USER_AGENT} ^MSIE',
'setenv' => ['FOO=/bin/true'],
'setenvif' => 'Request_URI "\.gif$" object_is_image=gif',
'block' => 'scm',
'wsgi_application_group' => '%{GLOBAL}',
'wsgi_daemon_process' => 'wsgi',
'wsgi_daemon_process_options' => {
'processes' => '2',
'threads' => '15',
'display-name' => '%{GROUP}',
},
'wsgi_import_script' => '/var/www/demo.wsgi',
'wsgi_import_script_options' => {
'process-group' => 'wsgi',
'application-group' => '%{GLOBAL}'
},
'wsgi_process_group' => 'wsgi',
'wsgi_script_aliases' => {
'/' => '/var/www/demo.wsgi'
},
'wsgi_pass_authorization' => 'On',
'custom_fragment' => '#custom string',
'itk' => {
'user' => 'someuser',
'group' => 'somegroup'
},
'wsgi_chunked_request' => 'On',
'action' => 'foo',
'fastcgi_server' => 'localhost',
'fastcgi_socket' => '/tmp/fastcgi.socket',
'fastcgi_dir' => '/tmp',
'additional_includes' => '/custom/path/includes',
'apache_version' => '2.4',
'use_optional_includes' => true,
'suexec_user_group' => 'root root',
'allow_encoded_slashes' => 'nodecode',
'passenger_app_root' => '/usr/share/myapp',
'passenger_app_env' => 'test',
'passenger_ruby' => '/usr/bin/ruby1.9.1',
'passenger_min_instances' => '1',
'passenger_start_timeout' => '600',
'passenger_pre_start' => 'http://localhost/myapp',
'add_default_charset' => 'UTF-8',
'auth_kerb' => true,
'krb_method_negotiate' => 'off',
'krb_method_k5passwd' => 'off',
'krb_authoritative' => 'off',
'krb_auth_realms' => ['EXAMPLE.ORG','EXAMPLE.NET'],
'krb_5keytab' => '/tmp/keytab5',
'krb_local_user_mapping' => 'off'
}
end
let :facts do
{
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:concat_basedir => '/dne',
:operatingsystem => 'RedHat',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:kernelversion => '3.6.2',
:is_pe => false,
}
end
it { is_expected.to compile }
it { is_expected.to_not contain_file('/var/www/foo') }
it { is_expected.to contain_class('apache::mod::ssl') }
it { is_expected.to contain_file('ssl.conf').with(
:content => /^\s+SSLHonorCipherOrder On$/ ) }
it { is_expected.to contain_file('ssl.conf').with(
:content => /^\s+SSLPassPhraseDialog builtin$/ ) }
it { is_expected.to contain_file('ssl.conf').with(
:content => /^\s+SSLSessionCacheTimeout 300$/ ) }
it { is_expected.to contain_class('apache::mod::mime') }
it { is_expected.to contain_class('apache::mod::vhost_alias') }
it { is_expected.to contain_class('apache::mod::wsgi') }
it { is_expected.to contain_class('apache::mod::suexec') }
it { is_expected.to contain_class('apache::mod::passenger') }
it { is_expected.to contain_file('/var/www/logs').with({
'ensure' => 'directory',
'mode' => '0600',
})
}
it { is_expected.to contain_class('apache::mod::rewrite') }
it { is_expected.to contain_class('apache::mod::alias') }
it { is_expected.to contain_class('apache::mod::proxy') }
it { is_expected.to contain_class('apache::mod::proxy_http') }
it { is_expected.to contain_class('apache::mod::passenger') }
it { is_expected.to contain_class('apache::mod::passenger') }
it { is_expected.to contain_class('apache::mod::fastcgi') }
it { is_expected.to contain_class('apache::mod::headers') }
it { is_expected.to contain_class('apache::mod::filter') }
it { is_expected.to contain_class('apache::mod::setenvif') }
it { is_expected.to contain_concat('30-rspec.example.com.conf').with({
'owner' => 'root',
'mode' => '0644',
'require' => 'Package[httpd]',
'notify' => 'Class[Apache::Service]',
})
}
it { is_expected.to contain_file('30-rspec.example.com.conf symlink').with({
'ensure' => 'link',
'path' => '/etc/apache2/sites-enabled/30-rspec.example.com.conf',
})
}
it { is_expected.to contain_concat__fragment('rspec.example.com-apache-header') }
it { is_expected.to contain_concat__fragment('rspec.example.com-docroot') }
it { is_expected.to contain_concat__fragment('rspec.example.com-aliases') }
it { is_expected.to contain_concat__fragment('rspec.example.com-itk') }
it { is_expected.to contain_concat__fragment('rspec.example.com-fallbackresource') }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories') }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+<Proxy "\*">$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Require valid-user$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Require all denied$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Require all granted$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Options\sIndexes\sFollowSymLinks\sMultiViews$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+IndexOptions\sFancyIndexing$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+IndexStyleSheet\s'\/styles\/style\.css'$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+DirectoryIndex\sdisabled$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+SetOutputFilter\soutput_filter$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-additional_includes') }
it { is_expected.to contain_concat__fragment('rspec.example.com-logging') }
it { is_expected.to contain_concat__fragment('rspec.example.com-serversignature') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-access_log') }
it { is_expected.to contain_concat__fragment('rspec.example.com-action') }
it { is_expected.to contain_concat__fragment('rspec.example.com-block') }
it { is_expected.to contain_concat__fragment('rspec.example.com-error_document') }
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
/retry=0/) }
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
/timeout=5/) }
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
/SetEnv force-proxy-request-1.0 1/) }
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
/SetEnv proxy-nokeepalive 1/) }
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
/noquery interpolate/) }
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
/ProxyPassReverseCookiePath\s+\/a\s+http:\/\//) }
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
/ProxyPassReverseCookieDomain\s+foo\s+http:\/\/foo/) }
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
/Require valid-user/) }
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
/AuthType Kerberos/) }
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
/AuthName "Kerberos Login"/) }
it { is_expected.to contain_concat__fragment('rspec.example.com-rack') }
it { is_expected.to contain_concat__fragment('rspec.example.com-redirect') }
it { is_expected.to contain_concat__fragment('rspec.example.com-rewrite') }
it { is_expected.to contain_concat__fragment('rspec.example.com-scriptalias') }
it { is_expected.to contain_concat__fragment('rspec.example.com-serveralias') }
it { is_expected.to contain_concat__fragment('rspec.example.com-setenv') }
it { is_expected.to contain_concat__fragment('rspec.example.com-ssl') }
it { is_expected.to contain_concat__fragment('rspec.example.com-ssl').with(
:content => /^\s+SSLOpenSSLConfCmd\s+DHParameters "foo.pem"$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-sslproxy') }
it { is_expected.to contain_concat__fragment('rspec.example.com-sslproxy').with(
:content => /^\s+SSLProxyEngine On$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-sslproxy').with(
:content => /^\s+SSLProxyCheckPeerCN\s+on$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-sslproxy').with(
:content => /^\s+SSLProxyCheckPeerName\s+on$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-suphp') }
it { is_expected.to contain_concat__fragment('rspec.example.com-php_admin') }
it { is_expected.to contain_concat__fragment('rspec.example.com-header') }
it { is_expected.to contain_concat__fragment('rspec.example.com-filters').with(
:content => /^\s+FilterDeclare COMPRESS$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-requestheader') }
it { is_expected.to contain_concat__fragment('rspec.example.com-wsgi') }
it { is_expected.to contain_concat__fragment('rspec.example.com-custom_fragment') }
it { is_expected.to contain_concat__fragment('rspec.example.com-fastcgi') }
it { is_expected.to contain_concat__fragment('rspec.example.com-suexec') }
it { is_expected.to contain_concat__fragment('rspec.example.com-allow_encoded_slashes') }
it { is_expected.to contain_concat__fragment('rspec.example.com-passenger') }
it { is_expected.to contain_concat__fragment('rspec.example.com-charsets') }
it { is_expected.to contain_concat__fragment('rspec.example.com-file_footer') }
it { is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
:content => /^\s+KrbMethodNegotiate\soff$/)}
it { is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
:content => /^\s+KrbAuthoritative\soff$/)}
it { is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
:content => /^\s+KrbAuthRealms\sEXAMPLE.ORG\sEXAMPLE.NET$/)}
it { is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
:content => /^\s+Krb5Keytab\s\/tmp\/keytab5$/)}
it { is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
:content => /^\s+KrbLocalUserMapping\soff$/)}
it { is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
:content => /^\s+KrbServiceName\sHTTP$/)}
it { is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
:content => /^\s+KrbSaveCredentials\soff$/)}
it { is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
:content => /^\s+KrbVerifyKDC\son$/)}
end
context 'vhost with multiple ip addresses' do
let :params do
{
'port' => '80',
'ip' => ['127.0.0.1','::1'],
'ip_based' => true,
'servername' => 'example.com',
'docroot' => '/var/www/html',
'add_listen' => true,
'ensure' => 'present'
}
end
let :facts do
{
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:concat_basedir => '/dne',
:operatingsystem => 'RedHat',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:kernelversion => '3.6.2',
:is_pe => false,
}
end
it { is_expected.to compile }
it { is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
:content => /[.\/m]*<VirtualHost 127.0.0.1:80 \[::1\]:80>[.\/m]*$/ ) }
it { is_expected.to contain_concat__fragment('Listen 127.0.0.1:80') }
it { is_expected.to contain_concat__fragment('Listen [::1]:80') }
it { is_expected.to_not contain_concat__fragment('NameVirtualHost 127.0.0.1:80') }
it { is_expected.to_not contain_concat__fragment('NameVirtualHost [::1]:80') }
end
context 'vhost with ipv6 address' do
let :params do
{
'port' => '80',
'ip' => '::1',
'ip_based' => true,
'servername' => 'example.com',
'docroot' => '/var/www/html',
'add_listen' => true,
'ensure' => 'present'
}
end
let :facts do
{
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:concat_basedir => '/dne',
:operatingsystem => 'RedHat',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:kernelversion => '3.6.2',
:is_pe => false,
}
end
it { is_expected.to compile }
it { is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
:content => /[.\/m]*<VirtualHost \[::1\]:80>[.\/m]*$/ ) }
it { is_expected.to contain_concat__fragment('Listen [::1]:80') }
it { is_expected.to_not contain_concat__fragment('NameVirtualHost [::1]:80') }
end
+ context 'vhost with wildcard ip address' do
+ let :params do
+ {
+ 'port' => '80',
+ 'ip' => '*',
+ 'ip_based' => true,
+ 'servername' => 'example.com',
+ 'docroot' => '/var/www/html',
+ 'add_listen' => true,
+ 'ensure' => 'present'
+ }
+ end
+ let :facts do
+ {
+ :osfamily => 'RedHat',
+ :operatingsystemrelease => '7',
+ :concat_basedir => '/dne',
+ :operatingsystem => 'RedHat',
+ :id => 'root',
+ :kernel => 'Linux',
+ :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ :kernelversion => '3.6.2',
+ :is_pe => false,
+ }
+ end
+
+ it { is_expected.to compile }
+ it { is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
+ :content => /[.\/m]*<VirtualHost \*:80>[.\/m]*$/ ) }
+ it { is_expected.to contain_concat__fragment('Listen *:80') }
+ it { is_expected.to_not contain_concat__fragment('NameVirtualHost *:80') }
+ end
+
context 'set only aliases' do
let :params do
{
'docroot' => '/rspec/docroot',
'aliases' => [
{
'alias' => '/alias',
'path' => '/rspec/docroot',
},
]
}
end
it { is_expected.to contain_class('apache::mod::alias')}
end
context 'proxy_pass_match' do
let :params do
{
'docroot' => '/rspec/docroot',
'proxy_pass_match' => [
{
'path' => '.*',
'url' => 'http://backend-a/',
'params' => { 'timeout' => 300 },
}
],
}
end
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
/ProxyPassMatch .* http:\/\/backend-a\/ timeout=300/).with_content(/## Proxy rules/) }
end
context 'proxy_dest_match' do
let :params do
{
'docroot' => '/rspec/docroot',
'proxy_dest_match' => '/'
}
end
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(/## Proxy rules/) }
end
context 'not everything can be set together...' do
let :params do
{
'access_log_pipe' => '/dev/null',
'error_log_pipe' => '/dev/null',
'docroot' => '/var/www/foo',
'ensure' => 'absent',
'manage_docroot' => true,
'logroot' => '/tmp/logroot',
'logroot_ensure' => 'absent',
'directories' => [
{
'path' => '/var/www/files',
'provider' => 'files',
'allow' => [ 'from 127.0.0.1', 'from 127.0.0.2', ],
'deny' => [ 'from 127.0.0.3', 'from 127.0.0.4', ],
'satisfy' => 'any',
},
{
'path' => '/var/www/foo',
'provider' => 'files',
'allow' => 'from 127.0.0.5',
'deny' => 'from all',
'order' => 'deny,allow',
},
],
}
end
let :facts do
{
:osfamily => 'RedHat',
:operatingsystemrelease => '6',
:concat_basedir => '/dne',
:operatingsystem => 'RedHat',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:kernelversion => '3.6.2',
:is_pe => false,
}
end
it { is_expected.to compile }
it { is_expected.to_not contain_class('apache::mod::ssl') }
it { is_expected.to_not contain_class('apache::mod::mime') }
it { is_expected.to_not contain_class('apache::mod::vhost_alias') }
it { is_expected.to_not contain_class('apache::mod::wsgi') }
it { is_expected.to_not contain_class('apache::mod::passenger') }
it { is_expected.to_not contain_class('apache::mod::suexec') }
it { is_expected.to_not contain_class('apache::mod::rewrite') }
it { is_expected.to_not contain_class('apache::mod::alias') }
it { is_expected.to_not contain_class('apache::mod::proxy') }
it { is_expected.to_not contain_class('apache::mod::proxy_http') }
it { is_expected.to_not contain_class('apache::mod::passenger') }
it { is_expected.to_not contain_class('apache::mod::headers') }
it { is_expected.to contain_file('/var/www/foo') }
it { is_expected.to contain_file('/tmp/logroot').with({
'ensure' => 'absent',
})
}
it { is_expected.to contain_concat('25-rspec.example.com.conf').with({
'ensure' => 'absent',
})
}
it { is_expected.to contain_concat__fragment('rspec.example.com-apache-header') }
it { is_expected.to contain_concat__fragment('rspec.example.com-docroot') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-aliases') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-itk') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-fallbackresource') }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories') }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Allow from 127\.0\.0\.1$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Allow from 127\.0\.0\.2$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Allow from 127\.0\.0\.5$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Deny from 127\.0\.0\.3$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Deny from 127\.0\.0\.4$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Deny from all$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Satisfy any$/ ) }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Order deny,allow$/ ) }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-additional_includes') }
it { is_expected.to contain_concat__fragment('rspec.example.com-logging') }
it { is_expected.to contain_concat__fragment('rspec.example.com-serversignature') }
it { is_expected.to contain_concat__fragment('rspec.example.com-access_log') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-action') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-block') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-error_document') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-proxy') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-rack') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-redirect') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-rewrite') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-scriptalias') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-serveralias') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-setenv') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-ssl') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-sslproxy') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-suphp') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-php_admin') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-header') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-requestheader') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-wsgi') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-custom_fragment') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-fastcgi') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-suexec') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-charsets') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-limits') }
it { is_expected.to contain_concat__fragment('rspec.example.com-file_footer') }
end
context 'when not setting nor managing the docroot' do
let :params do
{
'docroot' => false,
'manage_docroot' => false,
}
end
it { is_expected.to compile }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-docroot') }
end
context 'ssl_proxyengine without ssl' do
let :params do
{
'docroot' => '/rspec/docroot',
'ssl' => false,
'ssl_proxyengine' => true,
}
end
it { is_expected.to compile }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-ssl') }
it { is_expected.to contain_concat__fragment('rspec.example.com-sslproxy') }
end
end
describe 'access logs' do
let :facts do
{
:osfamily => 'RedHat',
:operatingsystemrelease => '6',
:concat_basedir => '/dne',
:operatingsystem => 'RedHat',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:is_pe => false,
}
end
context 'single log file' do
let(:params) do
{
'docroot' => '/rspec/docroot',
'access_log_file' => 'my_log_file',
}
end
it { is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
:content => /^\s+CustomLog.*my_log_file" combined\s*$/
)}
end
context 'single log file with environment' do
let(:params) do
{
'docroot' => '/rspec/docroot',
'access_log_file' => 'my_log_file',
'access_log_env_var' => 'prod'
}
end
it { is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
:content => /^\s+CustomLog.*my_log_file" combined\s+env=prod$/
)}
end
context 'multiple log files' do
let(:params) do
{
'docroot' => '/rspec/docroot',
'access_logs' => [
{ 'file' => '/tmp/log1', 'env' => 'dev' },
{ 'file' => 'log2' },
{ 'syslog' => 'syslog', 'format' => '%h %l' }
],
}
end
it { is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
:content => /^\s+CustomLog "\/tmp\/log1"\s+combined\s+env=dev$/
)}
it { is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
:content => /^\s+CustomLog "\/var\/log\/httpd\/log2"\s+combined\s*$/
)}
it { is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
:content => /^\s+CustomLog "syslog" "%h %l"\s*$/
)}
end
end # access logs
describe 'validation' do
let :default_facts do
{
:osfamily => 'RedHat',
:operatingsystemrelease => '6',
:concat_basedir => '/dne',
:operatingsystem => 'RedHat',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:is_pe => false,
}
end
context 'bad ensure' do
let :params do
{
'docroot' => '/rspec/docroot',
'ensure' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad suphp_engine' do
let :params do
{
'docroot' => '/rspec/docroot',
'suphp_engine' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad ip_based' do
let :params do
{
'docroot' => '/rspec/docroot',
'ip_based' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad access_log' do
let :params do
{
'docroot' => '/rspec/docroot',
'access_log' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad error_log' do
let :params do
{
'docroot' => '/rspec/docroot',
'error_log' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad_ssl' do
let :params do
{
'docroot' => '/rspec/docroot',
'ssl' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad default_vhost' do
let :params do
{
'docroot' => '/rspec/docroot',
'default_vhost' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad ssl_proxyengine' do
let :params do
{
'docroot' => '/rspec/docroot',
'ssl_proxyengine' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad rewrites' do
let :params do
{
'docroot' => '/rspec/docroot',
'rewrites' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad rewrites 2' do
let :params do
{
'docroot' => '/rspec/docroot',
'rewrites' => ['bogus'],
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'empty rewrites' do
let :params do
{
'docroot' => '/rspec/docroot',
'rewrites' => [],
}
end
let :facts do default_facts end
it { is_expected.to compile }
end
context 'bad suexec_user_group' do
let :params do
{
'docroot' => '/rspec/docroot',
'suexec_user_group' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad wsgi_script_alias' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_script_alias' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad wsgi_daemon_process_options' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_daemon_process_options' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad wsgi_import_script_alias' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_import_script_alias' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad itk' do
let :params do
{
'docroot' => '/rspec/docroot',
'itk' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad logroot_ensure' do
let :params do
{
'docroot' => '/rspec/docroot',
'log_level' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad log_level' do
let :params do
{
'docroot' => '/rspec/docroot',
'log_level' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'access_log_file and access_log_pipe' do
let :params do
{
'docroot' => '/rspec/docroot',
'access_log_file' => 'bogus',
'access_log_pipe' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'error_log_file and error_log_pipe' do
let :params do
{
'docroot' => '/rspec/docroot',
'error_log_file' => 'bogus',
'error_log_pipe' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad fallbackresource' do
let :params do
{
'docroot' => '/rspec/docroot',
'fallbackresource' => 'bogus',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad custom_fragment' do
let :params do
{
'docroot' => '/rspec/docroot',
'custom_fragment' => true,
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'bad access_logs' do
let :params do
{
'docroot' => '/rspec/docroot',
'access_logs' => '/var/log/somewhere',
}
end
let :facts do default_facts end
it { expect { is_expected.to compile }.to raise_error }
end
context 'default of require all granted' do
let :params do
{
'docroot' => '/var/www/foo',
'directories' => [
{
'path' => '/var/www/foo/files',
'provider' => 'files',
},
],
}
end
let :facts do
{
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:concat_basedir => '/dne',
:operatingsystem => 'RedHat',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:kernelversion => '3.19.2',
:is_pe => false,
}
end
it { is_expected.to compile }
it { is_expected.to contain_file('25-rspec.example.com.conf') }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories') }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Require all granted$/ ) }
end
context 'require unmanaged' do
let :params do
{
'docroot' => '/var/www/foo',
'directories' => [
{
'path' => '/var/www/foo',
'require' => 'unmanaged',
},
],
}
end
let :facts do
{
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:concat_basedir => '/dne',
:operatingsystem => 'RedHat',
:id => 'root',
:kernel => 'Linux',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:kernelversion => '3.19.2',
:is_pe => false,
}
end
it { is_expected.to compile }
it { is_expected.to contain_file('25-rspec.example.com.conf') }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories') }
it { is_expected.to_not contain_concat__fragment('rspec.example.com-directories').with(
:content => /^\s+Require all granted$/ )
}
end
end
end
diff --git a/spec/unit/puppet/parser/functions/enclose_ipv6_spec.rb b/spec/unit/puppet/parser/functions/enclose_ipv6_spec.rb
index 508f62ae..b162127d 100644
--- a/spec/unit/puppet/parser/functions/enclose_ipv6_spec.rb
+++ b/spec/unit/puppet/parser/functions/enclose_ipv6_spec.rb
@@ -1,65 +1,69 @@
#! /usr/bin/env ruby -S rspec
require 'spec_helper'
describe "the enclose_ipv6 function" do
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
it "should exist" do
expect(Puppet::Parser::Functions.function("enclose_ipv6")).to eq("function_enclose_ipv6")
end
it "should raise a ParseError if there is less than 1 arguments" do
expect { scope.function_enclose_ipv6([]) }.to( raise_error(Puppet::ParseError) )
end
it "should raise a ParseError if there is more than 1 arguments" do
expect { scope.function_enclose_ipv6(['argument1','argument2']) }.to( raise_error(Puppet::ParseError) )
end
it "should raise a ParseError when given garbage" do
expect { scope.function_enclose_ipv6(['garbage']) }.to( raise_error(Puppet::ParseError) )
end
it "should raise a ParseError when given something else than a string or an array" do
expect { scope.function_enclose_ipv6([['1' => '127.0.0.1']]) }.to( raise_error(Puppet::ParseError) )
end
it "should not raise a ParseError when given a single ip string" do
expect { scope.function_enclose_ipv6(['127.0.0.1']) }.to_not raise_error
end
+ it "should not raise a ParseError when given * as ip string" do
+ expect { scope.function_enclose_ipv6(['*']) }.to_not raise_error
+ end
+
it "should not raise a ParseError when given an array of ip strings" do
expect { scope.function_enclose_ipv6([['127.0.0.1','fe80::1']]) }.to_not raise_error
end
it "should not raise a ParseError when given differently notations of ip addresses" do
expect { scope.function_enclose_ipv6([['127.0.0.1','fe80::1','[fe80::1]']]) }.to_not raise_error
end
it "should raise a ParseError when given a wrong ipv4 address" do
expect { scope.function_enclose_ipv6(['127..0.0.1']) }.to( raise_error(Puppet::ParseError) )
end
it "should raise a ParseError when given a ipv4 address with square brackets" do
expect { scope.function_enclose_ipv6(['[127.0.0.1]']) }.to( raise_error(Puppet::ParseError) )
end
it "should raise a ParseError when given a wrong ipv6 address" do
expect { scope.function_enclose_ipv6(['fe80:::1']) }.to( raise_error(Puppet::ParseError) )
end
it "should embrace ipv6 adresses within an array of ip addresses" do
- result = scope.function_enclose_ipv6([['127.0.0.1','fe80::1','[fe80::1]']])
- expect(result).to(eq(['127.0.0.1','[fe80::1]','[fe80::1]']))
+ result = scope.function_enclose_ipv6([['127.0.0.1','fe80::1','[fe80::2]']])
+ expect(result).to(eq(['127.0.0.1','[fe80::1]','[fe80::2]']))
end
it "should embrace a single ipv6 adresse" do
result = scope.function_enclose_ipv6(['fe80::1'])
expect(result).to(eq(['[fe80::1]']))
end
it "should not embrace a single ipv4 adresse" do
result = scope.function_enclose_ipv6(['127.0.0.1'])
expect(result).to(eq(['127.0.0.1']))
end
end

File Metadata

Mime Type
text/x-diff
Expires
Mon, Aug 18, 10:30 PM (5 d, 18 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3261348

Event Timeline