]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/stdlib/spec/functions/ensure_packages_spec.rb
upgrade to stdlib 4.6.1
[dsa-puppet.git] / 3rdparty / modules / stdlib / spec / functions / ensure_packages_spec.rb
1 #! /usr/bin/env ruby
2
3 require 'spec_helper'
4 require 'rspec-puppet'
5 require 'puppet_spec/compiler'
6
7 describe 'ensure_packages' do
8   include PuppetSpec::Compiler
9
10   before :each do
11     Puppet::Parser::Functions.autoloader.loadall
12     Puppet::Parser::Functions.function(:ensure_packages)
13     Puppet::Parser::Functions.function(:ensure_resource)
14     Puppet::Parser::Functions.function(:defined_with_params)
15     Puppet::Parser::Functions.function(:create_resources)
16   end
17
18   let :node     do Puppet::Node.new('localhost') end
19   let :compiler do Puppet::Parser::Compiler.new(node) end
20   let :scope    do
21     if Puppet.version.to_f >= 3.0
22       Puppet::Parser::Scope.new(compiler)
23     else
24       newscope = Puppet::Parser::Scope.new
25       newscope.compiler = compiler
26       newscope.source   = Puppet::Resource::Type.new(:node, :localhost)
27       newscope
28     end
29   end
30
31   describe 'argument handling' do
32     it 'fails with no arguments' do
33       expect {
34         scope.function_ensure_packages([])
35       }.to raise_error(Puppet::ParseError, /0 for 1 or 2/)
36     end
37
38     it 'accepts an array of values' do
39       scope.function_ensure_packages([['foo']])
40     end
41
42     it 'accepts a single package name as a string' do
43       scope.function_ensure_packages(['foo'])
44     end
45   end
46
47   context 'given a catalog with puppet package => absent' do
48     let :catalog do
49       compile_to_catalog(<<-EOS
50         ensure_packages(['facter'])
51         package { puppet: ensure => absent }
52       EOS
53       )
54     end
55
56     it 'has no effect on Package[puppet]' do
57       expect(catalog.resource(:package, 'puppet')['ensure']).to eq('absent')
58     end
59   end
60
61   context 'given a clean catalog' do
62     let :catalog do
63       compile_to_catalog('ensure_packages(["facter"])')
64     end
65
66     it 'declares package resources with ensure => present' do
67       expect(catalog.resource(:package, 'facter')['ensure']).to eq('present')
68     end
69   end
70
71   context 'given a clean catalog and specified defaults' do
72     let :catalog do
73       compile_to_catalog('ensure_packages(["facter"], {"provider" => "gem"})')
74     end
75
76     it 'declares package resources with ensure => present' do
77       expect(catalog.resource(:package, 'facter')['ensure']).to eq('present')
78       expect(catalog.resource(:package, 'facter')['provider']).to eq('gem')
79     end
80   end
81 end