require 'spec_helper' describe 'inifile' do describe 'with default options' do it { should compile.with_all_deps } it { should contain_class('inifile') } end describe 'with parameter ini_settings_hiera_merge' do context 'set to an invalid type (non-string and a non-boolean)' do let(:params) { { :ini_settings_hiera_merge => ['invalid','type'] } } it 'should fail' do expect { should contain_class('inifile') }.to raise_error(Puppet::Error,/\["invalid", "type"\] is not a boolean./) end end ['true',true,'false',false].each do |value| context "set to #{value}" do let(:params) { { :ini_settings_hiera_merge => value } } it { should contain_class('inifile') } end end end describe 'with parameter ini_settings' do context 'set to an invalid type (non-hash)' do let(:params) do { :ini_settings => ['invalid','type'], :ini_settings_hiera_merge => false, } end it 'should fail' do expect { should contain_class('inifile') }.to raise_error(Puppet::Error,/\["invalid", "type"\] is not a Hash./) end end context 'set to a valid hash' do let(:params) { { :ini_settings_hiera_merge => false, :ini_settings => { 'sample setting' => { 'ensure' => 'absent', 'path' => '/tmp/foo.ini', 'section' => 'foo', 'setting' => 'foosetting', 'value' => 'FOO!', }, 'colorize_git' => { 'ensure' => 'present', 'path' => '/root/.gitconfig', 'section' => 'color', 'setting' => 'ui', 'value' => 'auto', } } } } it { should contain_class('inifile') } it { should contain_ini_setting('sample setting').with({ 'ensure' => 'absent', 'path' => '/tmp/foo.ini', 'section' => 'foo', 'setting' => 'foosetting', 'value' => 'FOO!', }) } it { should contain_ini_setting('colorize_git').with({ 'ensure' => 'present', 'path' => '/root/.gitconfig', 'section' => 'color', 'setting' => 'ui', 'value' => 'auto', }) } end end describe 'with parameter ini_subsettings_hiera_merge' do context 'set to an invalid type (non-string and a non-boolean)' do let(:params) { { :ini_subsettings_hiera_merge => ['invalid','type'] } } it 'should fail' do expect { should contain_class('inifile') }.to raise_error(Puppet::Error,/\["invalid", "type"\] is not a boolean./) end end ['true',true,'false',false].each do |value| context "set to #{value}" do let(:params) { { :ini_subsettings_hiera_merge => value } } it { should contain_class('inifile') } end end end describe 'with parameter ini_subsettings' do context 'set to an invalid type (non-hash)' do let(:params) do { :ini_subsettings => ['invalid','type'], :ini_subsettings_hiera_merge => false, } end it 'should fail' do expect { should contain_class('inifile') }.to raise_error(Puppet::Error,/\["invalid", "type"\] is not a Hash./) end end context 'set to a valid hash' do let(:params) { { :ini_subsettings_hiera_merge => false, :ini_subsettings => { 'sample setting' => { 'ensure' => 'absent', 'path' => '/tmp/foo.ini', 'section' => 'foo', 'setting' => 'foosetting', 'value' => 'FOO!', }, 'colorize_git' => { 'ensure' => 'present', 'path' => '/root/.gitconfig', 'section' => 'color', 'setting' => 'ui', 'value' => 'auto', } } } } it { should contain_class('inifile') } it { should contain_ini_subsetting('sample setting').with({ 'ensure' => 'absent', 'path' => '/tmp/foo.ini', 'section' => 'foo', 'setting' => 'foosetting', 'value' => 'FOO!', }) } it { should contain_ini_subsetting('colorize_git').with({ 'ensure' => 'present', 'path' => '/root/.gitconfig', 'section' => 'color', 'setting' => 'ui', 'value' => 'auto', }) } end end end