From 0d87be43451920f3bdea2037f79504d61047f405 Mon Sep 17 00:00:00 2001 From: Ashley Penney Date: Tue, 9 Jul 2013 11:27:17 -0400 Subject: Rewrite the spec tests to cover the 4 different classes and improve a few missing gaps in the testing. --- spec/classes/ntp_config_spec.rb | 161 ++++++++++++++++++++++++++++++++++++ spec/classes/ntp_install_spec.rb | 72 ++++++++++++++++ spec/classes/ntp_service_spec.rb | 73 ++++++++++++++++ spec/classes/ntp_spec.rb | 174 ++------------------------------------- 4 files changed, 313 insertions(+), 167 deletions(-) create mode 100644 spec/classes/ntp_config_spec.rb create mode 100644 spec/classes/ntp_install_spec.rb create mode 100644 spec/classes/ntp_service_spec.rb (limited to 'spec') diff --git a/spec/classes/ntp_config_spec.rb b/spec/classes/ntp_config_spec.rb new file mode 100644 index 0000000..ddb9be9 --- /dev/null +++ b/spec/classes/ntp_config_spec.rb @@ -0,0 +1,161 @@ +require 'spec_helper' + +describe 'ntp::config' do + + def param_value(subject, type, title, param) + catalogue.resource(type, title).send(:parameters)[param.to_sym] + end + + let(:params) {{:servers => 'fake.pool.ntp.org'} } + + describe 'test platform specific resources' do + + describe "for operating system family Debian" do + + let(:params) {{}} + let(:facts) {{ :osfamily => 'debian' }} + + it 'should use the debian ntp servers by default' do + content = param_value(subject, 'file', '/etc/ntp.conf', 'content') + expected_lines = ['server 0.debian.pool.ntp.org iburst', + 'server 1.debian.pool.ntp.org iburst', + 'server 2.debian.pool.ntp.org iburst', + 'server 3.debian.pool.ntp.org iburst'] + (content.split("\n") & expected_lines).should == expected_lines + end + + it 'should use different restrict settings if set' do + params[:restrict] == '127.0.0.1' + content = param_value(subject, 'file', '/etc/ntp.conf', 'content') + expected_lines = ['restrict 127.0.0.1'] + (content.split("\n") & expected_lines).should == expected_lines + end + end + + describe "for operating system family RedHat" do + + let(:params) {{}} + let(:facts) {{ :osfamily => 'redhat' }} + + it 'should use the redhat ntp servers by default' do + content = param_value(subject, 'file', '/etc/ntp.conf', 'content') + expected_lines = [ + 'server 0.centos.pool.ntp.org', + 'server 1.centos.pool.ntp.org', + 'server 2.centos.pool.ntp.org'] + (content.split("\n") & expected_lines).should == expected_lines + end + end + + describe "for operating system family SuSE" do + + let(:params) {{}} + let(:facts) {{ :osfamily => 'suse' }} + + it 'should use the opensuse ntp servers by default' do + content = param_value(subject, 'file', '/etc/ntp.conf', 'content') + expected_lines = [ + 'server 0.opensuse.pool.ntp.org', + 'server 1.opensuse.pool.ntp.org', + 'server 2.opensuse.pool.ntp.org', + 'server 3.opensuse.pool.ntp.org'] + (content.split("\n") & expected_lines).should == expected_lines + end + end + + describe "for operating system family FreeBSD" do + + let(:params) {{}} + let(:facts) {{ :osfamily => 'freebsd' }} + + it 'should use the freebsd ntp servers by default' do + content = param_value(subject, 'file', '/etc/ntp.conf', 'content') + expected_lines = [ + "server 0.freebsd.pool.ntp.org iburst maxpoll 9", + "server 1.freebsd.pool.ntp.org iburst maxpoll 9", + "server 2.freebsd.pool.ntp.org iburst maxpoll 9", + "server 3.freebsd.pool.ntp.org iburst maxpoll 9"] + (content.split("\n") & expected_lines).should == expected_lines + 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(:params) {{}} + let(:facts) {{ :operatingsystem => 'Archlinux', + :osfamily => 'Linux', + :isvirtual => 'false' }} + + it 'should not use local clock as a time source' do + content = param_value(subject, 'file', '/etc/ntp.conf', 'content') + expected_lines = [ + 'server 127.127.1.0 # local clock', + 'fudge 127.127.1.0 stratum 10' ] + (content.split("\n") & expected_lines).should_not == expected_lines + end + end + + describe "for operating system Archlinux" do + + let(:params) {{}} + let(:facts) {{ :operatingsystem => 'Archlinux', + :osfamily => 'Linux' }} + + + it 'should use the NTP pool servers by default' do + content = param_value(subject, 'file', '/etc/ntp.conf', 'content') + expected_lines = [ + "server 0.pool.ntp.org", + "server 1.pool.ntp.org", + "server 2.pool.ntp.org"] + (content.split("\n") & expected_lines).should == expected_lines + end + end + + describe "for operating system Gentoo" do + + let(:params) {{}} + let(:facts) {{ :operatingsystem => 'Gentoo', + :osfamily => 'Linux' }} + + + it 'should use the NTP pool servers by default' do + content = param_value(subject, 'file', '/etc/ntp.conf', 'content') + expected_lines = [ + "server 0.gentoo.pool.ntp.org", + "server 1.gentoo.pool.ntp.org", + "server 2.gentoo.pool.ntp.org", + "server 3.gentoo.pool.ntp.org"] + (content.split("\n") & expected_lines).should == expected_lines + end + end + + ['Debian', 'RedHat','SuSE', 'FreeBSD'].each do |osfamily| + describe "for operating system family #{osfamily}" do + + let(:facts) {{ :osfamily => osfamily }} + + 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') } + it 'should allow template to be overridden' do + params[:config_template] = 'my_ntp/ntp.conf.erb' + content = param_value(subject, 'file', '/etc/ntp.conf', 'content') + expected_lines = ['server foobar'] + (content.split("\n") & expected_lines).should == expected_lines + end + end + end + end +end diff --git a/spec/classes/ntp_install_spec.rb b/spec/classes/ntp_install_spec.rb new file mode 100644 index 0000000..2102878 --- /dev/null +++ b/spec/classes/ntp_install_spec.rb @@ -0,0 +1,72 @@ +require 'spec_helper' + +describe 'ntp::install' do + + ['Debian', 'RedHat', 'SuSE', 'FreeBSD'].each do |osfamily| + describe "for osfamily #{osfamily}" do + + let(:facts) {{ :osfamily => osfamily }} + let(:params) {{ + :package_ensure => 'present', + :package_name => 'ntp', + }} + + it { should contain_package('ntp').with( + :ensure => 'present', + :name => 'ntp' + )} + + it 'should allow package ensure to be overridden' do + params[:package_ensure] = 'latest' + subject.should contain_package('ntp').with_ensure('latest') + end + + it 'should allow the package name to be overridden' do + params[:package_name] = 'hambaby' + subject.should contain_package('ntp').with_name('hambaby') + end + + end + end + + describe "for distribution gentoo" do + + let(:facts) {{ :osfamily => 'Linux', :operatingsystem => 'Gentoo' }} + let(:params) {{ + :package_ensure => 'present', + :package_name => 'net-misc/ntp', + }} + + it { should contain_package('ntp').with( + :ensure => 'present', + :name => 'net-misc/ntp' + )} + + it 'should allow package ensure to be overridden' do + params[:package_ensure] = 'latest' + subject.should contain_package('ntp').with_ensure('latest') + end + + end + + describe "for distribution archlinux" do + + let(:facts) {{ :osfamily => 'Linux', :operatingsystem => 'ArchLinux' }} + let(:params) {{ + :package_ensure => 'present', + :package_name => 'ntp', + }} + + it { should contain_package('ntp').with( + :ensure => 'present', + :name => 'ntp' + )} + + it 'should allow package ensure to be overridden' do + params[:package_ensure] = 'latest' + subject.should contain_package('ntp').with_ensure('latest') + end + + end + +end diff --git a/spec/classes/ntp_service_spec.rb b/spec/classes/ntp_service_spec.rb new file mode 100644 index 0000000..7ce1717 --- /dev/null +++ b/spec/classes/ntp_service_spec.rb @@ -0,0 +1,73 @@ +require 'spec_helper' + +describe 'ntp::service' do + + ['Debian', 'RedHat', 'SuSE', 'FreeBSD'].each do |osfamily| + describe "for osfamily #{osfamily}" do + + let(:facts) {{ :osfamily => osfamily }} + let(:params) {{ + :service_manage => true, + :service_enable => true, + :service_ensure => 'running', + :service_name => 'ntp' + }} + + it { should contain_service('ntp').with( + :enable => true, + :ensure => 'running', + :name => 'ntp' + )} + + it 'should allow service ensure to be overridden' do + params[:service_ensure] = 'stopped' + subject.should contain_service('ntp').with_ensure('stopped') + end + end + end + + ['ArchLinux', 'Gentoo'].each do |operatingsystem| + describe "for distribution #{operatingsystem}" do + + let(:facts) {{ :osfamily => 'Linux', :operatingsystem => operatingsystem }} + let(:params) {{ + :service_manage => true, + :service_enable => true, + :service_ensure => 'running', + :service_name => 'ntpd' } + } + + it 'should contain service' do + should contain_service('ntp').with( + :enable => true, + :ensure => 'running', + :name => 'ntpd') + end + + it 'should allow service ensure to be overridden' do + params[:service_ensure] = 'stopped' + subject.should contain_service('ntp').with_ensure('stopped') + end + + end + end + + describe "isn't managed if service_manage is false" do + + let(:facts) {{ :osfamily => 'Debian' }} + + let(:params) {{ + :service_manage => false, + :service_enable => true, + :service_ensure => 'running', + :service_name => 'ntpd', + }} + + it { should_not contain_service('ntp').with( + :enable => true, + :ensure => 'running', + :name => 'ntpd' + )} + end + +end diff --git a/spec/classes/ntp_spec.rb b/spec/classes/ntp_spec.rb index 65d8e3b..4ffd817 100644 --- a/spec/classes/ntp_spec.rb +++ b/spec/classes/ntp_spec.rb @@ -1,175 +1,15 @@ -#!/usr/bin/env rspec require 'spec_helper' describe 'ntp' do - def param_value(subject, type, title, param) - catalogue.resource(type, title).send(:parameters)[param.to_sym] - end + let(:facts) {{ :osfamily => 'Debian' }} - let(:params) { {:servers => 'fake.pool.ntp.org'} } + it { should include_class('ntp::install') } + it { should include_class('ntp::config') } + it { should include_class('ntp::service') } - describe 'test platform specific resources' do + # These are currently breaking for me. + #it { should have_class_count(3) } + #it { should have_resource_count(0) } - describe "for operating system family Debian" do - - let(:params) {{}} - let(:facts) { { :osfamily => 'debian' } } - - it { should contain_service('ntp').with_name('ntp') } - it 'should use the debian ntp servers by default' do - content = param_value(subject, 'file', '/etc/ntp.conf', 'content') - expected_lines = ['server 0.debian.pool.ntp.org iburst', - 'server 1.debian.pool.ntp.org iburst', - 'server 2.debian.pool.ntp.org iburst', - 'server 3.debian.pool.ntp.org iburst'] - (content.split("\n") & expected_lines).should == expected_lines - end - end - - describe "for operating system family RedHat" do - - let(:params) {{}} - let(:facts) { { :osfamily => 'redhat' } } - - it { should contain_service('ntp').with_name('ntpd') } - it 'should use the redhat ntp servers by default' do - content = param_value(subject, 'file', '/etc/ntp.conf', 'content') - expected_lines = [ - 'server 0.centos.pool.ntp.org', - 'server 1.centos.pool.ntp.org', - 'server 2.centos.pool.ntp.org'] - (content.split("\n") & expected_lines).should == expected_lines - end - end - - describe "for operating system family SuSE" do - - let(:params) {{}} - let(:facts) { { :osfamily => 'suse' } } - - it { should contain_service('ntp').with_name('ntp') } - it 'should use the opensuse ntp servers by default' do - content = param_value(subject, 'file', '/etc/ntp.conf', 'content') - expected_lines = [ - 'server 0.opensuse.pool.ntp.org', - 'server 1.opensuse.pool.ntp.org', - 'server 2.opensuse.pool.ntp.org', - 'server 3.opensuse.pool.ntp.org'] - (content.split("\n") & expected_lines).should == expected_lines - end - end - - describe "for operating system family FreeBSD" do - - let(:params) {{}} - let(:facts) { { :osfamily => 'freebsd' } } - - it { should contain_service('ntp').with_name('ntpd') } - it 'should use the freebsd ntp servers by default' do - content = param_value(subject, 'file', '/etc/ntp.conf', 'content') - expected_lines = [ - "server 0.freebsd.pool.ntp.org iburst maxpoll 9", - "server 1.freebsd.pool.ntp.org iburst maxpoll 9", - "server 2.freebsd.pool.ntp.org iburst maxpoll 9", - "server 3.freebsd.pool.ntp.org iburst maxpoll 9"] - (content.split("\n") & expected_lines).should == expected_lines - 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(:params) {{}} - let(:facts) { { :operatingsystem => 'Archlinux', - :osfamily => 'Linux', - :isvirtual => 'false' } } - - it 'should not use local clock as a time source' do - content = param_value(subject, 'file', '/etc/ntp.conf', 'content') - expected_lines = [ - 'server 127.127.1.0 # local clock', - 'fudge 127.127.1.0 stratum 10' ] - (content.split("\n") & expected_lines).should_not == expected_lines - end - end - - describe "for operating system Archlinux" do - - let(:params) {{}} - let(:facts) { { :operatingsystem => 'Archlinux', - :osfamily => 'Linux' } } - - it { should contain_service('ntp').with_name('ntpd') } - it { should contain_package('ntp').with_ensure('present') } - - it 'should use the NTP pool servers by default' do - content = param_value(subject, 'file', '/etc/ntp.conf', 'content') - expected_lines = [ - "server 0.pool.ntp.org", - "server 1.pool.ntp.org", - "server 2.pool.ntp.org"] - (content.split("\n") & expected_lines).should == expected_lines - end - end - - describe "for operating system Gentoo" do - - let(:params) {{}} - let(:facts) { { :operatingsystem => 'Gentoo', - :osfamily => 'Linux' } } - - it { should contain_service('ntp').with_name('ntpd') } - it { should contain_package('ntp').with_name('net-misc/ntp').with_ensure('present') } - - it 'should use the NTP pool servers by default' do - content = param_value(subject, 'file', '/etc/ntp.conf', 'content') - expected_lines = [ - "server 0.gentoo.pool.ntp.org", - "server 1.gentoo.pool.ntp.org", - "server 2.gentoo.pool.ntp.org", - "server 3.gentoo.pool.ntp.org"] - (content.split("\n") & expected_lines).should == expected_lines - end - end - - ['Debian', 'RedHat','SuSE', 'FreeBSD'].each do |osfamily| - describe "for operating system family #{osfamily}" do - - let(:facts) { { :osfamily => osfamily } } - - 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') } - it { should contain_package('ntp').with_ensure('present') } - it { should contain_service('ntp').with_ensure('running') } - it { should contain_service('ntp').with_hasstatus(true) } - it { should contain_service('ntp').with_hasrestart(true) } - it 'should allow service ensure to be overridden' do - params[:ensure_service] = 'stopped' - subject.should contain_service('ntp').with_ensure('stopped') - end - it 'should allow package ensure to be overridden' do - params[:ensure_package] = 'latest' - subject.should contain_package('ntp').with_ensure('latest') - end - it 'should allow template to be overridden' do - params[:config_template] = 'my_ntp/ntp.conf.erb' - content = param_value(subject, 'file', '/etc/ntp.conf', 'content') - expected_lines = ['server foobar'] - (content.split("\n") & expected_lines).should == expected_lines - end - end - end - end end -- cgit v1.2.3