Skip to content

Commit

Permalink
Merge pull request #188 from 3flex/rspec-tests
Browse files Browse the repository at this point in the history
Rspec tests (and fixes)
  • Loading branch information
James Fryman committed Nov 22, 2013
2 parents abc3093 + 8292be0 commit 8691db1
Show file tree
Hide file tree
Showing 20 changed files with 2,138 additions and 97 deletions.
13 changes: 5 additions & 8 deletions manifests/package/redhat.pp
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,12 @@
gpgkey => 'http://nginx.org/keys/nginx_signing.key',
before => Package[$package_name],
}
}
}
}

if $manage_repo {
#Define file for nginx-repo so puppet doesn't delete it
file { '/etc/yum.repos.d/nginx-release.repo':
ensure => present,
require => Yumrepo['nginx-release'],
file { '/etc/yum.repos.d/nginx-release.repo':
ensure => present,
require => Yumrepo['nginx-release'],
}
}
}
}

Expand Down
28 changes: 14 additions & 14 deletions manifests/resource/vhost.pp
Original file line number Diff line number Diff line change
Expand Up @@ -181,19 +181,6 @@
default => $error_log,
}

# Use the File Fragment Pattern to construct the configuration files.
# Create the base configuration file reference.
if ($listen_port != $ssl_port) {
file { "${nginx::config::nx_temp_dir}/nginx.d/${name}-001":
ensure => $ensure ? {
'absent' => absent,
default => 'file',
},
content => template('nginx/vhost/vhost_header.erb'),
notify => Class['nginx::service'],
}
}

if ($ssl == true) and ($ssl_port == $listen_port) {
$ssl_only = true
}
Expand Down Expand Up @@ -244,6 +231,19 @@
}
}

# Use the File Fragment Pattern to construct the configuration files.
# Create the base configuration file reference.
if ($listen_port != $ssl_port) {
file { "${nginx::config::nx_temp_dir}/nginx.d/${name}-001":
ensure => $ensure ? {
'absent' => absent,
default => 'file',
},
content => template('nginx/vhost/vhost_header.erb'),
notify => Class['nginx::service'],
}
}

# Create a proper file close stub.
if ($listen_port != $ssl_port) {
file { "${nginx::config::nx_temp_dir}/nginx.d/${name}-699": content => template('nginx/vhost/vhost_footer.erb'), }
Expand All @@ -260,7 +260,7 @@
undef => "${nginx::params::nx_logdir}/ssl-${domain_log_name}.error.log",
default => $error_log,
}
file { "${nginx::config::nx_temp_dir}/nginx.d/${name}-300-ssl":
file { "${nginx::config::nx_temp_dir}/nginx.d/${name}-700-ssl":
ensure => $ensure ? {
'absent' => absent,
default => 'file',
Expand Down
296 changes: 296 additions & 0 deletions spec/classes/config_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,296 @@
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'
)}
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'
)}
it { should contain_file("/tmp/nginx.d").with(
:ensure => 'directory',
:purge => true,
:recurse => true,
:owner => 'root',
:group => 'root',
:mode => '0644'
)}
it { should contain_file("/tmp/nginx.mail.d").with(
:ensure => 'directory',
:purge => true,
:recurse => true,
:owner => 'root',
:group => 'root',
:mode => '0644'
)}
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(
:ignore => 'vhost_autogen.conf',
: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
Loading

0 comments on commit 8691db1

Please sign in to comment.