]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/apache/spec/defines/vhost_spec.rb
add Openstack modules to 3rdparty
[dsa-puppet.git] / 3rdparty / modules / apache / spec / defines / vhost_spec.rb
1 require 'spec_helper'
2
3 describe 'apache::vhost', :type => :define do
4   let :pre_condition do
5     'class { "apache": default_vhost => false, default_mods => false, vhost_enable_dir => "/etc/apache2/sites-enabled"}'
6   end
7   let :title do
8     'rspec.example.com'
9   end
10   let :default_params do
11     {
12       :docroot => '/rspec/docroot',
13       :port    => '84',
14     }
15   end
16   describe 'os-dependent items' do
17     context "on RedHat based systems" do
18       let :default_facts do
19         {
20           :osfamily               => 'RedHat',
21           :operatingsystemrelease => '6',
22           :concat_basedir         => '/dne',
23           :operatingsystem        => 'RedHat',
24           :id                     => 'root',
25           :kernel                 => 'Linux',
26           :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
27           :is_pe                  => false,
28         }
29       end
30       let :params do default_params end
31       let :facts do default_facts end
32       it { is_expected.to contain_class("apache") }
33       it { is_expected.to contain_class("apache::params") }
34     end
35     context "on Debian based systems" do
36       let :default_facts do
37         {
38           :osfamily               => 'Debian',
39           :operatingsystemrelease => '6',
40           :concat_basedir         => '/dne',
41           :lsbdistcodename        => 'squeeze',
42           :operatingsystem        => 'Debian',
43           :id                     => 'root',
44           :kernel                 => 'Linux',
45           :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
46           :is_pe                  => false,
47         }
48       end
49       let :params do default_params end
50       let :facts do default_facts end
51       it { is_expected.to contain_class("apache") }
52       it { is_expected.to contain_class("apache::params") }
53       it { is_expected.to contain_file("25-rspec.example.com.conf").with(
54         :ensure => 'present',
55         :path   => '/etc/apache2/sites-available/25-rspec.example.com.conf'
56       ) }
57       it { is_expected.to contain_file("25-rspec.example.com.conf symlink").with(
58         :ensure => 'link',
59         :path   => '/etc/apache2/sites-enabled/25-rspec.example.com.conf',
60         :target => '/etc/apache2/sites-available/25-rspec.example.com.conf'
61       ) }
62     end
63     context "on FreeBSD systems" do
64       let :default_facts do
65         {
66           :osfamily               => 'FreeBSD',
67           :operatingsystemrelease => '9',
68           :concat_basedir         => '/dne',
69           :operatingsystem        => 'FreeBSD',
70           :id                     => 'root',
71           :kernel                 => 'FreeBSD',
72           :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
73           :is_pe                  => false,
74         }
75       end
76       let :params do default_params end
77       let :facts do default_facts end
78       it { is_expected.to contain_class("apache") }
79       it { is_expected.to contain_class("apache::params") }
80       it { is_expected.to contain_file("25-rspec.example.com.conf").with(
81         :ensure => 'present',
82         :path   => '/usr/local/etc/apache24/Vhosts/25-rspec.example.com.conf'
83       ) }
84     end
85     context "on Gentoo systems" do
86       let :default_facts do
87         {
88           :osfamily               => 'Gentoo',
89           :operatingsystem        => 'Gentoo',
90           :operatingsystemrelease => '3.16.1-gentoo',
91           :concat_basedir         => '/dne',
92           :id                     => 'root',
93           :kernel                 => 'Linux',
94           :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
95           :is_pe                  => false,
96         }
97       end
98       let :params do default_params end
99       let :facts do default_facts end
100       it { is_expected.to contain_class("apache") }
101       it { is_expected.to contain_class("apache::params") }
102       it { is_expected.to contain_file("25-rspec.example.com.conf").with(
103         :ensure => 'present',
104         :path   => '/etc/apache2/vhosts.d/25-rspec.example.com.conf'
105       ) }
106     end
107   end
108   describe 'os-independent items' do
109     let :facts do
110       {
111         :osfamily               => 'Debian',
112         :operatingsystemrelease => '6',
113         :concat_basedir         => '/dne',
114         :lsbdistcodename        => 'squeeze',
115         :operatingsystem        => 'Debian',
116         :id                     => 'root',
117         :kernel                 => 'Linux',
118         :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
119         :is_pe                  => false,
120       }
121     end
122     describe 'basic assumptions' do
123       let :params do default_params end
124       it { is_expected.to contain_class("apache") }
125       it { is_expected.to contain_class("apache::params") }
126       it { is_expected.to contain_apache__listen(params[:port]) }
127       it { is_expected.to contain_apache__namevirtualhost("*:#{params[:port]}") }
128     end
129     context 'set everything!' do
130       let :params do
131         {
132           'docroot'                     => '/var/www/foo',
133           'manage_docroot'              => false,
134           'virtual_docroot'             => true,
135           'port'                        => '8080',
136           'ip'                          => '127.0.0.1',
137           'ip_based'                    => true,
138           'add_listen'                  => false,
139           'docroot_owner'               => 'user',
140           'docroot_group'               => 'wheel',
141           'docroot_mode'                => '0664',
142           'serveradmin'                 => 'foo@localhost',
143           'ssl'                         => true,
144           'ssl_cert'                    => '/ssl/cert',
145           'ssl_key'                     => '/ssl/key',
146           'ssl_chain'                   => '/ssl/chain',
147           'ssl_crl_path'                => '/ssl/crl',
148           'ssl_crl'                     => 'foo.crl',
149           'ssl_certs_dir'               => '/ssl/certs',
150           'ssl_protocol'                => 'SSLv2',
151           'ssl_cipher'                  => 'HIGH',
152           'ssl_honorcipherorder'        => 'Off',
153           'ssl_verify_client'           => 'optional',
154           'ssl_verify_depth'            => '3',
155           'ssl_options'                 => '+ExportCertData',
156           'ssl_proxyengine'             => true,
157           'priority'                    => '30',
158           'default_vhost'               => true,
159           'servername'                  => 'example.com',
160           'serveraliases'               => ['test-example.com'],
161           'options'                     => ['MultiView'],
162           'override'                    => ['All'],
163           'directoryindex'              => 'index.html',
164           'vhost_name'                  => 'test',
165           'logroot'                     => '/var/www/logs',
166           'logroot_ensure'              => 'directory',
167           'logroot_mode'                => '0600',
168           'log_level'                   => 'crit',
169           'access_log'                  => false,
170           'access_log_file'             => 'httpd_access_log',
171           'access_log_syslog'           => true,
172           'access_log_format'           => '%h %l %u %t \"%r\" %>s %b',
173           'access_log_env_var'          => '',
174           'aliases'                     => '/image',
175           'directories'                 => [
176             {
177               'path'     => '/var/www/files',
178               'provider' => 'files',
179               'require'  => [ 'valid-user', 'all denied', ],
180             },
181             {
182               'path'     => '/var/www/files',
183               'provider' => 'files',
184               'require'  => 'all granted',
185             },
186             { 'path'              => '/var/www/files/indexed_directory',
187               'directoryindex'    => 'disabled',
188               'options'           => ['Indexes','FollowSymLinks','MultiViews'],
189               'index_options'     => ['FancyIndexing'],
190               'index_style_sheet' => '/styles/style.css',
191             },
192           ],
193           'error_log'                   => false,
194           'error_log_file'              => 'httpd_error_log',
195           'error_log_syslog'            => true,
196           'error_documents'             => 'true',
197           'fallbackresource'            => '/index.php',
198           'scriptalias'                 => '/usr/lib/cgi-bin',
199           'scriptaliases'               => [
200             {
201               'alias' => '/myscript',
202               'path'  => '/usr/share/myscript',
203             },
204             {
205               'aliasmatch' => '^/foo(.*)',
206               'path'       => '/usr/share/fooscripts$1',
207             },
208           ],
209           'proxy_dest'                  => '/',
210           'proxy_pass'                  => [
211             {
212               'path'     => '/a',
213               'url'      => 'http://backend-a/',
214               'keywords' => ['noquery', 'interpolate'],
215               'params'   => {
216                       'retry'   => '0',
217                       'timeout' => '5'
218               },
219               'setenv'   => ['proxy-nokeepalive 1','force-proxy-request-1.0 1'],
220             }
221           ],
222           'proxy_pass_match'            => [
223             {
224               'path'     => '/a',
225               'url'      => 'http://backend-a/',
226               'keywords' => ['noquery', 'interpolate'],
227               'params'   => {
228                       'retry'   => '0',
229                       'timeout' => '5'
230               },
231               'setenv'   => ['proxy-nokeepalive 1','force-proxy-request-1.0 1'],
232             }
233           ],
234           'suphp_addhandler'            => 'foo',
235           'suphp_engine'                => 'on',
236           'suphp_configpath'            => '/var/www/html',
237           'php_admin_flags'             => ['foo', 'bar'],
238           'php_admin_values'            => ['true', 'false'],
239           'no_proxy_uris'               => '/foo',
240           'no_proxy_uris_match'         => '/foomatch',
241           'proxy_preserve_host'         => true,
242           'proxy_error_override'        => true,
243           'redirect_source'             => '/bar',
244           'redirect_dest'               => '/',
245           'redirect_status'             => 'temp',
246           'redirectmatch_status'        => ['404'],
247           'redirectmatch_regexp'        => ['\.git$'],
248           'redirectmatch_dest'          => ['http://www.example.com'],
249           'rack_base_uris'              => ['/rackapp1'],
250           'headers'                     => 'Set X-Robots-Tag "noindex, noarchive, nosnippet"',
251           'request_headers'             => ['append MirrorID "mirror 12"'],
252           'rewrites'                    => [
253             {
254               'rewrite_rule' => ['^index\.html$ welcome.html']
255             }
256           ],
257           'rewrite_base'                => '/',
258           'rewrite_rule'                => '^index\.html$ welcome.html',
259           'rewrite_cond'                => '%{HTTP_USER_AGENT} ^MSIE',
260           'setenv'                      => ['FOO=/bin/true'],
261           'setenvif'                    => 'Request_URI "\.gif$" object_is_image=gif',
262           'block'                       => 'scm',
263           'wsgi_application_group'      => '%{GLOBAL}',
264           'wsgi_daemon_process'         => 'wsgi',
265           'wsgi_daemon_process_options' => {
266             'processes'    => '2',
267             'threads'      => '15',
268             'display-name' => '%{GROUP}',
269           },
270           'wsgi_import_script'          => '/var/www/demo.wsgi',
271           'wsgi_import_script_options'  => {
272             'process-group'     => 'wsgi',
273             'application-group' => '%{GLOBAL}'
274           },
275           'wsgi_process_group'          => 'wsgi',
276           'wsgi_script_aliases'         => {
277             '/' => '/var/www/demo.wsgi'
278           },
279           'wsgi_pass_authorization'     => 'On',
280           'custom_fragment'             => '#custom string',
281           'itk'                         => {
282             'user'  => 'someuser',
283             'group' => 'somegroup'
284           },
285           'wsgi_chunked_request'        => 'On',
286           'action'                      => 'foo',
287           'fastcgi_server'              => 'localhost',
288           'fastcgi_socket'              => '/tmp/fastcgi.socket',
289           'fastcgi_dir'                 => '/tmp',
290           'additional_includes'         => '/custom/path/includes',
291           'apache_version'              => '2.4',
292           'suexec_user_group'           => 'root root',
293           'allow_encoded_slashes'       => 'nodecode',
294           'passenger_app_root'          => '/usr/share/myapp',
295           'passenger_app_env'           => 'test',
296           'passenger_ruby'              => '/usr/bin/ruby1.9.1',
297           'passenger_min_instances'     => '1',
298           'passenger_start_timeout'     => '600',
299           'passenger_pre_start'         => 'http://localhost/myapp',
300           'add_default_charset'         => 'UTF-8',
301         }
302       end
303       let :facts do
304         {
305           :osfamily               => 'RedHat',
306           :operatingsystemrelease => '7',
307           :concat_basedir         => '/dne',
308           :operatingsystem        => 'RedHat',
309           :id                     => 'root',
310           :kernel                 => 'Linux',
311           :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
312           :kernelversion          => '3.6.2',
313           :is_pe                  => false,
314         }
315       end
316
317       it { is_expected.to compile }
318       it { is_expected.to_not contain_file('/var/www/foo') }
319       it { is_expected.to contain_class('apache::mod::ssl') }
320       it { is_expected.to contain_file('ssl.conf').with(
321         :content => /^\s+SSLHonorCipherOrder On$/ ) }
322       it { is_expected.to contain_file('ssl.conf').with(
323         :content => /^\s+SSLPassPhraseDialog builtin$/ ) }
324       it { is_expected.to contain_file('ssl.conf').with(
325         :content => /^\s+SSLSessionCacheTimeout 300$/ ) }
326       it { is_expected.to contain_class('apache::mod::mime') }
327       it { is_expected.to contain_class('apache::mod::vhost_alias') }
328       it { is_expected.to contain_class('apache::mod::wsgi') }
329       it { is_expected.to contain_class('apache::mod::suexec') }
330       it { is_expected.to contain_class('apache::mod::passenger') }
331       it { is_expected.to contain_file('/var/www/logs').with({
332         'ensure' => 'directory',
333         'mode'   => '0600',
334       })
335       }
336       it { is_expected.to contain_class('apache::mod::rewrite') }
337       it { is_expected.to contain_class('apache::mod::alias') }
338       it { is_expected.to contain_class('apache::mod::proxy') }
339       it { is_expected.to contain_class('apache::mod::proxy_http') }
340       it { is_expected.to contain_class('apache::mod::passenger') }
341       it { is_expected.to contain_class('apache::mod::passenger') }
342       it { is_expected.to contain_class('apache::mod::fastcgi') }
343       it { is_expected.to contain_class('apache::mod::headers') }
344       it { is_expected.to contain_class('apache::mod::setenvif') }
345       it { is_expected.to contain_concat('30-rspec.example.com.conf').with({
346         'owner'   => 'root',
347         'mode'    => '0644',
348         'require' => 'Package[httpd]',
349         'notify'  => 'Class[Apache::Service]',
350       })
351       }
352       it { is_expected.to contain_file('30-rspec.example.com.conf symlink').with({
353         'ensure' => 'link',
354         'path'   => '/etc/apache2/sites-enabled/30-rspec.example.com.conf',
355       })
356       }
357       it { is_expected.to contain_concat__fragment('rspec.example.com-apache-header') }
358       it { is_expected.to contain_concat__fragment('rspec.example.com-docroot') }
359       it { is_expected.to contain_concat__fragment('rspec.example.com-aliases') }
360       it { is_expected.to contain_concat__fragment('rspec.example.com-itk') }
361       it { is_expected.to contain_concat__fragment('rspec.example.com-fallbackresource') }
362       it { is_expected.to contain_concat__fragment('rspec.example.com-directories') }
363       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
364         :content => /^\s+Require valid-user$/ ) }
365       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
366         :content => /^\s+Require all denied$/ ) }
367       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
368         :content => /^\s+Require all granted$/ ) }
369       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
370         :content => /^\s+Options\sIndexes\sFollowSymLinks\sMultiViews$/ ) }
371       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
372         :content => /^\s+IndexOptions\sFancyIndexing$/ ) }
373       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
374         :content => /^\s+IndexStyleSheet\s'\/styles\/style\.css'$/ ) }
375       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
376         :content => /^\s+DirectoryIndex\sdisabled$/ ) }
377       it { is_expected.to contain_concat__fragment('rspec.example.com-additional_includes') }
378       it { is_expected.to contain_concat__fragment('rspec.example.com-logging') }
379       it { is_expected.to contain_concat__fragment('rspec.example.com-serversignature') }
380       it { is_expected.to_not contain_concat__fragment('rspec.example.com-access_log') }
381       it { is_expected.to contain_concat__fragment('rspec.example.com-action') }
382       it { is_expected.to contain_concat__fragment('rspec.example.com-block') }
383       it { is_expected.to contain_concat__fragment('rspec.example.com-error_document') }
384       it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
385               /retry=0/) }
386       it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
387               /timeout=5/) }
388       it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
389               /SetEnv force-proxy-request-1.0 1/) }
390       it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
391               /SetEnv proxy-nokeepalive 1/) }
392       it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
393               /noquery interpolate/) }
394       it { is_expected.to contain_concat__fragment('rspec.example.com-rack') }
395       it { is_expected.to contain_concat__fragment('rspec.example.com-redirect') }
396       it { is_expected.to contain_concat__fragment('rspec.example.com-rewrite') }
397       it { is_expected.to contain_concat__fragment('rspec.example.com-scriptalias') }
398       it { is_expected.to contain_concat__fragment('rspec.example.com-serveralias') }
399       it { is_expected.to contain_concat__fragment('rspec.example.com-setenv') }
400       it { is_expected.to contain_concat__fragment('rspec.example.com-ssl') }
401       it { is_expected.to contain_concat__fragment('rspec.example.com-suphp') }
402       it { is_expected.to contain_concat__fragment('rspec.example.com-php_admin') }
403       it { is_expected.to contain_concat__fragment('rspec.example.com-header') }
404       it { is_expected.to contain_concat__fragment('rspec.example.com-requestheader') }
405       it { is_expected.to contain_concat__fragment('rspec.example.com-wsgi') }
406       it { is_expected.to contain_concat__fragment('rspec.example.com-custom_fragment') }
407       it { is_expected.to contain_concat__fragment('rspec.example.com-fastcgi') }
408       it { is_expected.to contain_concat__fragment('rspec.example.com-suexec') }
409       it { is_expected.to contain_concat__fragment('rspec.example.com-allow_encoded_slashes') }
410       it { is_expected.to contain_concat__fragment('rspec.example.com-passenger') }
411       it { is_expected.to contain_concat__fragment('rspec.example.com-charsets') }
412       it { is_expected.to contain_concat__fragment('rspec.example.com-file_footer') }
413     end
414     context 'not everything can be set together...' do
415       let :params do
416         {
417           'access_log_pipe' => '/dev/null',
418           'error_log_pipe'  => '/dev/null',
419           'docroot'         => '/var/www/foo',
420           'ensure'          => 'absent',
421           'manage_docroot'  => true,
422           'logroot'         => '/tmp/logroot',
423           'logroot_ensure'  => 'absent',
424           'directories'     => [
425             {
426               'path'     => '/var/www/files',
427               'provider' => 'files',
428               'allow'    => [ 'from 127.0.0.1', 'from 127.0.0.2', ],
429               'deny'     => [ 'from 127.0.0.3', 'from 127.0.0.4', ],
430               'satisfy'  => 'any',
431             },
432             {
433               'path'     => '/var/www/foo',
434               'provider' => 'files',
435               'allow'    => 'from 127.0.0.5',
436               'deny'     => 'from all',
437               'order'    => 'deny,allow',
438             },
439           ],
440
441         }
442       end
443       let :facts do
444         {
445           :osfamily               => 'RedHat',
446           :operatingsystemrelease => '6',
447           :concat_basedir         => '/dne',
448           :operatingsystem        => 'RedHat',
449           :id                     => 'root',
450           :kernel                 => 'Linux',
451           :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
452           :kernelversion          => '3.6.2',
453           :is_pe                  => false,
454         }
455       end
456
457       it { is_expected.to compile }
458       it { is_expected.to_not contain_class('apache::mod::ssl') }
459       it { is_expected.to_not contain_class('apache::mod::mime') }
460       it { is_expected.to_not contain_class('apache::mod::vhost_alias') }
461       it { is_expected.to_not contain_class('apache::mod::wsgi') }
462       it { is_expected.to_not contain_class('apache::mod::passenger') }
463       it { is_expected.to_not contain_class('apache::mod::suexec') }
464       it { is_expected.to_not contain_class('apache::mod::rewrite') }
465       it { is_expected.to_not contain_class('apache::mod::alias') }
466       it { is_expected.to_not contain_class('apache::mod::proxy') }
467       it { is_expected.to_not contain_class('apache::mod::proxy_http') }
468       it { is_expected.to_not contain_class('apache::mod::passenger') }
469       it { is_expected.to_not contain_class('apache::mod::headers') }
470       it { is_expected.to contain_file('/var/www/foo') }
471       it { is_expected.to contain_file('/tmp/logroot').with({
472         'ensure' => 'absent',
473       })
474       }
475       it { is_expected.to contain_concat('25-rspec.example.com.conf').with({
476         'ensure' => 'absent',
477       })
478       }
479       it { is_expected.to contain_concat__fragment('rspec.example.com-apache-header') }
480       it { is_expected.to contain_concat__fragment('rspec.example.com-docroot') }
481       it { is_expected.to_not contain_concat__fragment('rspec.example.com-aliases') }
482       it { is_expected.to_not contain_concat__fragment('rspec.example.com-itk') }
483       it { is_expected.to_not contain_concat__fragment('rspec.example.com-fallbackresource') }
484       it { is_expected.to contain_concat__fragment('rspec.example.com-directories') }
485       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
486         :content => /^\s+Allow from 127\.0\.0\.1$/ ) }
487       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
488         :content => /^\s+Allow from 127\.0\.0\.2$/ ) }
489       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
490         :content => /^\s+Allow from 127\.0\.0\.5$/ ) }
491       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
492         :content => /^\s+Deny from 127\.0\.0\.3$/ ) }
493       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
494         :content => /^\s+Deny from 127\.0\.0\.4$/ ) }
495       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
496         :content => /^\s+Deny from all$/ ) }
497       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
498         :content => /^\s+Satisfy any$/ ) }
499       it { is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
500         :content => /^\s+Order deny,allow$/ ) }
501       it { is_expected.to_not contain_concat__fragment('rspec.example.com-additional_includes') }
502       it { is_expected.to contain_concat__fragment('rspec.example.com-logging') }
503       it { is_expected.to contain_concat__fragment('rspec.example.com-serversignature') }
504       it { is_expected.to contain_concat__fragment('rspec.example.com-access_log') }
505       it { is_expected.to_not contain_concat__fragment('rspec.example.com-action') }
506       it { is_expected.to_not contain_concat__fragment('rspec.example.com-block') }
507       it { is_expected.to_not contain_concat__fragment('rspec.example.com-error_document') }
508       it { is_expected.to_not contain_concat__fragment('rspec.example.com-proxy') }
509       it { is_expected.to_not contain_concat__fragment('rspec.example.com-rack') }
510       it { is_expected.to_not contain_concat__fragment('rspec.example.com-redirect') }
511       it { is_expected.to_not contain_concat__fragment('rspec.example.com-rewrite') }
512       it { is_expected.to_not contain_concat__fragment('rspec.example.com-scriptalias') }
513       it { is_expected.to_not contain_concat__fragment('rspec.example.com-serveralias') }
514       it { is_expected.to_not contain_concat__fragment('rspec.example.com-setenv') }
515       it { is_expected.to_not contain_concat__fragment('rspec.example.com-ssl') }
516       it { is_expected.to_not contain_concat__fragment('rspec.example.com-suphp') }
517       it { is_expected.to_not contain_concat__fragment('rspec.example.com-php_admin') }
518       it { is_expected.to_not contain_concat__fragment('rspec.example.com-header') }
519       it { is_expected.to_not contain_concat__fragment('rspec.example.com-requestheader') }
520       it { is_expected.to_not contain_concat__fragment('rspec.example.com-wsgi') }
521       it { is_expected.to_not contain_concat__fragment('rspec.example.com-custom_fragment') }
522       it { is_expected.to_not contain_concat__fragment('rspec.example.com-fastcgi') }
523       it { is_expected.to_not contain_concat__fragment('rspec.example.com-suexec') }
524       it { is_expected.to_not contain_concat__fragment('rspec.example.com-charsets') }
525       it { is_expected.to contain_concat__fragment('rspec.example.com-file_footer') }
526     end
527   end
528   describe 'access logs' do
529     let :facts do
530       {
531         :osfamily               => 'RedHat',
532         :operatingsystemrelease => '6',
533         :concat_basedir         => '/dne',
534         :operatingsystem        => 'RedHat',
535         :id                     => 'root',
536         :kernel                 => 'Linux',
537         :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
538         :is_pe                  => false,
539       }
540     end
541     context 'single log file' do
542       let(:params) do
543         {
544           'docroot'         => '/rspec/docroot',
545           'access_log_file' => 'my_log_file',
546         }
547       end
548       it { is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
549         :content => /^\s+CustomLog.*my_log_file" combined\s*$/
550       )}
551     end
552     context 'single log file with environment' do
553       let(:params) do
554         {
555           'docroot'            => '/rspec/docroot',
556           'access_log_file'    => 'my_log_file',
557           'access_log_env_var' => 'prod'
558         }
559       end
560       it { is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
561         :content => /^\s+CustomLog.*my_log_file" combined\s+env=prod$/
562       )}
563     end
564     context 'multiple log files' do
565       let(:params) do
566         {
567           'docroot'     => '/rspec/docroot',
568           'access_logs' => [
569             { 'file' => '/tmp/log1', 'env' => 'dev' },
570             { 'file' => 'log2' },
571             { 'syslog' => 'syslog', 'format' => '%h %l' }
572           ],
573         }
574       end
575       it { is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
576         :content => /^\s+CustomLog "\/tmp\/log1"\s+combined\s+env=dev$/
577       )}
578       it { is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
579         :content => /^\s+CustomLog "\/var\/log\/httpd\/log2"\s+combined\s*$/
580       )}
581       it { is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
582         :content => /^\s+CustomLog "syslog" "%h %l"\s*$/
583       )}
584     end
585   end # access logs
586   describe 'validation' do
587     context 'bad ensure' do
588       let :params do
589         {
590           'docroot' => '/rspec/docroot',
591           'ensure'  => 'bogus',
592         }
593       end
594       let :facts do default_facts end
595       it { expect { is_expected.to compile }.to raise_error }
596     end
597     context 'bad suphp_engine' do
598       let :params do
599         {
600           'docroot'      => '/rspec/docroot',
601           'suphp_engine' => 'bogus',
602         }
603       end
604       let :facts do default_facts end
605       it { expect { is_expected.to compile }.to raise_error }
606     end
607     context 'bad ip_based' do
608       let :params do
609         {
610           'docroot'  => '/rspec/docroot',
611           'ip_based' => 'bogus',
612         }
613       end
614       let :facts do default_facts end
615       it { expect { is_expected.to compile }.to raise_error }
616     end
617     context 'bad access_log' do
618       let :params do
619         {
620           'docroot'    => '/rspec/docroot',
621           'access_log' => 'bogus',
622         }
623       end
624       let :facts do default_facts end
625       it { expect { is_expected.to compile }.to raise_error }
626     end
627     context 'bad error_log' do
628       let :params do
629         {
630           'docroot'   => '/rspec/docroot',
631           'error_log' => 'bogus',
632         }
633       end
634       let :facts do default_facts end
635       it { expect { is_expected.to compile }.to raise_error }
636     end
637     context 'bad_ssl' do
638       let :params do
639         {
640           'docroot' => '/rspec/docroot',
641           'ssl'     => 'bogus',
642         }
643       end
644       let :facts do default_facts end
645       it { expect { is_expected.to compile }.to raise_error }
646     end
647     context 'bad default_vhost' do
648       let :params do
649         {
650           'docroot'       => '/rspec/docroot',
651           'default_vhost' => 'bogus',
652         }
653       end
654       let :facts do default_facts end
655       it { expect { is_expected.to compile }.to raise_error }
656     end
657     context 'bad ssl_proxyengine' do
658       let :params do
659         {
660           'docroot'         => '/rspec/docroot',
661           'ssl_proxyengine' => 'bogus',
662         }
663       end
664       let :facts do default_facts end
665       it { expect { is_expected.to compile }.to raise_error }
666     end
667     context 'bad rewrites' do
668       let :params do
669         {
670           'docroot'  => '/rspec/docroot',
671           'rewrites' => 'bogus',
672         }
673       end
674       let :facts do default_facts end
675       it { expect { is_expected.to compile }.to raise_error }
676     end
677     context 'bad rewrites 2' do
678       let :params do
679         {
680           'docroot'  => '/rspec/docroot',
681           'rewrites' => ['bogus'],
682         }
683       end
684       let :facts do default_facts end
685       it { expect { is_expected.to compile }.to raise_error }
686     end
687     context 'bad suexec_user_group' do
688       let :params do
689         {
690           'docroot'           => '/rspec/docroot',
691           'suexec_user_group' => 'bogus',
692         }
693       end
694       let :facts do default_facts end
695       it { expect { is_expected.to compile }.to raise_error }
696     end
697     context 'bad wsgi_script_alias' do
698       let :params do
699         {
700           'docroot'           => '/rspec/docroot',
701           'wsgi_script_alias' => 'bogus',
702         }
703       end
704       let :facts do default_facts end
705       it { expect { is_expected.to compile }.to raise_error }
706     end
707     context 'bad wsgi_daemon_process_options' do
708       let :params do
709         {
710           'docroot'                     => '/rspec/docroot',
711           'wsgi_daemon_process_options' => 'bogus',
712         }
713       end
714       let :facts do default_facts end
715       it { expect { is_expected.to compile }.to raise_error }
716     end
717     context 'bad wsgi_import_script_alias' do
718       let :params do
719         {
720           'docroot'                  => '/rspec/docroot',
721           'wsgi_import_script_alias' => 'bogus',
722         }
723       end
724       let :facts do default_facts end
725       it { expect { is_expected.to compile }.to raise_error }
726     end
727     context 'bad itk' do
728       let :params do
729         {
730           'docroot' => '/rspec/docroot',
731           'itk'     => 'bogus',
732         }
733       end
734       let :facts do default_facts end
735       it { expect { is_expected.to compile }.to raise_error }
736     end
737     context 'bad logroot_ensure' do
738       let :params do
739         {
740           'docroot'   => '/rspec/docroot',
741           'log_level' => 'bogus',
742         }
743       end
744       let :facts do default_facts end
745       it { expect { is_expected.to compile }.to raise_error }
746     end
747     context 'bad log_level' do
748       let :params do
749         {
750           'docroot'   => '/rspec/docroot',
751           'log_level' => 'bogus',
752         }
753       end
754       let :facts do default_facts end
755       it { expect { is_expected.to compile }.to raise_error }
756     end
757     context 'access_log_file and access_log_pipe' do
758       let :params do
759         {
760           'docroot'         => '/rspec/docroot',
761           'access_log_file' => 'bogus',
762           'access_log_pipe' => 'bogus',
763         }
764       end
765       let :facts do default_facts end
766       it { expect { is_expected.to compile }.to raise_error }
767     end
768     context 'error_log_file and error_log_pipe' do
769       let :params do
770         {
771           'docroot'        => '/rspec/docroot',
772           'error_log_file' => 'bogus',
773           'error_log_pipe' => 'bogus',
774         }
775       end
776       let :facts do default_facts end
777       it { expect { is_expected.to compile }.to raise_error }
778     end
779     context 'bad fallbackresource' do
780       let :params do
781         {
782           'docroot'          => '/rspec/docroot',
783           'fallbackresource' => 'bogus',
784         }
785       end
786       let :facts do default_facts end
787       it { expect { is_expected.to compile }.to raise_error }
788     end
789     context 'bad custom_fragment' do
790       let :params do
791         {
792           'docroot'         => '/rspec/docroot',
793           'custom_fragment' => true,
794         }
795       end
796       let :facts do default_facts end
797       it { expect { is_expected.to compile }.to raise_error }
798     end
799     context 'bad access_logs' do
800       let :params do
801         {
802           'docroot'     => '/rspec/docroot',
803           'access_logs' => '/var/log/somewhere',
804         }
805       end
806       let :facts do default_facts end
807       it { expect { is_expected.to compile }.to raise_error }
808     end
809   end
810 end