diff options
Diffstat (limited to 'puppet/modules/ntp/spec/classes')
| m--------- | puppet/modules/ntp | 9 | ||||
| -rw-r--r-- | puppet/modules/ntp/spec/classes/ntp_spec.rb | 261 | 
2 files changed, 261 insertions, 9 deletions
| diff --git a/puppet/modules/ntp b/puppet/modules/ntp deleted file mode 160000 -Subproject 27f2bc72110b1001233eb0907aa07e06cdf3319 diff --git a/puppet/modules/ntp/spec/classes/ntp_spec.rb b/puppet/modules/ntp/spec/classes/ntp_spec.rb new file mode 100644 index 00000000..6c636f40 --- /dev/null +++ b/puppet/modules/ntp/spec/classes/ntp_spec.rb @@ -0,0 +1,261 @@ +require 'spec_helper' + +describe 'ntp' do + +  ['Debian', 'RedHat','SuSE', 'FreeBSD', 'Archlinux', 'Gentoo'].each do |system| +    if system == 'Gentoo' +      let(:facts) {{ :osfamily => 'Linux', :operatingsystem => system }} +    else +      let(:facts) {{ :osfamily => system }} +    end + +    it { should include_class('ntp::install') } +    it { should include_class('ntp::config') } +    it { should include_class('ntp::service') } + +    describe 'ntp::config on #{system}' do +      it { should contain_file('/etc/ntp.conf').with_owner('0') } +      it { should contain_file('/etc/ntp.conf').with_group('0') } +      it { should contain_file('/etc/ntp.conf').with_mode('0644') } + +      describe 'allows template to be overridden' do +        let(:params) {{ :config_template => 'my_ntp/ntp.conf.erb' }} +        it { should contain_file('/etc/ntp.conf').with({ +          'content' => /server foobar/}) +        } +      end + +      describe "keys for osfamily #{system}" do +        context "when enabled" do +          let(:params) {{ +            :keys_enable     => true, +            :keys_file       => '/etc/ntp/ntp.keys', +            :keys_trusted    => ['1', '2', '3'], +            :keys_controlkey => '2', +            :keys_requestkey => '3', +          }} + +          it { should contain_file('/etc/ntp').with({ +            'ensure'  => 'directory'}) +          } +          it { should contain_file('/etc/ntp.conf').with({ +            'content' => /trustedkey 1 2 3/}) +          } +          it { should contain_file('/etc/ntp.conf').with({ +            'content' => /controlkey 2/}) +          } +          it { should contain_file('/etc/ntp.conf').with({ +            'content' => /requestkey 3/}) +          } +        end +      end + +      context "when disabled" do +        let(:params) {{ +          :keys_enable     => false, +          :keys_file       => '/etc/ntp/ntp.keys', +          :keys_trusted    => ['1', '2', '3'], +          :keys_controlkey => '2', +          :keys_requestkey => '3', +        }} + +        it { should_not contain_file('/etc/ntp').with({ +          'ensure'  => 'directory'}) +        } +        it { should_not contain_file('/etc/ntp.conf').with({ +          'content' => /trustedkey 1 2 3/}) +        } +        it { should_not contain_file('/etc/ntp.conf').with({ +          'content' => /controlkey 2/}) +        } +        it { should_not contain_file('/etc/ntp.conf').with({ +          'content' => /requestkey 3/}) +        } +      end + +      describe 'preferred servers' do +        context "when set" do +          let(:params) {{ +            :servers           => ['a', 'b', 'c', 'd'], +            :preferred_servers => ['a', 'b'] +          }} + +          it { should contain_file('/etc/ntp.conf').with({ +            'content' => /server a prefer\nserver b prefer\nserver c\nserver d/}) +          } +        end +        context "when not set" do +          let(:params) {{ +            :servers           => ['a', 'b', 'c', 'd'], +            :preferred_servers => [] +          }} + +          it { should_not contain_file('/etc/ntp.conf').with({ +            'content' => /server a prefer/}) +          } +        end +      end + +      describe 'ntp::install on #{system}' do +        let(:params) {{ :package_ensure => 'present', :package_name => ['ntp'], }} + +        it { should contain_package('ntp').with( +          :ensure => 'present', +          :name   => 'ntp' +        )} + +        describe 'should allow package ensure to be overridden' do +          let(:params) {{ :package_ensure => 'latest', :package_name => ['ntp'] }} +          it { should contain_package('ntp').with_ensure('latest') } +        end + +        describe 'should allow the package name to be overridden' do +          let(:params) {{ :package_ensure => 'present', :package_name => ['hambaby'] }} +          it { should contain_package('ntp').with_name('hambaby') } +        end +      end + +      describe 'ntp::service' do +        let(:params) {{ +          :service_manage => true, +          :service_enable => true, +          :service_ensure => 'running', +          :service_name   => 'ntp' +        }} + +        describe 'with defaults' do +          it { should contain_service('ntp').with( +            :enable => true, +            :ensure => 'running', +            :name   => 'ntp' +          )} +        end + +        describe 'service_ensure' do +          describe 'when overridden' do +            let(:params) {{ :service_name => 'ntp', :service_ensure => 'stopped' }} +            it { should contain_service('ntp').with_ensure('stopped') } +          end +        end + +        describe 'service_manage' do +          let(:params) {{ +            :service_manage => false, +            :service_enable => true, +            :service_ensure => 'running', +            :service_name   => 'ntpd', +          }} + +          it 'when set to false' do +            should_not contain_service('ntp').with({ +              'enable' => true, +              'ensure' => 'running', +              'name'   => 'ntpd' +            }) +          end +        end +      end +    end + +    context 'ntp::config' do +      describe "for operating system Gentoo" do +        let(:facts) {{ :operatingsystem => 'Gentoo', +                       :osfamily        => 'Linux' }} + +        it 'uses the NTP pool servers by default' do +          should contain_file('/etc/ntp.conf').with({ +            'content' => /server \d.gentoo.pool.ntp.org/, +          }) +        end +      end +      describe "on osfamily Debian" do +        let(:facts) {{ :osfamily => 'debian' }} + +        it 'uses the debian ntp servers by default' do +          should contain_file('/etc/ntp.conf').with({ +            'content' => /server \d.debian.pool.ntp.org iburst/, +          }) +        end +      end + +      describe "on osfamily RedHat" do +        let(:facts) {{ :osfamily => 'RedHat' }} + +        it 'uses the redhat ntp servers by default' do +          should contain_file('/etc/ntp.conf').with({ +            'content' => /server \d.centos.pool.ntp.org/, +          }) +        end +      end + +      describe "on osfamily SuSE" do +        let(:facts) {{ :osfamily => 'SuSE' }} + +        it 'uses the opensuse ntp servers by default' do +          should contain_file('/etc/ntp.conf').with({ +            'content' => /server \d.opensuse.pool.ntp.org/, +          }) +        end +      end + +      describe "on osfamily FreeBSD" do +        let(:facts) {{ :osfamily => 'FreeBSD' }} + +        it 'uses the freebsd ntp servers by default' do +          should contain_file('/etc/ntp.conf').with({ +            'content' => /server \d.freebsd.pool.ntp.org iburst maxpoll 9/, +          }) +        end +      end + +      describe "on osfamily ArchLinux" do +        let(:facts) {{ :osfamily => 'ArchLinux' }} + +        it 'uses the NTP pool servers by default' do +          should contain_file('/etc/ntp.conf').with({ +            'content' => /server \d.pool.ntp.org/, +          }) +        end +      end + +      describe "for operating system family unsupported" do +        let(:facts) {{ +          :osfamily  => 'unsupported', +        }} + +        it { expect{ subject }.to raise_error( +          /^The ntp module is not supported on an unsupported based system./ +        )} +      end +    end + +    describe 'for virtual machines' do +      let(:facts) {{ :osfamily        => 'Archlinux', +                     :is_virtual      => 'true' }} + +      it 'should not use local clock as a time source' do +        should_not contain_file('/etc/ntp.conf').with({ +          'content' => /server.*127.127.1.0.*fudge.*127.127.1.0 stratum 10/, +        }) +      end + +      it 'allows large clock skews' do +        should contain_file('/etc/ntp.conf').with({ +          'content' => /tinker panic 0/, +        }) +      end +    end + +    describe 'for physical machines' do +      let(:facts) {{ :osfamily        => 'Archlinux', +                     :is_virtual      => 'false' }} + +      it 'disallows large clock skews' do +        should_not contain_file('/etc/ntp.conf').with({ +          'content' => /tinker panic 0/, +        }) +      end +    end +  end + +end | 
