forked from redhat-openstack/openstack-puppet-modules
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
(FM-161) Add beaker tests for parameter coverage
- Loading branch information
Showing
17 changed files
with
582 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
fixtures: | ||
symlinks: | ||
inifile: '#{source_dir}' | ||
inifile: "#{source_dir}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
require 'spec_helper_acceptance' | ||
|
||
# Here we put the more basic fundamental tests, ultra obvious stuff. | ||
describe "basic tests:" do | ||
it 'copies the module across' do | ||
# No point diagnosing any more if the module wasn't copied properly | ||
shell "ls #{default['distmoduledir']}/inifile" do |r| | ||
expect(r.stdout).to match(/Modulefile/) | ||
expect(r.stderr).to be_empty | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,288 @@ | ||
require 'spec_helper_acceptance' | ||
|
||
describe 'ini_setting resource' do | ||
after :all do | ||
shell("rm /tmp/*.ini", :acceptable_exit_codes => [0,1]) | ||
end | ||
|
||
shared_examples 'has_content' do |path,pp,content| | ||
before :all do | ||
shell("rm #{path}", :acceptable_exit_codes => [0,1]) | ||
end | ||
after :all do | ||
shell("cat #{path}", :acceptable_exit_codes => [0,1]) | ||
shell("rm #{path}", :acceptable_exit_codes => [0,1]) | ||
end | ||
|
||
it 'applies the manifest twice with no stderr' do | ||
expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") | ||
expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") | ||
end | ||
|
||
describe file(path) do | ||
it { should be_file } | ||
it { should contain(content) } | ||
end | ||
end | ||
|
||
shared_examples 'has_error' do |path,pp,error| | ||
before :all do | ||
shell("rm #{path}", :acceptable_exit_codes => [0,1]) | ||
end | ||
after :all do | ||
shell("cat #{path}", :acceptable_exit_codes => [0,1]) | ||
shell("rm #{path}", :acceptable_exit_codes => [0,1]) | ||
end | ||
|
||
it 'applies the manifest and gets a failure message' do | ||
expect(apply_manifest(pp, :expect_failures => true).stderr).to match(error) | ||
end | ||
|
||
describe file(path) do | ||
it { should_not be_file } | ||
end | ||
end | ||
|
||
describe 'ensure parameter' do | ||
context '=> present for global and section' do | ||
pp = <<-EOS | ||
ini_setting { 'ensure => present for section': | ||
ensure => present, | ||
path => '/tmp/ini_setting.ini', | ||
section => 'one', | ||
setting => 'two', | ||
value => 'three', | ||
} | ||
ini_setting { 'ensure => present for global': | ||
ensure => present, | ||
path => '/tmp/ini_setting.ini', | ||
section => '', | ||
setting => 'four', | ||
value => 'five', | ||
} | ||
EOS | ||
|
||
it 'applies the manifest twice with no stderr' do | ||
expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") | ||
expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") | ||
end | ||
|
||
describe file('/tmp/ini_setting.ini') do | ||
it { should be_file } | ||
it { should contain("four = five\n[one]\ntwo = three") } | ||
end | ||
end | ||
|
||
context '=> absent for key/value' do | ||
before :all do | ||
shell('echo -e "four = five\n[one]\ntwo = three" > /tmp/ini_setting.ini') | ||
end | ||
|
||
pp = <<-EOS | ||
ini_setting { 'ensure => absent for key/value': | ||
ensure => absent, | ||
path => '/tmp/ini_setting.ini', | ||
section => 'one', | ||
setting => 'two', | ||
value => 'three', | ||
} | ||
EOS | ||
|
||
it 'applies the manifest twice with no stderr' do | ||
expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") | ||
expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") | ||
end | ||
|
||
describe file('/tmp/ini_setting.ini') do | ||
it { should be_file } | ||
it { should contain('four = five') } | ||
it { should contain('[one]') } | ||
it { should_not contain('two = three') } | ||
end | ||
end | ||
|
||
context '=> absent for section', :pending => "cannot ensure absent on a section" do | ||
before :all do | ||
shell('echo -e "four = five\n[one]\ntwo = three" > /tmp/ini_setting.ini') | ||
end | ||
after :all do | ||
shell("cat /tmp/ini_setting.ini", :acceptable_exit_codes => [0,1]) | ||
shell("rm /tmp/ini_setting.ini", :acceptable_exit_codes => [0,1]) | ||
end | ||
|
||
pp = <<-EOS | ||
ini_setting { 'ensure => absent for section': | ||
ensure => absent, | ||
path => '/tmp/ini_setting.ini', | ||
section => 'one', | ||
} | ||
EOS | ||
|
||
it 'applies the manifest twice with no stderr' do | ||
expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") | ||
expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") | ||
end | ||
|
||
describe file('/tmp/ini_setting.ini') do | ||
it { should be_file } | ||
it { should contain('four = five') } | ||
it { should_not contain('[one]') } | ||
it { should_not contain('two = three') } | ||
end | ||
end | ||
|
||
context '=> absent for global' do | ||
before :all do | ||
shell('echo -e "four = five\n[one]\ntwo = three" > /tmp/ini_setting.ini') | ||
end | ||
after :all do | ||
shell("cat /tmp/ini_setting.ini", :acceptable_exit_codes => [0,1]) | ||
shell("rm /tmp/ini_setting.ini", :acceptable_exit_codes => [0,1]) | ||
end | ||
|
||
pp = <<-EOS | ||
ini_setting { 'ensure => absent for global': | ||
ensure => absent, | ||
path => '/tmp/ini_setting.ini', | ||
section => '', | ||
setting => 'four', | ||
value => 'five', | ||
} | ||
EOS | ||
|
||
it 'applies the manifest twice with no stderr' do | ||
expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") | ||
expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") | ||
end | ||
|
||
describe file('/tmp/ini_setting.ini') do | ||
it { should be_file } | ||
it { should_not contain('four = five') } | ||
it { should contain('[one]') } | ||
it { should contain('two = three') } | ||
end | ||
end | ||
end | ||
|
||
describe 'section, setting, value parameters' do | ||
{ | ||
"section => 'test', setting => 'foo', value => 'bar'," => "[test]\nfoo = bar", | ||
"section => 'more', setting => 'baz', value => 'quux'," => "[more]\nbaz = quux", | ||
"section => '', setting => 'top', value => 'level'," => "top = level", | ||
}.each do |parameter_list, content| | ||
context parameter_list do | ||
pp = <<-EOS | ||
ini_setting { "#{parameter_list}": | ||
ensure => present, | ||
path => '/tmp/ini_setting.ini', | ||
#{parameter_list} | ||
} | ||
EOS | ||
|
||
it_behaves_like 'has_content', '/tmp/ini_setting.ini', pp, content | ||
end | ||
end | ||
|
||
{ | ||
"section => 'test'," => /setting is a required.+value is a required/, | ||
"setting => 'foo', value => 'bar'," => /section is a required/, | ||
"section => 'test', setting => 'foo'," => /value is a required/, | ||
"section => 'test', value => 'bar'," => /setting is a required/, | ||
"value => 'bar'," => /section is a required.+setting is a required/, | ||
"setting => 'foo'," => /section is a required.+value is a required/, | ||
}.each do |parameter_list, error| | ||
context parameter_list, :pending => 'no error checking yet' do | ||
pp = <<-EOS | ||
ini_setting { "#{parameter_list}": | ||
ensure => present, | ||
path => '/tmp/ini_setting.ini', | ||
#{parameter_list} | ||
} | ||
EOS | ||
|
||
it_behaves_like 'has_error', '/tmp/ini_setting.ini', pp, error | ||
end | ||
end | ||
end | ||
|
||
describe 'path parameter' do | ||
[ | ||
"/tmp/one.ini", | ||
"/tmp/two.ini", | ||
"/tmp/three.ini", | ||
].each do |path| | ||
context "path => #{path}" do | ||
pp = <<-EOS | ||
ini_setting { 'path => #{path}': | ||
ensure => present, | ||
section => 'one', | ||
setting => 'two', | ||
value => 'three', | ||
path => '#{path}', | ||
} | ||
EOS | ||
|
||
it_behaves_like 'has_content', path, pp, "[one]\ntwo = three" | ||
end | ||
end | ||
|
||
context "path => foo" do | ||
pp = <<-EOS | ||
ini_setting { 'path => foo': | ||
ensure => present, | ||
section => 'one', | ||
setting => 'two', | ||
value => 'three', | ||
path => 'foo', | ||
} | ||
EOS | ||
|
||
it_behaves_like 'has_error', 'foo', pp, /must be fully qualified/ | ||
end | ||
end | ||
|
||
describe 'key_val_separator parameter' do | ||
{ | ||
"" => "two = three", | ||
"key_val_separator => '='," => "two=three", | ||
"key_val_separator => ' = '," => "two = three", | ||
}.each do |parameter, content| | ||
context "with \"#{parameter}\" makes \"#{content}\"" do | ||
pp = <<-EOS | ||
ini_setting { "with #{parameter} makes #{content}": | ||
ensure => present, | ||
section => 'one', | ||
setting => 'two', | ||
value => 'three', | ||
path => '/tmp/key_val_separator.ini', | ||
#{parameter} | ||
} | ||
EOS | ||
|
||
it_behaves_like 'has_content', '/tmp/key_val_separator.ini', pp, content | ||
end | ||
end | ||
|
||
{ | ||
"key_val_separator => ''," => /must contain exactly one/, | ||
"key_val_separator => ','," => /must contain exactly one/, | ||
"key_val_separator => ' '," => /must contain exactly one/, | ||
"key_val_separator => ' == '," => /must contain exactly one/, | ||
}.each do |parameter, error| | ||
context "with \"#{parameter}\" raises \"#{error}\"" do | ||
pp = <<-EOS | ||
ini_setting { "with #{parameter} raises #{error}": | ||
ensure => present, | ||
section => 'one', | ||
setting => 'two', | ||
value => 'three', | ||
path => '/tmp/key_val_separator.ini', | ||
#{parameter} | ||
} | ||
EOS | ||
|
||
it_behaves_like 'has_error', '/tmp/key_val_separator.ini', pp, error | ||
end | ||
end | ||
end | ||
end |
Oops, something went wrong.