Commit 1f9b92f3 authored by Raphaël Pinson's avatar Raphaël Pinson
Browse files

Merge pull request #1 from wolfspyre/dev/refactor

addition to specs..
parents 2e6c7bf5 e2eaa41d
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@
#
# [*master_submission*]   - (string)
#
# [*mta*]                 - (boolean) Whether to use as MTA
# [*mta*]                 - (boolean) Configure postfix minimally, as a simple MTA
#
# [*mydestination*]       - (string)
#
@@ -140,10 +140,16 @@ class postfix (
  }

  if $mta {
    if $satellite {
      fail('enabling both the $mta and $satellite parameters is not supported. Please disable one.')
    }
    include ::postfix::mta
  }

  if $satellite {
    if $mta {
      fail('enabling both the $mta and $satellite parameters is not supported. Please disable one.')
    }
    include ::postfix::satellite
  }

+154 −0
Original line number Diff line number Diff line
@@ -137,5 +137,159 @@ describe 'postfix' do
        ) }
      end
    end
    context 'when on RedHat' do
      let (:facts) { {
        :operatingsystem => 'Debian',
        :osfamily        => 'Debian',
        :fqdn            => 'fqdn.example.com',
      } }
      context 'when specifying inet_interfaces' do
        let (:params) { {
          :inet_interfaces => 'localhost2'
        } }
        it 'should create a postfix::config defined type with inet_interfaces specified properly' do
          should contain_postfix__config('inet_interfaces').with_value('localhost2')
        end
      end
      context 'when enabling ldap' do
        it 'should do stuff' do
          pending 'need to write this still'
        end
      end
      context 'when a custom mail_user is specified' do
        let (:params) { {
          :mail_user => 'bar'
        } }
        it 'should adjust the content of /etc/postfix/master.cf specifying the user' do
          should contain_file('/etc/postfix/master.cf').without('seltype').with_content(/user=bar/)
        end
      end
      context 'when mailman is true' do
        let (:params) { {
          :mailman => true
        } }
        it 'should do stuff' do
          pending 'need to write this still'
        end
      end
      context 'when specifying a custom mastercf_source' do
        let (:params) { {
          :mastercf_source => 'testy'
        } }
        it 'should do stuff' do
          pending 'need to write this still'
        end
      end
      context 'when specifying a custom master_smtp' do
        let (:params) { {
          :master_smtp         => "smtp      inet  n       -       -       -       -       smtpd
    -o smtpd_client_restrictions=check_client_access,hash:/etc/postfix/access,reject",
        } }
        it 'should update master.cf with the specified flags to smtp' do 
          should contain_file('/etc/postfix/master.cf').without('seltype').with_content(
            /smtp      inet  n       -       -       -       -       smtpd/).with_content(
            /^smtp.*\n.*smtpd_client_restrictions=check_client_access,hash:/
          )
        end
      end
      context 'when specifying a custom master_smtps' do
        let (:params) { {
          :master_smtps        => 'smtps     inet  n       -       -       -       -       smtpd'
        } }
        it 'should update master.cf with the specified flags to smtps' do
          should contain_file('/etc/postfix/master.cf').with_content(/^smtps     inet  n/)
        end
      end
      context 'when mta is enabled' do
        let (:params) { { :mta => true, :mydestination => '1.2.3.4', :relayhost => '2.3.4.5' } }
        it 'should configure postfix as a minimal MTA, delivering mail to the mydestination param' do
          should contain_postfix__config('mydestination').with_value('1.2.3.4')
          should contain_postfix__config('mynetworks').with_value('127.0.0.0/8')
          should contain_postfix__config('relayhost').with_value('2.3.4.5')
          should contain_postfix__config('virtual_alias_maps').with_value('hash:/etc/postfix/virtual')
          should contain_postfix__config('transport_maps').with_value('hash:/etc/postfix/transport')
        end
        it { should include_class('postfix::mta') }
        context 'and satellite is also enabled' do
          let (:params) { { :mta => true, :satellite => true, :mydestination => '1.2.3.4', :relayhost => '2.3.4.5' } }
          it 'should fail' do
            expect {subject}.to raise_error(Puppet::Error, /Please disable one/)
          end
        end
      end
      context 'when specifying mydesitination' do
        it 'should do stuff' do
          pending 'need to write this still'
        end
      end
      context 'when specifying mynetworks' do
        it 'should do stuff' do
          pending 'need to write this still'
        end
      end
      context 'when specifying myorigin' do
        let (:params) { { :myorigin => 'localhost'} }
        it 'should create a postfix::config defined type with myorigin specified properly' do
          should contain_postfix__config('myorigin').with_value('localhost')
        end
      end
      context 'when specifying relayhost' do
        it 'should do stuff' do
          pending 'need to write this still'
        end
      end
      context 'when specifying a root_mail_recipient' do
        let (:params) { { :root_mail_recipient => 'foo'} }
        it 'should contain a Mailalias resource directing roots mail to the required user' do
          should contain_mailalias('root').with_recipient('foo')
        end
      end
      context 'when specifying satellite' do
        let (:params) { { :satellite => true, :mydestination => '1.2.3.4', :relayhost => '2.3.4.5' } }
        it 'should configure all local email to be forwarded to $root_mail_recipient delivered through $relayhost' do
          should contain_postfix__config('mydestination').with_value('1.2.3.4')
          should contain_postfix__config('mynetworks').with_value('127.0.0.0/8')
          should contain_postfix__config('relayhost').with_value('2.3.4.5')
          should contain_postfix__config('virtual_alias_maps').with_value('hash:/etc/postfix/virtual')
          should contain_postfix__config('transport_maps').with_value('hash:/etc/postfix/transport')
        end
        context 'and mta is also enabled' do
          let (:params) { { :mta => true, :satellite => true, :mydestination => '1.2.3.4', :relayhost => '2.3.4.5' } }
          it 'should fail' do
            expect {subject}.to raise_error(Puppet::Error, /Please disable one/)
          end
        end
      end
      context 'when specifying smtp_listen' do
        let (:params) { { :smtp_listen => 'all' } }
        it 'should do stuff' do
          pending 'need to write this still'
        end
      end
      context 'when use_amavisd is true' do
        let (:params) { { :use_amavisd => true } }
        it 'should update master.cf with the specified flags to amavis' do
          should contain_file('/etc/postfix/master.cf').with_content(/amavis unix/)
        end
      end
      context 'when use_dovecot_lda is true' do
        let (:params) { { :use_dovecot_lda => true } }
        it 'should update master.cf with the specified flags to dovecot' do
          should contain_file('/etc/postfix/master.cf').with_content(/dovecot.*\n.* user=vmail:vmail /)
        end
      end
      context 'when use_schleuder is true' do
        let (:params) { { :use_schleuder => true } }
        it 'should update master.cf with the specified flags to schleuder' do
          should contain_file('/etc/postfix/master.cf').with_content(/schleuder/)
        end
      end
      context 'when use_sympa is true' do
        let (:params) { { :use_sympa => true } }
        it 'should update master.cf to include sympa' do
          should contain_file('/etc/postfix/master.cf').with_content(/sympa/)
        end
      end
    end
  end
end
+2 −2

File changed.

Contains only whitespace changes.

+1 −1

File changed.

Contains only whitespace changes.