diff options
-rw-r--r-- | Gemfile | 11 | ||||
-rw-r--r-- | acceptance/tests/resource/mailalias/create.rb | 32 | ||||
-rw-r--r-- | acceptance/tests/resource/mailalias/destroy.rb | 40 | ||||
-rw-r--r-- | acceptance/tests/resource/mailalias/modify.rb | 40 | ||||
-rw-r--r-- | acceptance/tests/resource/mailalias/query.rb | 35 | ||||
-rw-r--r-- | spec/acceptance/nodesets/default.yml | 19 | ||||
-rw-r--r-- | spec/acceptance/tests/create_spec.rb | 31 | ||||
-rw-r--r-- | spec/acceptance/tests/destroy_spec.rb | 41 | ||||
-rw-r--r-- | spec/acceptance/tests/modify_spec.rb | 42 | ||||
-rw-r--r-- | spec/acceptance/tests/query_spec.rb | 35 | ||||
-rw-r--r-- | spec/spec_helper_acceptance.rb | 24 |
11 files changed, 203 insertions, 147 deletions
@@ -34,6 +34,17 @@ group :development do gem "puppet-module-win-dev-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw] end +group :system_tests do + gem "puppet-module-posix-system-r#{minor_version}", require: false, platforms: [:ruby] + gem "puppet-module-win-system-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw] + gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '~> 3.13') + gem "beaker-abs", *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.1') + gem "beaker-pe", require: false + gem "beaker-hostgenerator" + gem "beaker-rspec" +end + + puppet_version = ENV['PUPPET_GEM_VERSION'] puppet_type = gem_type(puppet_version) facter_version = ENV['FACTER_GEM_VERSION'] diff --git a/acceptance/tests/resource/mailalias/create.rb b/acceptance/tests/resource/mailalias/create.rb deleted file mode 100644 index c6a073c..0000000 --- a/acceptance/tests/resource/mailalias/create.rb +++ /dev/null @@ -1,32 +0,0 @@ -test_name 'should create an email alias' - -confine :except, platform: 'windows' - -tag 'audit:low', - 'audit:refactor', # Use block style `test_name` - 'audit:acceptance' # Could be done at the integration (or unit) layer though -# actual changing of resources could irreparably damage a -# host running this, or require special permissions. - -name = "pl#{rand(999_999).to_i}" -agents.each do |agent| - teardown do - # (teardown) restore the alias file - on(agent, 'mv /tmp/aliases /etc/aliases', acceptable_exit_codes: [0, 1]) - end - - #------- SETUP -------# - step '(setup) backup alias file' - on(agent, 'cp /etc/aliases /tmp/aliases', acceptable_exit_codes: [0, 1]) - - #------- TESTS -------# - step 'create a mailalias with puppet' - args = ['ensure=present', - 'recipient="foo,bar,baz"'] - on(agent, puppet_resource('mailalias', name, args)) - - step 'verify the alias exists' - on(agent, 'cat /etc/aliases') do |res| - assert_match(%r{#{name}:.*foo,bar,baz}, res.stdout, 'mailalias not in aliases file') - end -end diff --git a/acceptance/tests/resource/mailalias/destroy.rb b/acceptance/tests/resource/mailalias/destroy.rb deleted file mode 100644 index 530a90b..0000000 --- a/acceptance/tests/resource/mailalias/destroy.rb +++ /dev/null @@ -1,40 +0,0 @@ -test_name 'should delete an email alias' - -confine :except, platform: 'windows' - -tag 'audit:low', - 'audit:refactor', # Use block style `test_name` - 'audit:acceptance' # Could be done at the integration (or unit) layer though -# actual changing of resources could irreparably damage a -# host running this, or require special permissions. - -name = "pl#{rand(999_999).to_i}" -agents.each do |agent| - teardown do - # (teardown) restore the alias file - on(agent, 'mv /tmp/aliases /etc/aliases', acceptable_exit_codes: [0, 1]) - end - - #------- SETUP -------# - step '(setup) backup alias file' - on(agent, 'cp /etc/aliases /tmp/aliases', acceptable_exit_codes: [0, 1]) - - step '(setup) create a mailalias' - on(agent, "echo '#{name}: foo,bar,baz' >> /etc/aliases") - - step '(setup) verify the alias exists' - on(agent, 'cat /etc/aliases') do |res| - assert_match(%r{#{name}:.*foo,bar,baz}, res.stdout, 'mailalias not in aliases file') - end - - #------- TESTS -------# - step 'delete the aliases database with puppet' - args = ['ensure=absent', - 'recipient="foo,bar,baz"'] - on(agent, puppet_resource('mailalias', name, args)) - - step 'verify the alias is absent' - on(agent, 'cat /etc/aliases') do |res| - assert_no_match(%r{#{name}:.*foo,bar,baz}, res.stdout, 'mailalias was not removed from aliases file') - end -end diff --git a/acceptance/tests/resource/mailalias/modify.rb b/acceptance/tests/resource/mailalias/modify.rb deleted file mode 100644 index 7978a7e..0000000 --- a/acceptance/tests/resource/mailalias/modify.rb +++ /dev/null @@ -1,40 +0,0 @@ -test_name 'should modify an email alias' - -confine :except, platform: 'windows' - -tag 'audit:low', - 'audit:refactor', # Use block style `test_name` - 'audit:acceptance' # Could be done at the integration (or unit) layer though -# actual changing of resources could irreparably damage a -# host running this, or require special permissions. - -name = "pl#{rand(999_999).to_i}" -agents.each do |agent| - teardown do - # (teardown) restore the alias file - on(agent, 'mv /tmp/aliases /etc/aliases', acceptable_exit_codes: [0, 1]) - end - - #------- SETUP -------# - step '(setup) backup alias file' - on(agent, 'cp /etc/aliases /tmp/aliases', acceptable_exit_codes: [0, 1]) - - step '(setup) create a mailalias' - on(agent, "echo '#{name}: foo,bar,baz' >> /etc/aliases") - - step '(setup) verify the alias exists' - on(agent, 'cat /etc/aliases') do |res| - assert_match(%r{#{name}:.*foo,bar,baz}, res.stdout, 'mailalias not in aliases file') - end - - #------- TESTS -------# - step 'modify the aliases database with puppet' - args = ['ensure=present', - 'recipient="foo,bar,baz,blarvitz"'] - on(agent, puppet_resource('mailalias', name, args)) - - step 'verify the updated alias is present' - on(agent, 'cat /etc/aliases') do |res| - assert_match(%r{#{name}:.*foo,bar,baz,blarvitz}, res.stdout, 'updated mailalias not in aliases file') - end -end diff --git a/acceptance/tests/resource/mailalias/query.rb b/acceptance/tests/resource/mailalias/query.rb deleted file mode 100644 index f63e4cf..0000000 --- a/acceptance/tests/resource/mailalias/query.rb +++ /dev/null @@ -1,35 +0,0 @@ -test_name 'should be able to find an exisitng email alias' - -confine :except, platform: 'windows' - -tag 'audit:low', - 'audit:refactor', # Use block style `test_name` - 'audit:acceptance' # Could be done at the integration (or unit) layer though -# actual changing of resources could irreparably damage a -# host running this, or require special permissions. - -name = "pl#{rand(999_999).to_i}" -agents.each do |agent| - teardown do - # (teardown) restore the alias file - on(agent, 'mv /tmp/aliases /etc/aliases', acceptable_exit_codes: [0, 1]) - end - - #------- SETUP -------# - step '(setup) backup alias file' - on(agent, 'cp /etc/aliases /tmp/aliases', acceptable_exit_codes: [0, 1]) - - step '(setup) create a mailalias' - on(agent, "echo '#{name}: foo,bar,baz' >> /etc/aliases") - - step '(setup) verify the alias exists' - on(agent, 'cat /etc/aliases') do |res| - assert_match(%r{#{name}:.*foo,bar,baz}, res.stdout, 'mailalias not in aliases file') - end - - #------- TESTS -------# - step 'query for the mail alias with puppet' - on(agent, puppet_resource('mailalias', name)) do - fail_test "didn't find the scheduled_task #{name}" unless stdout.include? 'present' - end -end diff --git a/spec/acceptance/nodesets/default.yml b/spec/acceptance/nodesets/default.yml new file mode 100644 index 0000000..b53e1a1 --- /dev/null +++ b/spec/acceptance/nodesets/default.yml @@ -0,0 +1,19 @@ +--- +HOSTS: + ubuntu1604-64-1: + pe_dir: + pe_ver: + pe_upgrade_dir: + pe_upgrade_ver: + hypervisor: vmpooler + platform: ubuntu-16.04-amd64 + packaging_platform: ubuntu-16.04-amd64 + template: ubuntu-1604-x86_64 + roles: + - agent + - default +CONFIG: + type: agent + nfs_server: none + consoleport: 443 + pooling_api: http://vmpooler.delivery.puppetlabs.net/ diff --git a/spec/acceptance/tests/create_spec.rb b/spec/acceptance/tests/create_spec.rb new file mode 100644 index 0000000..82adfec --- /dev/null +++ b/spec/acceptance/tests/create_spec.rb @@ -0,0 +1,31 @@ +require 'spec_helper_acceptance' + +RSpec.context 'Mailalias: should create an email alias' do + name = "pl#{rand(999_999).to_i}" + + before(:all) do + non_windows_agents.each do |agent| + on(agent, 'cp /etc/aliases /tmp/aliases', acceptable_exit_codes: [0, 1]) + end + end + + after(:all) do + non_windows_agents.each do |agent| + on(agent, 'mv /tmp/aliases /etc/aliases', acceptable_exit_codes: [0, 1]) + end + end + + non_windows_agents.each do |agent| + it 'creates a mailalias with puppet' do + args = ['ensure=present', + 'recipient="foo,bar,baz"'] + on(agent, puppet_resource('mailalias', name, args)) + end + + it 'verifies the alias exists' do + on(agent, 'cat /etc/aliases') do |res| + assert_match(%r{#{name}:.*foo,bar,baz}, res.stdout, 'mailalias not in aliases file') + end + end + end +end diff --git a/spec/acceptance/tests/destroy_spec.rb b/spec/acceptance/tests/destroy_spec.rb new file mode 100644 index 0000000..499b613 --- /dev/null +++ b/spec/acceptance/tests/destroy_spec.rb @@ -0,0 +1,41 @@ +require 'spec_helper_acceptance' + +RSpec.context 'should delete an email alias' do + name = "pl#{rand(999_999).to_i}" + + before(:all) do + agents.each do |agent| + # (setup) backup alias file + on(agent, 'cp /etc/aliases /tmp/aliases', acceptable_exit_codes: [0, 1]) + + # (setup) create a mailalias + on(agent, "echo '#{name}: foo,bar,baz' >> /etc/aliases") + + # (setup) verify the alias exists + on(agent, 'cat /etc/aliases') do |res| + assert_match(%r{#{name}:.*foo,bar,baz}, res.stdout, 'mailalias not in aliases file') + end + end + end + + after(:all) do + agents.each do |agent| + # (teardown) restore the alias file + on(agent, 'mv /tmp/aliases /etc/aliases', acceptable_exit_codes: [0, 1]) + end + end + + agents.each do |agent| + it 'deletes the aliases database with puppet' do + args = ['ensure=absent', + 'recipient="foo,bar,baz"'] + on(agent, puppet_resource('mailalias', name, args)) + end + + it 'verifies the alias is absent' do + on(agent, 'cat /etc/aliases') do |res| + assert_no_match(%r{#{name}:.*foo,bar,baz}, res.stdout, 'mailalias was not removed from aliases file') + end + end + end +end diff --git a/spec/acceptance/tests/modify_spec.rb b/spec/acceptance/tests/modify_spec.rb new file mode 100644 index 0000000..b3937dc --- /dev/null +++ b/spec/acceptance/tests/modify_spec.rb @@ -0,0 +1,42 @@ +require 'spec_helper_acceptance' + +RSpec.context 'should modify an email alias' do + name = "pl#{rand(999_999).to_i}" + + before(:all) do + non_windows_agents.each do |agent| + #------- SETUP -------# + # (setup) backup alias file + on(agent, 'cp /etc/aliases /tmp/aliases', acceptable_exit_codes: [0, 1]) + + # (setup) create a mailalias + on(agent, "echo '#{name}: foo,bar,baz' >> /etc/aliases") + + # (setup) verify the alias exists + on(agent, 'cat /etc/aliases') do |res| + assert_match(%r{#{name}:.*foo,bar,baz}, res.stdout, 'mailalias not in aliases file') + end + end + end + + after(:all) do + non_windows_agents.each do |agent| + # (teardown) restore the alias file + on(agent, 'mv /tmp/aliases /etc/aliases', acceptable_exit_codes: [0, 1]) + end + end + + non_windows_agents.each do |agent| + it 'modifies the aliases database with puppet' do + args = ['ensure=present', + 'recipient="foo,bar,baz,blarvitz"'] + on(agent, puppet_resource('mailalias', name, args)) + end + + it 'verifies the updated alias is present' do + on(agent, 'cat /etc/aliases') do |res| + assert_match(%r{#{name}:.*foo,bar,baz,blarvitz}, res.stdout, 'updated mailalias not in aliases file') + end + end + end +end diff --git a/spec/acceptance/tests/query_spec.rb b/spec/acceptance/tests/query_spec.rb new file mode 100644 index 0000000..c888a0b --- /dev/null +++ b/spec/acceptance/tests/query_spec.rb @@ -0,0 +1,35 @@ +require 'spec_helper_acceptance' + +RSpec.context 'should be able to find an exisitng email alias' do + name = "pl#{rand(999_999).to_i}" + + before(:all) do + non_windows_agents.each do |agent| + # (setup) backup alias file + on(agent, 'cp /etc/aliases /tmp/aliases', acceptable_exit_codes: [0, 1]) + + # (setup) create a mailalias + on(agent, "echo '#{name}: foo,bar,baz' >> /etc/aliases") + + # (setup) verify the alias exists + on(agent, 'cat /etc/aliases') do |res| + assert_match(%r{#{name}:.*foo,bar,baz}, res.stdout, 'mailalias not in aliases file') + end + end + end + + after(:all) do + non_windows_agents.each do |agent| + # (teardown) restore the alias file + on(agent, 'mv /tmp/aliases /etc/aliases', acceptable_exit_codes: [0, 1]) + end + end + + agents.each do |agent| + it 'queries for the mail alias with puppet' do + on(agent, puppet_resource('mailalias', name)) do + fail_test "didn't find the scheduled_task #{name}" unless stdout.include? 'present' + end + end + end +end diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb new file mode 100644 index 0000000..218a34d --- /dev/null +++ b/spec/spec_helper_acceptance.rb @@ -0,0 +1,24 @@ +require 'puppet' +require 'beaker-rspec' +require 'beaker/module_install_helper' +require 'beaker/puppet_install_helper' + +$LOAD_PATH << File.join(__dir__, 'acceptance/lib') + +def beaker_opts + { debug: true, trace: true, expect_failures: true, acceptable_exit_codes: (0...256) } +end + +def non_windows_agents + agents.select { |agent| !agent['platform'].include?('windows') } +end + +RSpec.configure do |c| + c.before :suite do + unless ENV['BEAKER_provision'] == 'no' + run_puppet_install_helper + install_module_on(hosts_as(hosts)) + install_module_dependencies_on(hosts) + end + end +end |