ensure_packages_spec.rb 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. require 'spec_helper'
  2. describe 'ensure_packages' do
  3. it { is_expected.not_to eq(nil) }
  4. it { is_expected.to run.with_params.and_raise_error(Puppet::ParseError) }
  5. it {
  6. pending('should not accept numbers as arguments')
  7. is_expected.to run.with_params(1).and_raise_error(Puppet::ParseError)
  8. }
  9. it {
  10. pending('should not accept numbers as arguments')
  11. is_expected.to run.with_params(['packagename', 1]).and_raise_error(Puppet::ParseError)
  12. }
  13. it { is_expected.to run.with_params('packagename') }
  14. it { is_expected.to run.with_params(%w[packagename1 packagename2]) }
  15. context 'when given a catalog with "package { puppet: ensure => absent }"' do
  16. let(:pre_condition) { 'package { puppet: ensure => absent }' }
  17. describe 'after running ensure_package("facter")' do
  18. before(:each) { subject.call(['facter']) }
  19. # this lambda is required due to strangeness within rspec-puppet's expectation handling
  20. it { expect(-> { catalogue }).to contain_package('puppet').with_ensure('absent') }
  21. it { expect(-> { catalogue }).to contain_package('facter').with_ensure('present') }
  22. end
  23. describe 'after running ensure_package("facter", { "provider" => "gem" })' do
  24. before(:each) { subject.call(['facter', { 'provider' => 'gem' }]) }
  25. # this lambda is required due to strangeness within rspec-puppet's expectation handling
  26. it { expect(-> { catalogue }).to contain_package('puppet').with_ensure('absent').without_provider }
  27. it { expect(-> { catalogue }).to contain_package('facter').with_ensure('present').with_provider('gem') }
  28. end
  29. end
  30. context 'when given an empty packages array' do
  31. let(:pre_condition) { 'notify { "hi": } -> Package <| |>; $somearray = ["vim",""]; ensure_packages($somearray)' }
  32. describe 'after running ensure_package(["vim", ""])' do
  33. it { expect { catalogue }.to raise_error(Puppet::ParseError, %r{Empty String provided}) }
  34. end
  35. end
  36. context 'when given hash of packages' do
  37. before(:each) do
  38. subject.call([{ 'foo' => { 'provider' => 'rpm' }, 'bar' => { 'provider' => 'gem' } }, { 'ensure' => 'present' }])
  39. subject.call([{ 'パッケージ' => { 'ensure' => 'absent' } }])
  40. subject.call([{ 'ρǻ¢κầģẻ' => { 'ensure' => 'absent' } }])
  41. end
  42. # this lambda is required due to strangeness within rspec-puppet's expectation handling
  43. it { expect(-> { catalogue }).to contain_package('foo').with('provider' => 'rpm', 'ensure' => 'present') }
  44. it { expect(-> { catalogue }).to contain_package('bar').with('provider' => 'gem', 'ensure' => 'present') }
  45. context 'with UTF8 and double byte characters' do
  46. it { expect(-> { catalogue }).to contain_package('パッケージ').with('ensure' => 'absent') }
  47. it { expect(-> { catalogue }).to contain_package('ρǻ¢κầģẻ').with('ensure' => 'absent') }
  48. end
  49. end
  50. context 'when given a catalog with "package { puppet: ensure => present }"' do
  51. let(:pre_condition) { 'package { puppet: ensure => present }' }
  52. describe 'after running ensure_package("puppet", { "ensure" => "installed" })' do
  53. before(:each) { subject.call(['puppet', { 'ensure' => 'installed' }]) }
  54. # this lambda is required due to strangeness within rspec-puppet's expectation handling
  55. it { expect(-> { catalogue }).to contain_package('puppet').with_ensure('present') }
  56. end
  57. end
  58. end