X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fpostgresql%2Fspec%2Funit%2Fdefines%2Fserver%2Frecovery_spec.rb;fp=3rdparty%2Fmodules%2Fpostgresql%2Fspec%2Funit%2Fdefines%2Fserver%2Frecovery_spec.rb;h=8c78e3ec3bb68b99c8b914dfae4f05c915b09ebb;hb=a69999e580f8b3abd12446c2d6ad59e517651813;hp=0000000000000000000000000000000000000000;hpb=e7b6b352165009c385c52fcfe5a1055690dbfa4b;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/postgresql/spec/unit/defines/server/recovery_spec.rb b/3rdparty/modules/postgresql/spec/unit/defines/server/recovery_spec.rb new file mode 100644 index 000000000..8c78e3ec3 --- /dev/null +++ b/3rdparty/modules/postgresql/spec/unit/defines/server/recovery_spec.rb @@ -0,0 +1,113 @@ +require 'spec_helper' + +describe 'postgresql::server::recovery', :type => :define do + let :facts do + { + :osfamily => 'Debian', + :operatingsystem => 'Debian', + :operatingsystemrelease => '6.0', + :kernel => 'Linux', + :concat_basedir => tmpfilename('recovery'), + :id => 'root', + :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', + } + end + let :title do + 'test' + end + let :target do + tmpfilename('recovery') + end + + context 'managing recovery' do + let :pre_condition do + <<-EOS + class { 'postgresql::globals': + manage_recovery_conf => true, + } + class { 'postgresql::server': } + EOS + end + + let :params do + { + :restore_command => 'restore_command', + :recovery_target_timeline => 'recovery_target_timeline', + } + end + it do + is_expected.to contain_concat__fragment('recovery.conf').with({ + :content => /restore_command = 'restore_command'[\n]+recovery_target_timeline = 'recovery_target_timeline'/ + }) + end + end + context 'not managing recovery' do + let :pre_condition do + <<-EOS + class { 'postgresql::globals': + manage_recovery_conf => false, + } + class { 'postgresql::server': } + EOS + end + let :params do + { + :restore_command => '', + } + end + it 'should fail because $manage_recovery_conf is false' do + expect { catalogue }.to raise_error(Puppet::Error, + /postgresql::server::manage_recovery_conf has been disabled/) + end + end + context 'not managing recovery, missing param' do + let :pre_condition do + <<-EOS + class { 'postgresql::globals': + manage_recovery_conf => true, + } + class { 'postgresql::server': } + EOS + end + it 'should fail because no param set' do + expect { catalogue }.to raise_error(Puppet::Error, + /postgresql::server::recovery use this resource but do not pass a parameter will avoid creating the recovery.conf, because it makes no sense./) + end + end + + context 'managing recovery with all params' do + let :pre_condition do + <<-EOS + class { 'postgresql::globals': + manage_recovery_conf => true, + } + class { 'postgresql::server': } + EOS + end + + let :params do + { + :restore_command => 'restore_command', + :archive_cleanup_command => 'archive_cleanup_command', + :recovery_end_command => 'recovery_end_command', + :recovery_target_name => 'recovery_target_name', + :recovery_target_time => 'recovery_target_time', + :recovery_target_xid => 'recovery_target_xid', + :recovery_target_inclusive => true, + :recovery_target => 'recovery_target', + :recovery_target_timeline => 'recovery_target_timeline', + :pause_at_recovery_target => true, + :standby_mode => 'on', + :primary_conninfo => 'primary_conninfo', + :primary_slot_name => 'primary_slot_name', + :trigger_file => 'trigger_file', + :recovery_min_apply_delay => 0, + } + end + it do + is_expected.to contain_concat__fragment('recovery.conf').with({ + :content => /restore_command = 'restore_command'[\n]+archive_cleanup_command = 'archive_cleanup_command'[\n]+recovery_end_command = 'recovery_end_command'[\n]+recovery_target_name = 'recovery_target_name'[\n]+recovery_target_time = 'recovery_target_time'[\n]+recovery_target_xid = 'recovery_target_xid'[\n]+recovery_target_inclusive = true[\n]+recovery_target = 'recovery_target'[\n]+recovery_target_timeline = 'recovery_target_timeline'[\n]+pause_at_recovery_target = true[\n]+standby_mode = on[\n]+primary_conninfo = 'primary_conninfo'[\n]+primary_slot_name = 'primary_slot_name'[\n]+trigger_file = 'trigger_file'[\n]+recovery_min_apply_delay = 0[\n]+/ + }) + end + end +end