Skip to content

Commit

Permalink
Add more chefspec tests
Browse files Browse the repository at this point in the history
Add some missing spec tests to cover more chef resources,
but it reports some same untouched resources repeatedly
for many times.

Fixes issue #190
  • Loading branch information
wenchma committed Feb 3, 2015
1 parent eb5389a commit 05b1780
Show file tree
Hide file tree
Showing 7 changed files with 135 additions and 25 deletions.
15 changes: 0 additions & 15 deletions spec/community_plugins.rb

This file was deleted.

37 changes: 37 additions & 0 deletions spec/community_plugins_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
require 'spec_helper'

describe 'rabbitmq::community_plugins' do
let(:runner) { ChefSpec::ServerRunner.new(REDHAT_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
node.set['rabbitmq']['community_plugins'] = { 'rabbitmq_community_plugin' => 'http://sample.com/rabbitmq_community_plugin.ez' }
runner.converge(described_recipe)
end

let(:file_cache_path) { Chef::Config[:file_cache_path] }

it 'includes the `default` recipe' do
expect(chef_run).to include_recipe('rabbitmq::default')
end

plugins = { 'rabbitmq_community_plugin' => 'http://sample.com/rabbitmq_community_plugin.ez' }

plugins.each do |plugin, download_url|
it 'creates the remote files with attributes' do
expect(chef_run).to create_remote_file("/usr/lib/rabbitmq/lib/rabbitmq_server-#{node['rabbitmq']['version']}/plugins/#{plugin}.ez").with(
:mode => '0644',
:owner => 'root',
:group => 'root',
:source => download_url
)
end

it 'enables community plugins' do
expect(chef_run).to enable_rabbitmq_plugin(plugin)
end

it 'runs the executes with plugins' do
expect(chef_run).to run_execute("rabbitmq-plugins enable #{plugin}")
end
end
end
60 changes: 52 additions & 8 deletions spec/default_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@
let(:node) { runner.node }

let(:chef_run) do
node.set['rabbitmq']['config'] = '/path/to/rabbitmq'
runner.converge(described_recipe)
end

let(:file_cache_path) { Chef::Config[:file_cache_path] }

include_context 'rabbitmq-stubs'

it 'creates a directory for mnesiadir' do
expect(chef_run).to create_directory('/var/lib/rabbitmq/mnesia')
end
Expand Down Expand Up @@ -48,7 +49,7 @@
end

it 'creates a template rabbitmq.config with attributes' do
expect(chef_run).to create_template('/path/to/rabbitmq.config').with(
expect(chef_run).to create_template('/etc/rabbitmq/rabbitmq.config').with(
:user => 'root',
:group => 'root',
:source => 'rabbitmq.config.erb',
Expand Down Expand Up @@ -96,16 +97,38 @@
runner.converge(described_recipe)
end

include_context 'rabbitmq-stubs'

it 'should install the logrotate package' do
expect(chef_run).to install_package('logrotate')
end

it 'creates a rabbitmq-server deb in the cache path' do
expect(chef_run).to create_remote_file_if_missing("#{Chef::Config[:file_cache_path]}/rabbitmq-server_#{node['rabbitmq']['version']}-1_all.deb")
expect(chef_run).to create_remote_file_if_missing('/tmp/rabbitmq-server_3.4.3-1_all.deb')
end

it 'installs the rabbitmq-server deb_package with the default action' do
expect(chef_run).to install_dpkg_package("#{Chef::Config[:file_cache_path]}/rabbitmq-server_#{node['rabbitmq']['version']}-1_all.deb")
expect(chef_run).to install_dpkg_package('/tmp/rabbitmq-server_3.4.3-1_all.deb')
end
end

it 'creates a rabbitmq-server rpm in the cache path' do
expect(chef_run).to create_remote_file_if_missing('/tmp/rabbitmq-server-3.4.3-1.noarch.rpm')
expect(chef_run).to_not create_remote_file_if_missing('/tmp/not-rabbitmq-server-3.4.3-1.noarch.rpm')
end

it 'installs the rabbitmq-server rpm_package with the default action' do
expect(chef_run).to install_rpm_package('/tmp/rabbitmq-server-3.4.3-1.noarch.rpm')
expect(chef_run).to_not install_rpm_package('/tmp/not-rabbitmq-server-3.4.3-1.noarch.rpm')
end

describe 'uses distro version' do
before do
node.set['rabbitmq']['use_distro_version'] = true
end

it 'should install rabbitmq-server package' do
expect(chef_run).to install_package('rabbitmq-server')
end
end

Expand All @@ -122,20 +145,41 @@
end
end

describe 'redhat' do
let(:runner) { ChefSpec::ServerRunner.new(REDHAT_OPTS) }
describe 'fedora' do
let(:runner) { ChefSpec::ServerRunner.new(FEDORA_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
node.set['rabbitmq']['version'] = '3.4.3'
runner.converge(described_recipe)
end

it 'creates a rabbitmq-server rpm in the cache path' do
expect(chef_run).to create_remote_file_if_missing("#{Chef::Config[:file_cache_path]}/rabbitmq-server-#{node['rabbitmq']['version']}-1.noarch.rpm")
expect(chef_run).to create_remote_file_if_missing('/tmp/rabbitmq-server-3.4.3-1.noarch.rpm')
expect(chef_run).to_not create_remote_file_if_missing('/tmp/not-rabbitmq-server-3.4.3-1.noarch.rpm')
end

it 'installs the rabbitmq-server rpm_package with the default action' do
expect(chef_run).to install_rpm_package("#{Chef::Config[:file_cache_path]}/rabbitmq-server-#{node['rabbitmq']['version']}-1.noarch.rpm")
expect(chef_run).to install_rpm_package('/tmp/rabbitmq-server-3.4.3-1.noarch.rpm')
expect(chef_run).to_not install_rpm_package('/tmp/not-rabbitmq-server-3.4.3-1.noarch.rpm')
end

describe 'uses distro version' do
before do
node.set['rabbitmq']['use_distro_version'] = true
end

it 'should install rabbitmq-server package' do
expect(chef_run).to install_package('rabbitmq-server')
end
end
end

it 'creates a template rabbitmq.config with attributes' do
expect(chef_run).to create_template('/etc/rabbitmq/rabbitmq.config').with(
:user => 'root',
:group => 'root',
:source => 'rabbitmq.config.erb',
:mode => 00644
)
end
end
12 changes: 12 additions & 0 deletions spec/mgmt_console_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,16 @@
it 'includes the `default` recipe' do
expect(chef_run).to include_recipe('rabbitmq::default')
end

it 'enables rabbitmq plugins' do
%w(rabbitmq_management rabbitmq_management_visualiser).each do |plugin|
expect(chef_run).to enable_rabbitmq_plugin(plugin)
end
end

it 'runs the executes with plugins' do
%w(rabbitmq_management rabbitmq_management_visualiser).each do |plugin|
expect(chef_run).to run_execute("rabbitmq-plugins enable #{plugin}")
end
end
end
12 changes: 12 additions & 0 deletions spec/policy_management_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,16 @@
it 'includes the `default` recipe' do
expect(chef_run).to include_recipe('rabbitmq::default')
end

it 'sets rabbitmq policies' do
%w(ha-all ha-two).each do |policy|
expect(chef_run).to set_rabbitmq_policy(policy)
end
end

it 'runs the executes with policies' do
%w(ha-all ha-two).each do |policy|
expect(chef_run).to run_execute("set_policy #{policy}")
end
end
end
20 changes: 18 additions & 2 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,31 @@
REDHAT_OPTS = {
:platform => 'redhat',
:version => '6.5',
:log_level => LOG_LEVEL
:log_level => LOG_LEVEL,
:step_into => %w(rabbitmq_plugin rabbitmq_policy),
:file_cache_path => '/tmp'
}
UBUNTU_OPTS = {
:platform => 'ubuntu',
:version => '14.04',
:log_level => LOG_LEVEL
:log_level => LOG_LEVEL,
:file_cache_path => '/tmp'
}
CENTOS_OPTS = {
:platform => 'centos',
:version => '6.5',
:log_level => LOG_LEVEL
}
FEDORA_OPTS = {
:platform => 'fedora',
:version => '20',
:log_level => LOG_LEVEL,
:file_cache_path => '/tmp'
}

shared_context 'rabbitmq-stubs' do
before do
allow_any_instance_of(Chef::Config).to receive(:file_cache_path)
.and_return('/tmp')
end
end
4 changes: 4 additions & 0 deletions spec/user_management_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,8 @@
it 'includes the `virtualhost_management` recipe' do
expect(chef_run).to include_recipe('rabbitmq::virtualhost_management')
end

it 'adds rabbitmq enabled users' do
expect(chef_run).to add_rabbitmq_user('guest')
end
end

0 comments on commit 05b1780

Please sign in to comment.