diff --git a/lib/puppet/type/designate_rootwrap_config.rb b/lib/puppet/type/designate_rootwrap_config.rb index 2e4382d5..5943e44c 100644 --- a/lib/puppet/type/designate_rootwrap_config.rb +++ b/lib/puppet/type/designate_rootwrap_config.rb @@ -15,7 +15,10 @@ Puppet::Type.newtype(:designate_rootwrap_config) do value end newvalues(/^[\S ]*$/) + end + autorequire(:package) do + 'designate-common' end end diff --git a/spec/unit/provider/designate_api_paste_ini/ini_setting_spec.rb b/spec/unit/provider/designate_api_paste_ini/ini_setting_spec.rb new file mode 100644 index 00000000..13043a9f --- /dev/null +++ b/spec/unit/provider/designate_api_paste_ini/ini_setting_spec.rb @@ -0,0 +1,53 @@ +$LOAD_PATH.push( + File.join( + File.dirname(__FILE__), + '..', + '..', + '..', + 'fixtures', + 'modules', + 'inifile', + 'lib') +) +$LOAD_PATH.push( + File.join( + File.dirname(__FILE__), + '..', + '..', + '..', + 'fixtures', + 'modules', + 'openstacklib', + 'lib') +) +require 'spec_helper' +provider_class = Puppet::Type.type(:designate_api_paste_ini).provider(:ini_setting) +describe provider_class do + + it 'should allow setting to be set explicitly' do + resource = Puppet::Type::Designate_api_paste_ini.new( + {:name => 'boo/zoo', :value => 'plop'} + ) + provider = provider_class.new(resource) + expect(provider.section).to eq('boo') + expect(provider.setting).to eq('zoo') + end + + it 'should ensure absent when is specified as a value' do + resource = Puppet::Type::Designate_api_paste_ini.new( + {:name => 'dude/foo', :value => ''} + ) + provider = provider_class.new(resource) + provider.exists? + expect(resource[:ensure]).to eq :absent + end + + it 'should ensure absent when value matches ensure_absent_val' do + resource = Puppet::Type::Designate_api_paste_ini.new( + {:name => 'dude/foo', :value => 'foo', :ensure_absent_val => 'foo' } + ) + provider = provider_class.new(resource) + provider.exists? + expect(resource[:ensure]).to eq :absent + end +end diff --git a/spec/unit/provider/designate_rootwrap_config/ini_setting_spec.rb b/spec/unit/provider/designate_rootwrap_config/ini_setting_spec.rb new file mode 100644 index 00000000..2142cf43 --- /dev/null +++ b/spec/unit/provider/designate_rootwrap_config/ini_setting_spec.rb @@ -0,0 +1,35 @@ +$LOAD_PATH.push( + File.join( + File.dirname(__FILE__), + '..', + '..', + '..', + 'fixtures', + 'modules', + 'inifile', + 'lib') +) +$LOAD_PATH.push( + File.join( + File.dirname(__FILE__), + '..', + '..', + '..', + 'fixtures', + 'modules', + 'openstacklib', + 'lib') +) + +require 'spec_helper' +provider_class = Puppet::Type.type(:designate_rootwrap_config).provider(:ini_setting) +describe provider_class do + it 'should allow setting to be set explicitly' do + resource = Puppet::Type::Designate_rootwrap_config.new( + {:name => 'boo/zoo', :value => 'plop'} + ) + provider = provider_class.new(resource) + expect(provider.section).to eq('boo') + expect(provider.setting).to eq('zoo') + end +end diff --git a/spec/unit/type/designate_api_paste_ini.rb b/spec/unit/type/designate_api_paste_ini.rb new file mode 100644 index 00000000..f3b37e9a --- /dev/null +++ b/spec/unit/type/designate_api_paste_ini.rb @@ -0,0 +1,65 @@ +autorequire 'puppet' +require 'puppet/type/designate_api_paste_ini' +describe 'Puppet::Type.type(:designate_api_paste_ini)' do + before :each do + @designate_api_paste_ini = Puppet::Type.type(:designate_api_paste_ini).new(:name => 'DEFAULT/foo', :value => 'bar') + end + + it 'should require a name' do + expect { + Puppet::Type.type(:designate_api_paste_ini).new({}) + }.to raise_error(Puppet::Error, 'Title or name must be provided') + end + + it 'should not expect a name with whitespace' do + expect { + Puppet::Type.type(:designate_api_paste_ini).new(:name => 'f oo') + }.to raise_error(Puppet::Error, /Parameter name failed/) + end + + it 'should fail when there is no section' do + expect { + Puppet::Type.type(:designate_api_paste_ini).new(:name => 'foo') + }.to raise_error(Puppet::Error, /Parameter name failed/) + end + + it 'should not require a value when ensure is absent' do + expect { + Puppet::Type.type(:designate_api_paste_ini).new(:name => 'DEFAULT/foo', :ensure => :absent) + }.not_to raise_error + end + + it 'should accept a valid value' do + @designate_api_paste_ini[:value] = 'bar' + expect(@designate_api_paste_ini[:value]).to eq('bar') + end + + it 'should accept a value with whitespace' do + @designate_api_paste_ini[:value] = 'b ar' + expect(@designate_api_paste_ini[:value]).to eq('b ar') + end + + it 'should accept valid ensure values' do + @designate_api_paste_ini[:ensure] = :present + expect(@designate_api_paste_ini[:ensure]).to eq(:present) + @designate_api_paste_ini[:ensure] = :absent + expect(@designate_api_paste_ini[:ensure]).to eq(:absent) + end + + it 'should not accept invalid ensure values' do + expect { + @designate_api_paste_ini[:ensure] = :latest + }.to raise_error(Puppet::Error, /Invalid value/) + end + + it 'should autorequire the package that install the file' do + catalog = Puppet::Resource::Catalog.new + package = Puppet::Type.type(:package).new(:name => 'designate-common') + catalog.add_resource package, @designate_api_paste_ini + dependency = @designate_api_paste_ini.autorequire + expect(dependency.size).to eq(1) + expect(dependency[0].target).to eq(@designate_api_paste_ini) + expect(dependency[0].source).to eq(package) + end + +end diff --git a/spec/unit/type/designate_rootwrap_config_spec.rb b/spec/unit/type/designate_rootwrap_config_spec.rb new file mode 100644 index 00000000..ce9d10ec --- /dev/null +++ b/spec/unit/type/designate_rootwrap_config_spec.rb @@ -0,0 +1,65 @@ +require 'puppet' +require 'puppet/type/designate_rootwrap_config' +describe 'Puppet::Type.type(:designate_rootwrap_config)' do + before :each do + @designate_rootwrap_config = Puppet::Type.type(:designate_rootwrap_config).new(:name => 'DEFAULT/foo', :value => 'bar') + end + + it 'should require a name' do + expect { + Puppet::Type.type(:designate_rootwrap_config).new({}) + }.to raise_error(Puppet::Error, 'Title or name must be provided') + end + + it 'should not expect a name with whitespace' do + expect { + Puppet::Type.type(:designate_rootwrap_config).new(:name => 'f oo') + }.to raise_error(Puppet::Error, /Parameter name failed/) + end + + it 'should fail when there is no section' do + expect { + Puppet::Type.type(:designate_rootwrap_config).new(:name => 'foo') + }.to raise_error(Puppet::Error, /Parameter name failed/) + end + + it 'should not require a value when ensure is absent' do + expect { + Puppet::Type.type(:designate_rootwrap_config).new(:name => 'DEFAULT/foo', :ensure => :absent) + }.not_to raise_error + end + + it 'should accept a valid value' do + @designate_rootwrap_config[:value] = 'bar' + expect(@designate_rootwrap_config[:value]).to eq('bar') + end + + it 'should accept a value with whitespace' do + @designate_rootwrap_config[:value] = 'b ar' + expect(@designate_rootwrap_config[:value]).to eq('b ar') + end + + it 'should accept valid ensure values' do + @designate_rootwrap_config[:ensure] = :present + expect(@designate_rootwrap_config[:ensure]).to eq(:present) + @designate_rootwrap_config[:ensure] = :absent + expect(@designate_rootwrap_config[:ensure]).to eq(:absent) + end + + it 'should not accept invalid ensure values' do + expect { + @designate_rootwrap_config[:ensure] = :latest + }.to raise_error(Puppet::Error, /Invalid value/) + end + + it 'should autorequire the package that install the file' do + catalog = Puppet::Resource::Catalog.new + package = Puppet::Type.type(:package).new(:name => 'designate-common') + catalog.add_resource package, @designate_rootwrap_config + dependency = @designate_rootwrap_config.autorequire + expect(dependency.size).to eq(1) + expect(dependency[0].target).to eq(@designate_rootwrap_config) + expect(dependency[0].source).to eq(package) + end + +end