Commit e81564f0 authored by Mickaël Canévet's avatar Mickaël Canévet
Browse files

Manage unit tests with rspec-puppet-facts

parent 745509f3
......@@ -48,7 +48,8 @@
"operatingsystem": "RedHat",
"operatingsystemrelease": [
"5",
"6"
"6",
"7"
]
}
],
......
require 'spec_helper'
describe 'postfix::augeas' do
let (:facts) { {
:augeasversion => '1.2.0',
:lsbdistcodename => 'wheezy',
:operatingsystem => 'Debian',
:osfamily => 'Debian',
:rubyversion => '1.9.3',
:path => '/foo/bar',
} }
let :pre_condition do
"include ::augeas"
end
it { is_expected.to contain_augeas__lens('postfix_transport').with(
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) do
facts.merge({
:augeasversion => '1.2.0',
})
end
it { is_expected.to compile.with_all_deps }
it { is_expected.to contain_augeas__lens('postfix_transport').with({
:ensure => 'present',
:lens_source => 'puppet:///modules/postfix/lenses/postfix_transport.aug',
:test_source => 'puppet:///modules/postfix/lenses/test_postfix_transport.aug',
:stock_since => '1.0.0'
) }
it { is_expected.to contain_augeas__lens('postfix_virtual').with(
:stock_since => '1.0.0',
} ) }
it { is_expected.to contain_augeas__lens('postfix_virtual').with({
:ensure => 'present',
:lens_source => 'puppet:///modules/postfix/lenses/postfix_virtual.aug',
:test_source => 'puppet:///modules/postfix/lenses/test_postfix_virtual.aug',
:stock_since => '1.0.0'
) }
:stock_since => '1.0.0',
}) }
end
end
end
require 'spec_helper'
describe 'postfix::mailman' do
let :pre_condition do
"include ::postfix"
end
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) do
facts
end
it { is_expected.to compile.with_all_deps }
end
end
end
require 'spec_helper'
describe 'postfix::mta' do
let (:facts) { {
:lsbdistcodename => 'wheezy',
:osfamily => 'Debian',
:path => '/foo/bar',
} }
let :pre_condition do
"class { 'postfix':
mydestination => 'bar',
......@@ -14,7 +9,16 @@ describe 'postfix::mta' do
}"
end
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) do
facts
end
it { is_expected.to compile.with_all_deps }
it { is_expected.to contain_postfix__config('mydestination').with_value('bar') }
it { is_expected.to contain_postfix__config('mynetworks').with_value('127.0.0.1/8, [::1]/128 ![::2]/128') }
it { is_expected.to contain_postfix__config('relayhost').with_value('foo') }
end
end
end
require 'spec_helper'
describe 'postfix::satellite' do
let (:node) { 'foo.example.com' }
let (:facts) { {
:augeasversion => '1.2.0',
:lsbdistcodename => 'wheezy',
:osfamily => 'Debian',
:rubyversion => '1.9.3',
:path => '/foo/bar',
} }
let :pre_condition do
" class { 'augeas': }
class { 'postfix':
......@@ -17,9 +9,21 @@ describe 'postfix::satellite' do
mynetworks => 'baz',
}"
end
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) do
facts.merge({
:augeasversion => '1.2.0',
})
end
it { is_expected.to compile.with_all_deps }
it { is_expected.to contain_class('postfix::mta') }
it { is_expected.to contain_postfix__virtual('@foo.example.com').with(
:ensure => 'present',
:destination => 'root'
) }
end
end
end
require 'spec_helper'
describe 'postfix' do
context 'when using defaults' do
context 'when on Debian' do
let (:facts) { {
:lsbdistcodename => 'wheezy',
:operatingsystem => 'Debian',
:osfamily => 'Debian',
:fqdn => 'fqdn.example.com',
:path => '/foo/bar',
} }
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) do
facts.merge({
:augeasversion => '1.2.0',
})
end
context 'when using defaults' do
it { is_expected.to contain_package('postfix') }
it { is_expected.to contain_package('mailx') }
it { is_expected.to contain_file('/etc/mailname').without('seltype').with_content("fqdn.example.com\n") }
it { is_expected.to contain_file('/etc/aliases').without('seltype').with_content("# file managed by puppet\n") }
it { is_expected.to contain_exec('newaliases').with_refreshonly('true') }
it { is_expected.to contain_file('/etc/postfix/master.cf').without('seltype') }
it { is_expected.to contain_file('/etc/postfix/main.cf').without('seltype') }
it { is_expected.to contain_postfix__config('myorigin').with_value('fqdn.example.com') }
it { is_expected.to contain_postfix__config('myorigin').with_value('foo.example.com') }
it { is_expected.to contain_postfix__config('alias_maps').with_value('hash:/etc/aliases') }
it { is_expected.to contain_postfix__config('inet_interfaces').with_value('all') }
it { is_expected.to contain_mailalias('root').with_recipient('nobody') }
case facts[:osfamily]
when 'Debian'
it { is_expected.to contain_file('/etc/mailname').without('seltype').with_content("foo.example.com\n") }
it { is_expected.to contain_file('/etc/aliases').without('seltype').with_content("# file managed by puppet\n") }
it { is_expected.to contain_file('/etc/postfix/master.cf').without('seltype') }
it { is_expected.to contain_file('/etc/postfix/main.cf').without('seltype') }
it {
is_expected.to contain_service('postfix').with(
:ensure => 'running',
......@@ -33,35 +33,18 @@ describe 'postfix' do
:hasstatus => 'true',
:restart => '/etc/init.d/postfix reload'
) }
end
context 'when on RedHat' do
let (:facts) { {
:fqdn => 'fqdn.example.com',
:operatingsystem => 'RedHat',
:operatingsystemmajrelease => '7',
:osfamily => 'RedHat',
:path => '/foo/bar',
} }
it { is_expected.to contain_package('postfix') }
it { is_expected.to contain_package('mailx') }
it { is_expected.to contain_file('/etc/mailname').with_seltype('postfix_etc_t').with_content("fqdn.example.com\n") }
else
it { is_expected.to contain_file('/etc/mailname').with_seltype('postfix_etc_t').with_content("foo.example.com\n") }
it { is_expected.to contain_file('/etc/aliases').with_seltype('postfix_etc_t').with_content("# file managed by puppet\n") }
it { is_expected.to contain_exec('newaliases').with_refreshonly('true') }
it { is_expected.to contain_file('/etc/postfix/master.cf').with_seltype('postfix_etc_t') }
it { is_expected.to contain_file('/etc/postfix/main.cf').with_seltype('postfix_etc_t') }
it { is_expected.to contain_postfix__config('myorigin').with_value('fqdn.example.com') }
it { is_expected.to contain_postfix__config('alias_maps').with_value('hash:/etc/aliases') }
it { is_expected.to contain_postfix__config('inet_interfaces').with_value('all') }
it { is_expected.to contain_postfix__config('sendmail_path') }
it { is_expected.to contain_postfix__config('newaliases_path') }
it { is_expected.to contain_postfix__config('mailq_path') }
it { is_expected.to contain_mailalias('root').with_recipient('nobody') }
case facts[:operatingsystemmajrelease]
when '7'
it {
is_expected.to contain_service('postfix').with(
:ensure => 'running',
......@@ -69,20 +52,22 @@ describe 'postfix' do
:hasstatus => 'true',
:restart => '/bin/systemctl reload postfix'
) }
else
it {
is_expected.to contain_service('postfix').with(
:ensure => 'running',
:enable => 'true',
:hasstatus => 'true',
:restart => '/etc/init.d/postfix reload'
) }
end
end
end
context 'when setting parameters' do
context 'when on Debian' do
case facts[:osfamily]
when 'Debian'
context "when setting smtp_listen to 'all'" do
let (:facts) { {
:lsbdistcodename => 'wheezy',
:operatingsystem => 'Debian',
:osfamily => 'Debian',
:fqdn => 'fqdn.example.com',
:path => '/foo/bar',
} }
let (:params) { {
:smtp_listen => 'all',
:root_mail_recipient => 'foo',
......@@ -102,7 +87,7 @@ describe 'postfix' do
it { is_expected.to contain_package('postfix') }
it { is_expected.to contain_package('mailx') }
it { is_expected.to contain_file('/etc/mailname').without('seltype').with_content("fqdn.example.com\n") }
it { is_expected.to contain_file('/etc/mailname').without('seltype').with_content("foo.example.com\n") }
it { is_expected.to contain_file('/etc/aliases').without('seltype').with_content("# file managed by puppet\n") }
it { is_expected.to contain_exec('newaliases').with_refreshonly('true') }
it {
......@@ -142,17 +127,7 @@ describe 'postfix' do
:restart => '/etc/init.d/postfix reload'
) }
end
end
context 'when on RedHat' do
let (:facts) { {
:augeasversion => '1.2.0',
:lsbdistcodename => 'wheezy',
:operatingsystem => 'Debian',
:osfamily => 'Debian',
:rubyversion => '1.9.7',
:fqdn => 'fqdn.example.com',
:path => '/foo/bar',
} }
else
context 'when specifying inet_interfaces' do
let (:params) { {
:inet_interfaces => 'localhost2'
......@@ -171,7 +146,7 @@ describe 'postfix' do
:mail_user => 'bar'
} }
it 'should adjust the content of /etc/postfix/master.cf specifying the user' do
is_expected.to contain_file('/etc/postfix/master.cf').without('seltype').with_content(/user=bar/)
is_expected.to contain_file('/etc/postfix/master.cf').with_seltype('postfix_etc_t').with_content(/user=bar/)
end
end
context 'when mailman is true' do
......@@ -196,7 +171,7 @@ describe 'postfix' do
-o smtpd_client_restrictions=check_client_access,hash:/etc/postfix/access,reject",
} }
it 'should update master.cf with the specified flags to smtp' do
is_expected.to contain_file('/etc/postfix/master.cf').without('seltype').with_content(
is_expected.to contain_file('/etc/postfix/master.cf').with_seltype('postfix_etc_t').with_content(
/smtp inet n - - - - smtpd/).with_content(
/^smtp.*\n.*smtpd_client_restrictions=check_client_access,hash:/
)
......@@ -305,4 +280,6 @@ describe 'postfix' do
end
end
end
end
end
end
......@@ -2,14 +2,17 @@ require 'spec_helper'
describe 'postfix::config' do
let (:title) { 'foo' }
let (:facts) { {
:lsbdistcodename => 'wheezy',
:osfamily => 'Debian',
} }
let :pre_condition do
"class { 'postfix': }"
end
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) do
facts
end
context 'when not passing value' do
it 'should fail' do
expect {
......@@ -91,4 +94,6 @@ describe 'postfix::config' do
:changes => "clear foo"
) }
end
end
end
end
......@@ -2,15 +2,17 @@ require 'spec_helper'
describe 'postfix::hash' do
let (:title) { '/tmp/foo' }
let (:facts) { {
:lsbdistcodename => 'wheezy',
:osfamily => 'Debian',
:path => '/foo/bar',
} }
let :pre_condition do
"class { '::postfix': }"
end
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) do
facts
end
context 'when passing wrong type for ensure' do
let (:params) { {
:ensure => ['present'],
......@@ -101,4 +103,6 @@ describe 'postfix::hash' do
it { is_expected.to contain_file('/tmp/foo.db').with_ensure('absent') }
it { is_expected.to contain_exec('generate /tmp/foo.db') }
end
end
end
end
......@@ -2,14 +2,17 @@ require 'spec_helper'
describe 'postfix::transport' do
let (:title) { 'foo' }
let (:facts) { {
:augeasversion => '1.2.0',
:osfamily => 'Debian',
:rubyversion => '1.9.3',
:path => '/foo/bar',
} }
let :pre_condition do
"class { 'augeas': }"
"class { '::augeas': }"
end
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) do
facts.merge({
:augeasversion => '1.2.0',
})
end
context 'when sending wrong type for destination' do
......@@ -137,4 +140,6 @@ describe 'postfix::transport' do
])
}
end
end
end
end
......@@ -2,14 +2,17 @@ require 'spec_helper'
describe 'postfix::virtual' do
let (:title) { 'foo' }
let (:facts) { {
:augeasversion => '1.2.0',
:osfamily => 'Debian',
:rubyversion => '1.9.3',
:path => '/foo/bar',
} }
let :pre_condition do
"class { 'augeas': }"
"class { '::augeas': }"
end
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) do
facts.merge({
:augeasversion => '1.2.0',
})
end
context 'when not sending destination' do
......@@ -133,4 +136,6 @@ describe 'postfix::virtual' do
])
}
end
end
end
end
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment