diff --git a/spec/unit/provider/gnocchi_config/ini_setting_spec.rb b/spec/unit/provider/gnocchi_config/ini_setting_spec.rb new file mode 100644 index 00000000..fa617c6b --- /dev/null +++ b/spec/unit/provider/gnocchi_config/ini_setting_spec.rb @@ -0,0 +1,37 @@ +# these tests are a little concerning b/c they are hacking around the +# modulepath, so these tests will not catch issues that may eventually arise +# related to loading these plugins. +# I could not, for the life of me, figure out how to programatcally set the modulepath +$LOAD_PATH.push( + File.join( + File.dirname(__FILE__), + '..', + '..', + '..', + 'fixtures', + 'modules', + 'inifile', + 'lib') +) +require 'spec_helper' +provider_class = Puppet::Type.type(:gnocchi_config).provider(:ini_setting) +describe provider_class do + + it 'should default to the default setting when no other one is specified' do + resource = Puppet::Type::Gnocchi_config.new( + {:name => 'DEFAULT/foo', :value => 'bar'} + ) + provider = provider_class.new(resource) + provider.section.should == 'DEFAULT' + provider.setting.should == 'foo' + end + + it 'should allow setting to be set explicitly' do + resource = Puppet::Type::Gnocchi_config.new( + {:name => 'dude/foo', :value => 'bar'} + ) + provider = provider_class.new(resource) + provider.section.should == 'dude' + provider.setting.should == 'foo' + end +end diff --git a/spec/unit/provider/gnocchi_spec.rb b/spec/unit/provider/gnocchi_spec.rb new file mode 100644 index 00000000..7c6e0d02 --- /dev/null +++ b/spec/unit/provider/gnocchi_spec.rb @@ -0,0 +1,14 @@ +require 'puppet' +require 'spec_helper' +require 'puppet/provider/gnocchi' + + +klass = Puppet::Provider::Gnocchi + +describe Puppet::Provider::Gnocchi do + + after :each do + klass.reset + end + +end diff --git a/spec/unit/type/gnocchi_config_spec.rb b/spec/unit/type/gnocchi_config_spec.rb new file mode 100644 index 00000000..24a0caf7 --- /dev/null +++ b/spec/unit/type/gnocchi_config_spec.rb @@ -0,0 +1,52 @@ +require 'puppet' +require 'puppet/type/gnocchi_config' +describe 'Puppet::Type.type(:gnocchi_config)' do + before :each do + @gnocchi_config = Puppet::Type.type(:gnocchi_config).new(:name => 'DEFAULT/foo', :value => 'bar') + end + + it 'should require a name' do + expect { + Puppet::Type.type(:gnocchi_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(:gnocchi_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(:gnocchi_config).new(:name => 'foo') + }.to raise_error(Puppet::Error, /Parameter name failed/) + end + + it 'should not require a value when ensure is absent' do + Puppet::Type.type(:gnocchi_config).new(:name => 'DEFAULT/foo', :ensure => :absent) + end + + it 'should accept a valid value' do + @gnocchi_config[:value] = 'bar' + @gnocchi_config[:value].should == 'bar' + end + + it 'should not accept a value with whitespace' do + @gnocchi_config[:value] = 'b ar' + @gnocchi_config[:value].should == 'b ar' + end + + it 'should accept valid ensure values' do + @gnocchi_config[:ensure] = :present + @gnocchi_config[:ensure].should == :present + @gnocchi_config[:ensure] = :absent + @gnocchi_config[:ensure].should == :absent + end + + it 'should not accept invalid ensure values' do + expect { + @gnocchi_config[:ensure] = :latest + }.to raise_error(Puppet::Error, /Invalid value/) + end +end