diff modules/concat/spec/acceptance/concat_spec.rb @ 0:956e484adc12

Initial public release of Puppet configs
author IBBoard <dev@ibboard.co.uk>
date Sat, 16 Aug 2014 19:47:38 +0000
parents
children 37675581a273
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/concat/spec/acceptance/concat_spec.rb	Sat Aug 16 19:47:38 2014 +0000
@@ -0,0 +1,204 @@
+require 'spec_helper_acceptance'
+
+describe 'basic concat test' do
+
+  shared_examples 'successfully_applied' do |pp|
+    it 'applies the manifest twice with no stderr' do
+      expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("")
+      expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("")
+    end
+
+    describe file("#{default['puppetvardir']}/concat") do
+      it { should be_directory }
+      it { should be_owned_by 'root' }
+      it { should be_grouped_into 'root' }
+      it { should be_mode 755 }
+    end
+    describe file("#{default['puppetvardir']}/concat/bin") do
+      it { should be_directory }
+      it { should be_owned_by 'root' }
+      it { should be_grouped_into 'root' }
+      it { should be_mode 755 }
+    end
+    describe file("#{default['puppetvardir']}/concat/bin/concatfragments.sh") do
+      it { should be_file }
+      it { should be_owned_by 'root' }
+      #it { should be_grouped_into 'root' }
+      it { should be_mode 755 }
+    end
+    describe file("#{default['puppetvardir']}/concat/_tmp_concat_file") do
+      it { should be_directory }
+      it { should be_owned_by 'root' }
+      it { should be_grouped_into 'root' }
+      it { should be_mode 750 }
+    end
+    describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments") do
+      it { should be_directory }
+      it { should be_owned_by 'root' }
+      it { should be_grouped_into 'root' }
+      it { should be_mode 750 }
+    end
+    describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments.concat") do
+      it { should be_file }
+      it { should be_owned_by 'root' }
+      it { should be_grouped_into 'root' }
+      it { should be_mode 640 }
+    end
+    describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments.concat.out") do
+      it { should be_file }
+      it { should be_owned_by 'root' }
+      it { should be_grouped_into 'root' }
+      it { should be_mode 640 }
+    end
+  end
+
+  context 'owner/group root' do
+    pp = <<-EOS
+      concat { '/tmp/concat/file':
+        owner => 'root',
+        group => 'root',
+        mode  => '0644',
+      }
+
+      concat::fragment { '1':
+        target  => '/tmp/concat/file',
+        content => '1',
+        order   => '01',
+      }
+
+      concat::fragment { '2':
+        target  => '/tmp/concat/file',
+        content => '2',
+        order   => '02',
+      }
+    EOS
+
+    it_behaves_like 'successfully_applied', pp
+
+    describe file('/tmp/concat/file') do
+      it { should be_file }
+      it { should be_owned_by 'root' }
+      it { should be_grouped_into 'root' }
+      it { should be_mode 644 }
+      it { should contain '1' }
+      it { should contain '2' }
+    end
+    describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments/01_1") do
+      it { should be_file }
+      it { should be_owned_by 'root' }
+      it { should be_grouped_into 'root' }
+      it { should be_mode 640 }
+    end
+    describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments/02_2") do
+      it { should be_file }
+      it { should be_owned_by 'root' }
+      it { should be_grouped_into 'root' }
+      it { should be_mode 640 }
+    end
+  end
+
+  context 'owner/group non-root' do
+    before(:all) do
+      shell "groupadd -g 64444 bob"
+      shell "useradd -u 42 -g 64444 bob"
+    end
+    after(:all) do
+      shell "userdel bob"
+    end
+
+    pp="
+      concat { '/tmp/concat/file':
+        owner => 'bob',
+        group => 'bob',
+        mode  => '0644',
+      }
+
+      concat::fragment { '1':
+        target  => '/tmp/concat/file',
+        content => '1',
+        order   => '01',
+      }
+
+      concat::fragment { '2':
+        target  => '/tmp/concat/file',
+        content => '2',
+        order   => '02',
+      }
+    "
+
+    it_behaves_like 'successfully_applied', pp
+
+    describe file('/tmp/concat/file') do
+      it { should be_file }
+      it { should be_owned_by 'bob' }
+      it { should be_grouped_into 'bob' }
+      it { should be_mode 644 }
+      it { should contain '1' }
+      it { should contain '2' }
+    end
+    describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments/01_1") do
+      it { should be_file }
+      it { should be_owned_by 'root' }
+      it { should be_grouped_into 'root' }
+      it { should be_mode 640 }
+      it { should contain '1' }
+    end
+    describe file("#{default['puppetvardir']}/concat/_tmp_concat_file/fragments/02_2") do
+      it { should be_file }
+      it { should be_owned_by 'root' }
+      it { should be_grouped_into 'root' }
+      it { should be_mode 640 }
+      it { should contain '2' }
+    end
+  end
+
+  context 'ensure' do
+    context 'works when set to present with path set' do
+      pp="
+        concat { 'file':
+          ensure => present,
+          path   => '/tmp/concat/file',
+          mode   => '0644',
+        }
+        concat::fragment { '1':
+          target  => 'file',
+          content => '1',
+          order   => '01',
+        }
+      "
+
+      it_behaves_like 'successfully_applied', pp
+
+      describe file('/tmp/concat/file') do
+        it { should be_file }
+        it { should be_mode 644 }
+        it { should contain '1' }
+      end
+    end
+    context 'works when set to absent with path set' do
+      pp="
+        concat { 'file':
+          ensure => absent,
+          path   => '/tmp/concat/file',
+          mode   => '0644',
+        }
+        concat::fragment { '1':
+          target  => 'file',
+          content => '1',
+          order   => '01',
+        }
+      "
+
+      # Can't used shared examples as this will always trigger the exec when
+      # absent is set.
+      it 'applies the manifest twice with no stderr' do
+        expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("")
+        expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("")
+      end
+
+      describe file('/tmp/concat/file') do
+        it { should_not be_file }
+      end
+    end
+  end
+end