newer pg module
[mirror/dsa-puppet.git] / 3rdparty / modules / postgresql / spec / unit / defines / server / recovery_spec.rb
1 require 'spec_helper'
2
3 describe 'postgresql::server::recovery', :type => :define do
4   let :facts do
5     {
6       :osfamily => 'Debian',
7       :operatingsystem => 'Debian',
8       :operatingsystemrelease => '6.0',
9       :kernel => 'Linux',
10       :concat_basedir => tmpfilename('recovery'),
11       :id => 'root',
12       :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
13     }
14   end
15   let :title do
16     'test'
17   end
18   let :target do
19     tmpfilename('recovery')
20   end
21
22   context 'managing recovery' do
23     let :pre_condition do
24       <<-EOS
25         class { 'postgresql::globals':
26           manage_recovery_conf => true,
27         }
28         class { 'postgresql::server': }
29       EOS
30     end
31
32     let :params do
33       {
34         :restore_command            => 'restore_command',
35         :recovery_target_timeline   => 'recovery_target_timeline',
36       }
37     end
38     it do
39       is_expected.to contain_concat__fragment('recovery.conf').with({
40         :content => /restore_command = 'restore_command'[\n]+recovery_target_timeline = 'recovery_target_timeline'/
41       })
42     end
43   end
44   context 'not managing recovery' do
45     let :pre_condition do
46       <<-EOS
47         class { 'postgresql::globals':
48           manage_recovery_conf => false,
49         }
50         class { 'postgresql::server': }
51       EOS
52     end
53     let :params do
54       {
55           :restore_command => '',
56       }
57     end
58     it 'should fail because $manage_recovery_conf is false' do
59       expect { catalogue }.to raise_error(Puppet::Error,
60                                       /postgresql::server::manage_recovery_conf has been disabled/)
61     end
62   end
63   context 'not managing recovery, missing param' do
64     let :pre_condition do
65       <<-EOS
66         class { 'postgresql::globals':
67           manage_recovery_conf => true,
68         }
69         class { 'postgresql::server': }
70       EOS
71     end
72     it 'should fail because no param set' do
73       expect { catalogue }.to raise_error(Puppet::Error,
74                                       /postgresql::server::recovery use this resource but do not pass a parameter will avoid creating the recovery.conf, because it makes no sense./)
75     end
76   end
77
78   context 'managing recovery with all params' do
79     let :pre_condition do
80       <<-EOS
81         class { 'postgresql::globals':
82           manage_recovery_conf => true,
83         }
84         class { 'postgresql::server': }
85       EOS
86     end
87
88     let :params do
89       {
90           :restore_command            => 'restore_command',
91           :archive_cleanup_command    => 'archive_cleanup_command',
92           :recovery_end_command       => 'recovery_end_command',
93           :recovery_target_name       => 'recovery_target_name',
94           :recovery_target_time       => 'recovery_target_time',
95           :recovery_target_xid        => 'recovery_target_xid',
96           :recovery_target_inclusive  => true,
97           :recovery_target            => 'recovery_target',
98           :recovery_target_timeline   => 'recovery_target_timeline',
99           :pause_at_recovery_target   => true,
100           :standby_mode               => 'on',
101           :primary_conninfo           => 'primary_conninfo',
102           :primary_slot_name          => 'primary_slot_name',
103           :trigger_file               => 'trigger_file',
104           :recovery_min_apply_delay   => 0,
105       }
106     end
107     it do
108       is_expected.to contain_concat__fragment('recovery.conf').with({
109           :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]+/
110       })
111     end
112   end
113 end