123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944 |
- require 'spec_helper'
- require 'puppet'
- provider_class = Puppet::Type.type(:ini_setting).provider(:ruby)
- describe provider_class do
- include PuppetlabsSpec::Files
- let(:tmpfile) { tmpfilename("ini_setting_test") }
- let(:emptyfile) { tmpfilename("ini_setting_test_empty") }
- let(:common_params) { {
- :title => 'ini_setting_ensure_present_test',
- :path => tmpfile,
- :section => 'section2',
- } }
- def validate_file(expected_content,tmpfile = tmpfile)
- File.read(tmpfile).should == expected_content
- end
- before :each do
- File.open(tmpfile, 'w') do |fh|
- fh.write(orig_content)
- end
- File.open(emptyfile, 'w') do |fh|
- fh.write("")
- end
- end
- context 'when calling instances' do
- let :orig_content do
- ''
- end
- it 'should fail when file path is not set' do
- expect {
- provider_class.instances
- }.to raise_error(Puppet::Error, 'Ini_settings only support collecting instances when a file path is hard coded')
- end
- context 'when file path is set by a child class' do
- it 'should return [] when file is empty' do
- child_one = Class.new(provider_class) do
- def self.file_path
- emptyfile
- end
- end
- child_one.stubs(:file_path).returns(emptyfile)
- child_one.instances.should == []
- end
- it 'should override the provider instances file_path' do
- child_two = Class.new(provider_class) do
- def self.file_path
- '/some/file/path'
- end
- end
- resource = Puppet::Type::Ini_setting.new(common_params)
- provider = child_two.new(resource)
- provider.file_path.should == '/some/file/path'
- end
- context 'when file has contecnts' do
- let(:orig_content) {
- <<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- ; yet another comment
- EOS
- }
- it 'should be able to parse the results' do
- child_three = Class.new(provider_class) do
- def self.file_path
- '/some/file/path'
- end
- end
- child_three.stubs(:file_path).returns(tmpfile)
- child_three.instances.size == 7
- expected_array = [
- {:name => 'section1/foo', :value => 'foovalue' },
- {:name => 'section1/bar', :value => 'barvalue' },
- {:name => 'section1/master', :value => 'true' },
- {:name => 'section2/foo', :value => 'foovalue2' },
- {:name => 'section2/baz', :value => 'bazvalue' },
- {:name => 'section2/url', :value => 'http://192.168.1.1:8080' },
- {:name => 'section:sub/subby', :value => 'bar' }
- ]
- real_array = []
- ensure_array = []
- child_three.instances.each do |x|
- prop_hash = x.instance_variable_get(:@property_hash)
- ensure_value = prop_hash.delete(:ensure)
- ensure_array.push(ensure_value)
- real_array.push(prop_hash)
- end
- ensure_array.uniq.should == [:present]
- ((real_array - expected_array) && (expected_array - real_array)).should == []
- end
- end
- end
- end
- context "when ensuring that a setting is present" do
- let(:orig_content) {
- <<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- ; yet another comment
- EOS
- }
- it "should add a missing setting to the correct section" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :setting => 'yahoo', :value => 'yippee'))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- yahoo = yippee
- [section:sub]
- subby=bar
- #another comment
- ; yet another comment
- EOS
- )
- end
- it "should add a missing setting to the correct section with colon" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section:sub', :setting => 'yahoo', :value => 'yippee'))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- ; yet another comment
- yahoo = yippee
- EOS
- )
- end
- it "should modify an existing setting with a different value" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :setting => 'baz', :value => 'bazvalue2'))
- provider = described_class.new(resource)
- provider.exists?.should == 'bazvalue'
- provider.value=('bazvalue2')
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue2
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- ; yet another comment
- EOS
- )
- end
- it "should modify an existing setting with a different value - with colon in section" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section:sub', :setting => 'subby', :value => 'foo'))
- provider = described_class.new(resource)
- provider.exists?.should == 'bar'
- provider.value.should == 'bar'
- provider.value=('foo')
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=foo
- #another comment
- ; yet another comment
- EOS
- )
- end
- it "should be able to handle settings with non alphanumbering settings " do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :setting => 'url', :value => 'http://192.168.0.1:8080'))
- provider = described_class.new(resource)
- provider.exists?.should == 'http://192.168.1.1:8080'
- provider.value.should == 'http://192.168.1.1:8080'
- provider.value=('http://192.168.0.1:8080')
- validate_file( <<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.0.1:8080
- [section:sub]
- subby=bar
- #another comment
- ; yet another comment
- EOS
- )
- end
- it "should recognize an existing setting with the specified value" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :setting => 'baz', :value => 'bazvalue'))
- provider = described_class.new(resource)
- provider.exists?.should == 'bazvalue'
- end
- it "should add a new section if the section does not exist" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => "section3", :setting => 'huzzah', :value => 'shazaam'))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- ; yet another comment
- [section3]
- huzzah = shazaam
- EOS
- )
- end
- it "should add a new section if the section does not exist - with colon" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => "section:subsection", :setting => 'huzzah', :value => 'shazaam'))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- ; yet another comment
- [section:subsection]
- huzzah = shazaam
- EOS
- )
- end
- it "should add a new section if no sections exists" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => "section1", :setting => 'setting1', :value => 'hellowworld', :path => emptyfile))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file("
- [section1]
- setting1 = hellowworld
- ", emptyfile)
- end
- it "should add a new section with colon if no sections exists" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => "section:subsection", :setting => 'setting1', :value => 'hellowworld', :path => emptyfile))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file("
- [section:subsection]
- setting1 = hellowworld
- ", emptyfile)
- end
- it "should be able to handle variables of any type" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => "section1", :setting => 'master', :value => true))
- provider = described_class.new(resource)
- provider.exists?.should == 'true'
- provider.value.should == 'true'
- end
- end
- context "when dealing with a global section" do
- let(:orig_content) {
- <<-EOS
- # This is a comment
- foo=blah
- [section2]
- foo = http://192.168.1.1:8080
- ; yet another comment
- EOS
- }
- it "should add a missing setting if it doesn't exist" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => '', :setting => 'bar', :value => 'yippee'))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file(<<-EOS
- # This is a comment
- foo=blah
- bar = yippee
- [section2]
- foo = http://192.168.1.1:8080
- ; yet another comment
- EOS
- )
- end
- it "should modify an existing setting with a different value" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => '', :setting => 'foo', :value => 'yippee'))
- provider = described_class.new(resource)
- provider.exists?.should == 'blah'
- provider.value.should == 'blah'
- provider.value=('yippee')
- validate_file(<<-EOS
- # This is a comment
- foo=yippee
- [section2]
- foo = http://192.168.1.1:8080
- ; yet another comment
- EOS
- )
- end
- it "should recognize an existing setting with the specified value" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => '', :setting => 'foo', :value => 'blah'))
- provider = described_class.new(resource)
- provider.exists?.should == 'blah'
- end
- end
- context "when the first line of the file is a section" do
- let(:orig_content) {
- <<-EOS
- [section2]
- foo = http://192.168.1.1:8080
- EOS
- }
- it "should be able to add a global setting" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => '', :setting => 'foo', :value => 'yippee'))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file(<<-EOS
- foo = yippee
- [section2]
- foo = http://192.168.1.1:8080
- EOS
- )
- end
- it "should modify an existing setting" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section2', :setting => 'foo', :value => 'yippee'))
- provider = described_class.new(resource)
- provider.exists?.should == 'http://192.168.1.1:8080'
- provider.value.should == 'http://192.168.1.1:8080'
- provider.value=('yippee')
- validate_file(<<-EOS
- [section2]
- foo = yippee
- EOS
- )
- end
- it "should add a new setting" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section2', :setting => 'bar', :value => 'baz'))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file(<<-EOS
- [section2]
- foo = http://192.168.1.1:8080
- bar = baz
- EOS
- )
- end
- end
- context "when overriding the separator" do
- let(:orig_content) {
- <<-EOS
- [section2]
- foo=bar
- EOS
- }
- it "should fail if the separator doesn't include an equals sign" do
- expect {
- Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section2',
- :setting => 'foo',
- :value => 'yippee',
- :key_val_separator => '+'))
- }.to raise_error Puppet::Error, /must contain exactly one/
- end
- it "should fail if the separator includes more than one equals sign" do
- expect {
- Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section2',
- :setting => 'foo',
- :value => 'yippee',
- :key_val_separator => ' = foo = '))
- }.to raise_error Puppet::Error, /must contain exactly one/
- end
- it "should modify an existing setting" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section2',
- :setting => 'foo',
- :value => 'yippee',
- :key_val_separator => '='))
- provider = described_class.new(resource)
- provider.exists?.should == 'bar'
- provider.value.should == 'bar'
- provider.value=('yippee')
- validate_file(<<-EOS
- [section2]
- foo=yippee
- EOS
- )
- end
- it "should add a new setting" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section2',
- :setting => 'bar',
- :value => 'baz',
- :key_val_separator => '='))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file(<<-EOS
- [section2]
- foo=bar
- bar=baz
- EOS
- )
- end
- end
- context "when ensuring that a setting is absent" do
- let(:orig_content) {
- <<-EOS
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- ; yet another comment
- EOS
- }
- it "should remove a setting that exists" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section1', :setting => 'foo', :ensure => 'absent'))
- provider = described_class.new(resource)
- provider.exists?.should be_true
- provider.destroy
- validate_file(<<-EOS
- [section1]
- ; This is also a comment
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- ; yet another comment
- EOS
- )
- end
- it "should do nothing for a setting that does not exist" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section:sub', :setting => 'foo', :ensure => 'absent'))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.destroy
- validate_file(<<-EOS
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- ; yet another comment
- EOS
- )
- end
- end
- context "when dealing with indentation in sections" do
- let(:orig_content) {
- <<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- fleezy = flam
- ; yet another comment
- EOS
- }
- it "should add a missing setting at the correct indentation when the header is aligned" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section1', :setting => 'yahoo', :value => 'yippee'))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- yahoo = yippee
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- fleezy = flam
- ; yet another comment
- EOS
- )
- end
- it "should update an existing setting at the correct indentation when the header is aligned" do
- resource = Puppet::Type::Ini_setting.new(
- common_params.merge(:section => 'section1', :setting => 'bar', :value => 'barvalue2'))
- provider = described_class.new(resource)
- provider.exists?.should be_true
- provider.create
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue2
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- fleezy = flam
- ; yet another comment
- EOS
- )
- end
- it "should add a missing setting at the correct indentation when the header is not aligned" do
- resource = Puppet::Type::Ini_setting.new(common_params.merge(
- :section => 'section2', :setting => 'yahoo', :value => 'yippee'))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- yahoo = yippee
- [section:sub]
- subby=bar
- #another comment
- fleezy = flam
- ; yet another comment
- EOS
- )
- end
- it "should update an existing setting at the correct indentation when the header is not aligned" do
- resource = Puppet::Type::Ini_setting.new(
- common_params.merge(:section => 'section2', :setting => 'baz', :value => 'bazvalue2'))
- provider = described_class.new(resource)
- provider.exists?.should be_true
- provider.create
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue2
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- fleezy = flam
- ; yet another comment
- EOS
- )
- end
- it "should add a missing setting at the min indentation when the section is not aligned" do
- resource = Puppet::Type::Ini_setting.new(
- common_params.merge(:section => 'section:sub', :setting => 'yahoo', :value => 'yippee'))
- provider = described_class.new(resource)
- provider.exists?.should be_nil
- provider.create
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- fleezy = flam
- ; yet another comment
- yahoo = yippee
- EOS
- )
- end
- it "should update an existing setting at the previous indentation when the section is not aligned" do
- resource = Puppet::Type::Ini_setting.new(
- common_params.merge(:section => 'section:sub', :setting => 'fleezy', :value => 'flam2'))
- provider = described_class.new(resource)
- provider.exists?.should be_true
- provider.create
- validate_file(<<-EOS
- # This is a comment
- [section1]
- ; This is also a comment
- foo=foovalue
- bar = barvalue
- master = true
- [section2]
- foo= foovalue2
- baz=bazvalue
- url = http://192.168.1.1:8080
- [section:sub]
- subby=bar
- #another comment
- fleezy = flam2
- ; yet another comment
- EOS
- )
- end
- end
- context "when dealing settings that have a commented version present" do
- let(:orig_content) {
- <<-EOS
- [section1]
- # foo=foovalue
- bar=barvalue
- foo = foovalue2
- [section2]
- # foo = foovalue
- ;bar=barvalue
- blah = blah
- EOS
- }
- it "should add a new setting below a commented version of that setting" do
- resource = Puppet::Type::Ini_setting.new(
- common_params.merge(:section => 'section2', :setting => 'foo', :value => 'foo3'))
- provider = described_class.new(resource)
- provider.exists?.should be_false
- provider.create
- validate_file(<<-EOS
- [section1]
- # foo=foovalue
- bar=barvalue
- foo = foovalue2
- [section2]
- # foo = foovalue
- foo = foo3
- ;bar=barvalue
- blah = blah
- EOS
- )
- end
- it "should update an existing setting in place, even if there is a commented version of that setting" do
- resource = Puppet::Type::Ini_setting.new(
- common_params.merge(:section => 'section1', :setting => 'foo', :value => 'foo3'))
- provider = described_class.new(resource)
- provider.exists?.should be_true
- provider.create
- validate_file(<<-EOS
- [section1]
- # foo=foovalue
- bar=barvalue
- foo = foo3
- [section2]
- # foo = foovalue
- ;bar=barvalue
- blah = blah
- EOS
- )
- end
- it "should add a new setting below a commented version of that setting, respecting semicolons as comments" do
- resource = Puppet::Type::Ini_setting.new(
- common_params.merge(:section => 'section2', :setting => 'bar', :value => 'bar3'))
- provider = described_class.new(resource)
- provider.exists?.should be_false
- provider.create
- validate_file(<<-EOS
- [section1]
- # foo=foovalue
- bar=barvalue
- foo = foovalue2
- [section2]
- # foo = foovalue
- ;bar=barvalue
- bar=bar3
- blah = blah
- EOS
- )
- end
- context 'when a section only contains comments' do
- let(:orig_content) {
- <<-EOS
- [section1]
- # foo=foovalue
- # bar=bar2
- EOS
- }
- it 'should be able to add a new setting when a section contains only comments' do
- resource = Puppet::Type::Ini_setting.new(
- common_params.merge(:section => 'section1', :setting => 'foo', :value => 'foovalue2')
- )
- provider = described_class.new(resource)
- provider.exists?.should be_false
- provider.create
- validate_file(<<-EOS
- [section1]
- # foo=foovalue
- foo=foovalue2
- # bar=bar2
- EOS
- )
- end
- it 'should be able to add a new setting when it matches a commented out line other than the first one' do
- resource = Puppet::Type::Ini_setting.new(
- common_params.merge(:section => 'section1', :setting => 'bar', :value => 'barvalue2')
- )
- provider = described_class.new(resource)
- provider.exists?.should be_false
- provider.create
- validate_file(<<-EOS
- [section1]
- # foo=foovalue
- # bar=bar2
- bar=barvalue2
- EOS
- )
- end
- end
- end
- end
|