]> gitweb.fluxo.info Git - puppet-mailalias_core.git/commitdiff
Use beaker-rspec for acceptance tests
authorMelissa Stone <melissa@puppet.com>
Mon, 16 Apr 2018 17:46:10 +0000 (10:46 -0700)
committerMelissa Stone <melissa@puppet.com>
Mon, 16 Apr 2018 23:19:34 +0000 (16:19 -0700)
Gemfile
acceptance/tests/resource/mailalias/create.rb [deleted file]
acceptance/tests/resource/mailalias/destroy.rb [deleted file]
acceptance/tests/resource/mailalias/modify.rb [deleted file]
acceptance/tests/resource/mailalias/query.rb [deleted file]
spec/acceptance/nodesets/default.yml [new file with mode: 0644]
spec/acceptance/tests/create_spec.rb [new file with mode: 0644]
spec/acceptance/tests/destroy_spec.rb [new file with mode: 0644]
spec/acceptance/tests/modify_spec.rb [new file with mode: 0644]
spec/acceptance/tests/query_spec.rb [new file with mode: 0644]
spec/spec_helper_acceptance.rb [new file with mode: 0644]

diff --git a/Gemfile b/Gemfile
index 655b01465deda86cb4a610dccec7f32524d2a669..8daab33966cd8afc812ef50afb72114f079195e7 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -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 (file)
index c6a073c..0000000
+++ /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 (file)
index 530a90b..0000000
+++ /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 (file)
index 7978a7e..0000000
+++ /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 (file)
index f63e4cf..0000000
+++ /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 (file)
index 0000000..b53e1a1
--- /dev/null
@@ -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 (file)
index 0000000..82adfec
--- /dev/null
@@ -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 (file)
index 0000000..499b613
--- /dev/null
@@ -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 (file)
index 0000000..b3937dc
--- /dev/null
@@ -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 (file)
index 0000000..c888a0b
--- /dev/null
@@ -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 (file)
index 0000000..218a34d
--- /dev/null
@@ -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