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