spec/unit/recipes/default_spec.rb (131 lines of code) (raw):

require 'spec_helper' describe 'auditbeat::default' do shared_examples_for 'auditbeat' do context 'all_platforms' do it 'run ruby_block delay auditbeat service start' do expect(chef_run).to run_ruby_block('delay auditbeat service start') end it 'enable auditbeat service' do expect(chef_run).to enable_service('auditbeat') end end end context 'preview' do let(:chef_run) do ChefSpec::SoloRunner.new(platform: 'centos', version: '6.8') do |node| node.automatic['platform_family'] = 'rhel' end.converge(described_recipe) end let(:node) { chef_run.node } it 'include auditbeat::install_package_preview recipe' do expect(chef_run).to include_recipe('auditbeat::install_package_preview') end it 'install auditbeat package' do expect(chef_run).to install_package('auditbeat') end it 'download auditbeat package file' do expect(chef_run).to create_remote_file('auditbeat_package_file') end end context 'rhel' do let(:chef_run) do ChefSpec::SoloRunner.new(platform: 'centos', version: '6.8') do |node| node.automatic['platform_family'] = 'rhel' node.override['auditbeat']['version'] = '6.0.0' end.converge(described_recipe) end let(:node) { chef_run.node } include_examples 'auditbeat' it 'configure /etc/auditbeat/auditbeat.yml' do expect(chef_run).to create_file('/etc/auditbeat/auditbeat.yml') end it 'adds beats yum repository' do expect(chef_run).to create_yum_repository('beats') end it 'include recipe auditbeat::install_package' do expect(chef_run).to include_recipe('auditbeat::install_package') end it 'install auditbeat package' do expect(chef_run).to install_package('auditbeat') end it "has correct default['auditbeat']['config']['auditbeat']['registry_file']" do expect(node['auditbeat']['config']['auditbeat']['registry_file']).to eq('/var/lib/auditbeat/registry') end it "has correct default['auditbeat']['conf_dir']" do expect(node['auditbeat']['conf_dir']).to eq('/etc/auditbeat') end it 'add yum_version_lock auditbeat' do expect(chef_run).to update_yum_version_lock('auditbeat') end end context 'ubuntu' do let(:chef_run) do ChefSpec::SoloRunner.new(platform: 'ubuntu', version: '14.04') do |node| node.automatic['platform_family'] = 'debian' node.override['lsb']['codename'] = 'trusty' node.override['auditbeat']['version'] = '6.0.0' end.converge(described_recipe) end let(:node) { chef_run.node } include_examples 'auditbeat' it 'configure /etc/auditbeat/auditbeat.yml' do expect(chef_run).to create_file('/etc/auditbeat/auditbeat.yml') end it 'adds beats apt repository' do expect(chef_run).to add_apt_repository('beats') end it 'add apt_preference auditbeat' do expect(chef_run).to add_apt_preference('auditbeat') end it 'include recipe auditbeat::install_package' do expect(chef_run).to include_recipe('auditbeat::install_package') end it 'install auditbeat package' do expect(chef_run).to install_package('auditbeat') end it 'install apt-transport-https package' do expect(chef_run).to install_package('apt-transport-https') end it "has correct default['auditbeat']['config']['auditbeat']['registry_file']" do expect(node['auditbeat']['config']['auditbeat']['registry_file']).to eq('/var/lib/auditbeat/registry') end it "has correct default['auditbeat']['conf_dir']" do expect(node['auditbeat']['conf_dir']).to eq('/etc/auditbeat') end end context 'windows' do let(:chef_run) do ChefSpec::SoloRunner.new(platform: 'windows', version: '2012R2') do |node| node.automatic['platform_family'] = 'windows' node.automatic['platform_family'] = 'windows' node.automatic['kernel']['machine'] = 'x86_64' end.converge(described_recipe) end let(:node) { chef_run.node } include_examples 'auditbeat' it 'configure C:/opt/auditbeat/auditbeat-6.0.0-beta1-windows/auditbeat.yml' do expect(chef_run).to create_file('C:/opt/auditbeat/auditbeat-6.0.0-beta1-windows-x86_64/auditbeat.yml') end it 'include recipe auditbeat::install_windows' do expect(chef_run).to include_recipe('auditbeat::install_windows') end it 'download auditbeat package file' do expect(chef_run).to create_remote_file('auditbeat_package_file') end it 'create auditbeat base dir C:/opt/auditbeat' do expect(chef_run).to create_directory('C:/opt/auditbeat') end it 'unzip auditbeat package file to C:/opt/auditbeat' do expect(chef_run).to unzip_windows_zipfile_to('C:/opt/auditbeat') end it 'run powershell_script to install auditbeat as service' do expect(chef_run).to run_powershell_script('install auditbeat as service') end it "has correct default['auditbeat']['conf_dir']" do expect(node['auditbeat']['conf_dir']).to eq('C:/opt/auditbeat/auditbeat-6.0.0-beta1-windows-x86_64') end it "has correct default['auditbeat']['config']['auditbeat']['registry_file']" do expect(node['auditbeat']['config']['auditbeat']['registry_file']).to eq('C:/opt/auditbeat/auditbeat-6.0.0-beta1-windows-x86_64/registry') end end end