2013-11-22 04:10:53 +01:00
|
|
|
require 'spec_helper'
|
|
|
|
describe 'nginx::config' do
|
|
|
|
|
|
|
|
describe 'with defaults' do
|
|
|
|
[
|
|
|
|
{ :osfamily => 'debian', :operatingsystem => 'debian', },
|
|
|
|
{ :osfamily => 'debian', :operatingsystem => 'ubuntu', },
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'fedora', },
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'rhel', },
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'redhat', },
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'centos', },
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'scientific', },
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'amazon', },
|
|
|
|
{ :osfamily => 'suse', :operatingsystem => 'suse', },
|
|
|
|
{ :osfamily => 'suse', :operatingsystem => 'opensuse', },
|
|
|
|
{ :osfamily => 'gentoo', :operatingsystem => 'gentoo', },
|
|
|
|
{ :osfamily => 'linux', :operatingsystem => 'gentoo', },
|
|
|
|
].each do |facts|
|
|
|
|
|
|
|
|
context "when osfamily/operatingsystem is #{facts[:osfamily]}/#{facts[:operatingsystem]}" do
|
|
|
|
|
|
|
|
let :facts do
|
|
|
|
{
|
|
|
|
:osfamily => facts[:osfamily],
|
|
|
|
:operatingsystem => facts[:operatingsystem],
|
|
|
|
:kernel => 'linux',
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
it { should include_class("nginx::params") }
|
|
|
|
|
|
|
|
it { should contain_file("/etc/nginx").with(
|
|
|
|
:ensure => 'directory',
|
|
|
|
:owner => 'root',
|
|
|
|
:group => 'root',
|
|
|
|
:mode => '0644'
|
|
|
|
)}
|
|
|
|
it { should contain_file("/etc/nginx/conf.d").with(
|
|
|
|
:ensure => 'directory',
|
|
|
|
:owner => 'root',
|
|
|
|
:group => 'root',
|
|
|
|
:mode => '0644'
|
|
|
|
)}
|
|
|
|
it { should contain_file("/etc/nginx/conf.mail.d").with(
|
|
|
|
:ensure => 'directory',
|
|
|
|
:owner => 'root',
|
|
|
|
:group => 'root',
|
|
|
|
:mode => '0644'
|
|
|
|
)}
|
2013-12-01 01:56:38 +01:00
|
|
|
it { should contain_file("/etc/nginx/conf.d/vhost_autogen.conf").with_ensure('absent') }
|
|
|
|
it { should contain_file("/etc/nginx/conf.mail.d/vhost_autogen.conf").with_ensure('absent') }
|
2013-11-22 04:10:53 +01:00
|
|
|
it { should contain_file("/var/nginx").with(
|
|
|
|
:ensure => 'directory',
|
|
|
|
:owner => 'root',
|
|
|
|
:group => 'root',
|
|
|
|
:mode => '0644'
|
|
|
|
)}
|
|
|
|
it { should contain_file("/var/nginx/client_body_temp").with(
|
|
|
|
:ensure => 'directory',
|
|
|
|
:group => 'root',
|
|
|
|
:mode => '0644'
|
|
|
|
)}
|
|
|
|
it { should contain_file("/var/nginx/proxy_temp").with(
|
|
|
|
:ensure => 'directory',
|
|
|
|
:group => 'root',
|
|
|
|
:mode => '0644'
|
|
|
|
)}
|
|
|
|
it { should contain_file('/etc/nginx/sites-enabled/default').with_ensure('absent') }
|
|
|
|
it { should contain_file("/etc/nginx/nginx.conf").with(
|
|
|
|
:ensure => 'file',
|
|
|
|
:owner => 'root',
|
|
|
|
:group => 'root',
|
|
|
|
:mode => '0644'
|
|
|
|
)}
|
|
|
|
it { should contain_file("/etc/nginx/conf.d/proxy.conf").with(
|
|
|
|
:ensure => 'file',
|
|
|
|
:owner => 'root',
|
|
|
|
:group => 'root',
|
|
|
|
:mode => '0644'
|
|
|
|
)}
|
2013-12-02 19:58:23 +01:00
|
|
|
it { should contain_file("/tmp/nginx.d").with(
|
|
|
|
:ensure => 'absent',
|
|
|
|
:purge => true,
|
|
|
|
:recurse => true,
|
|
|
|
)}
|
|
|
|
it { should contain_file("/tmp/nginx.mail.d").with(
|
|
|
|
:ensure => 'absent',
|
|
|
|
:purge => true,
|
|
|
|
:recurse => true,
|
|
|
|
)}
|
2013-11-22 04:10:53 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe 'with defaults' do
|
|
|
|
[
|
|
|
|
{ :osfamily => 'debian', :operatingsystem => 'debian', },
|
|
|
|
{ :osfamily => 'debian', :operatingsystem => 'ubuntu', },
|
|
|
|
].each do |facts|
|
|
|
|
|
|
|
|
context "when osfamily/operatingsystem is #{facts[:osfamily]}/#{facts[:operatingsystem]}" do
|
|
|
|
|
|
|
|
let :facts do
|
|
|
|
{
|
|
|
|
:osfamily => facts[:osfamily],
|
|
|
|
:operatingsystem => facts[:operatingsystem],
|
|
|
|
:kernel => 'linux',
|
|
|
|
}
|
|
|
|
end
|
|
|
|
it { should contain_file("/var/nginx/client_body_temp").with(:owner => 'www-data')}
|
|
|
|
it { should contain_file("/var/nginx/proxy_temp").with(:owner => 'www-data')}
|
|
|
|
it { should contain_file("/etc/nginx/nginx.conf").with_content %r{^user www-data;}}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe 'with defaults' do
|
|
|
|
[
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'fedora', },
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'rhel', },
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'redhat', },
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'centos', },
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'scientific', },
|
|
|
|
{ :osfamily => 'redhat', :operatingsystem => 'amazon', },
|
|
|
|
{ :osfamily => 'suse', :operatingsystem => 'suse', },
|
|
|
|
{ :osfamily => 'suse', :operatingsystem => 'opensuse', },
|
|
|
|
{ :osfamily => 'gentoo', :operatingsystem => 'gentoo', },
|
|
|
|
{ :osfamily => 'linux', :operatingsystem => 'gentoo', },
|
|
|
|
].each do |facts|
|
|
|
|
|
|
|
|
context "when osfamily/operatingsystem is #{facts[:osfamily]}/#{facts[:operatingsystem]}" do
|
|
|
|
|
|
|
|
let :facts do
|
|
|
|
{
|
|
|
|
:osfamily => facts[:osfamily],
|
|
|
|
:operatingsystem => facts[:operatingsystem],
|
|
|
|
:kernel => 'linux',
|
|
|
|
}
|
|
|
|
end
|
|
|
|
it { should contain_file("/var/nginx/client_body_temp").with(:owner => 'nginx')}
|
|
|
|
it { should contain_file("/var/nginx/proxy_temp").with(:owner => 'nginx')}
|
|
|
|
it { should contain_file("/etc/nginx/nginx.conf").with_content %r{^user nginx;}}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe 'os-independent items' do
|
|
|
|
|
|
|
|
let :facts do
|
|
|
|
{
|
|
|
|
:osfamily => 'debian',
|
|
|
|
:operatingsystem => 'debian',
|
|
|
|
:kernel => 'linux',
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "nginx.conf template content" do
|
|
|
|
[
|
|
|
|
{
|
|
|
|
:title => 'should set worker_processes',
|
|
|
|
:attr => 'worker_processes',
|
|
|
|
:value => '4',
|
|
|
|
:match => 'worker_processes 4;',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:title => 'should set error_log',
|
|
|
|
:attr => 'nginx_error_log',
|
|
|
|
:value => '/path/to/error.log',
|
|
|
|
:match => 'error_log /path/to/error.log;',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:title => 'should set worker_connections',
|
|
|
|
:attr => 'worker_connections',
|
|
|
|
:value => '100',
|
|
|
|
:match => ' worker_connections 100;',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:title => 'should set access_log',
|
|
|
|
:attr => 'http_access_log',
|
|
|
|
:value => '/path/to/access.log',
|
|
|
|
:match => ' access_log /path/to/access.log;',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:title => 'should set server_tokens',
|
|
|
|
:attr => 'server_tokens',
|
|
|
|
:value => 'on',
|
|
|
|
:match => ' server_tokens on;',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:title => 'should set proxy_cache_path',
|
|
|
|
:attr => 'proxy_cache_path',
|
|
|
|
:value => '/path/to/proxy.cache',
|
|
|
|
:match => ' proxy_cache_path /path/to/proxy.cache levels=1 keys_zone=d2:100m max_size=500m inactive=20m;',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:title => 'should not set proxy_cache_path',
|
|
|
|
:attr => 'proxy_cache_path',
|
|
|
|
:value => false,
|
|
|
|
:notmatch => ' proxy_cache_path /path/to/proxy.cache levels=1 keys_zone=d2:100m max_size=500m inactive=20m;',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:title => 'should contain ordered appended directives',
|
|
|
|
:attr => 'http_cfg_append',
|
|
|
|
:value => { 'test1' => 'test value 1', 'test2' => 'test value 2', 'allow' => 'test value 3' },
|
|
|
|
:match => [
|
|
|
|
' allow test value 3;',
|
|
|
|
' test1 test value 1;',
|
|
|
|
' test2 test value 2;',
|
|
|
|
],
|
|
|
|
},
|
|
|
|
].each do |param|
|
|
|
|
context "when #{param[:attr]} is #{param[:value]}" do
|
|
|
|
let :params do { param[:attr].to_sym => param[:value] } end
|
|
|
|
|
|
|
|
it { should contain_file("/etc/nginx/nginx.conf").with_mode('0644') }
|
|
|
|
it param[:title] do
|
|
|
|
verify_contents(subject, "/etc/nginx/nginx.conf", Array(param[:match]))
|
|
|
|
lines = subject.resource('file', "/etc/nginx/nginx.conf").send(:parameters)[:content].split("\n")
|
|
|
|
(Array(param[:notmatch]).collect { |x| lines.grep x }.flatten).should be_empty
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "proxy.conf template content" do
|
|
|
|
[
|
|
|
|
{
|
|
|
|
:title => 'should set client_max_body_size',
|
|
|
|
:attr => 'client_max_body_size',
|
|
|
|
:value => '5m',
|
|
|
|
:match => 'client_max_body_size 5m;',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:title => 'should set proxy_buffers',
|
|
|
|
:attr => 'proxy_buffers',
|
|
|
|
:value => '50 5k',
|
|
|
|
:match => 'proxy_buffers 50 5k;',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:title => 'should set proxy_buffer_size',
|
|
|
|
:attr => 'proxy_buffer_size',
|
|
|
|
:value => '2k',
|
|
|
|
:match => 'proxy_buffer_size 2k;',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:title => 'should set proxy_http_version',
|
|
|
|
:attr => 'proxy_http_version',
|
|
|
|
:value => '1.1',
|
|
|
|
:match => 'proxy_http_version 1.1;',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:title => 'should contain ordered appended directives',
|
|
|
|
:attr => 'proxy_set_header',
|
|
|
|
:value => ['header1','header2'],
|
|
|
|
:match => [
|
|
|
|
'proxy_set_header header1;',
|
|
|
|
'proxy_set_header header2;',
|
|
|
|
],
|
|
|
|
},
|
|
|
|
].each do |param|
|
|
|
|
context "when #{param[:attr]} is #{param[:value]}" do
|
|
|
|
let :params do { param[:attr].to_sym => param[:value] } end
|
|
|
|
|
|
|
|
it { should contain_file("/etc/nginx/conf.d/proxy.conf").with_mode('0644') }
|
|
|
|
it param[:title] do
|
|
|
|
verify_contents(subject, "/etc/nginx/conf.d/proxy.conf", Array(param[:match]))
|
|
|
|
lines = subject.resource('file', "/etc/nginx/conf.d/proxy.conf").send(:parameters)[:content].split("\n")
|
|
|
|
(Array(param[:notmatch]).collect { |x| lines.grep x }.flatten).should be_empty
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when confd_purge true" do
|
|
|
|
let(:params) {{:confd_purge => true}}
|
|
|
|
it { should contain_file('/etc/nginx/conf.d').with(
|
|
|
|
:purge => true,
|
|
|
|
:recurse => true
|
|
|
|
)}
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when confd_purge false" do
|
|
|
|
let(:params) {{:confd_purge => false}}
|
|
|
|
it { should contain_file('/etc/nginx/conf.d').without([
|
|
|
|
'ignore',
|
|
|
|
'purge',
|
|
|
|
'recurse'
|
|
|
|
])}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|