Update spec files
[puppet-modules/puppetlabs-apt.git] / spec / defines / mark_spec.rb
1 # frozen_string_literal: true
2
3 require 'spec_helper'
4
5 describe 'apt::mark', type: :define do
6   let :title do
7     'mysource'
8   end
9
10   let :facts do
11     {
12       os: {
13         family: 'Debian',
14         name: 'Debian',
15         release: {
16           major: '9',
17           full: '9.0',
18         },
19         distro: {
20           codename: 'stretch',
21           id: 'Debian',
22         },
23       },
24     }
25   end
26
27   context 'with correct seting' do
28     let :params do
29       {
30         'setting' => 'manual',
31       }
32     end
33
34     it {
35       is_expected.to contain_exec('apt-mark manual mysource')
36     }
37   end
38
39   describe 'with wrong setting' do
40     let :params do
41       {
42         'setting' => 'foobar',
43       }
44     end
45
46     it do
47       is_expected.to raise_error(Puppet::PreformattedError, %r{expects a match for Enum\['auto', 'hold', 'manual', 'unhold'\], got 'foobar'})
48     end
49   end
50
51   [
52     'package',
53     'package1',
54     'package.name',
55     'package-name',
56     'package+name',
57     'p.ackagename',
58     'p+ackagename',
59     'p+',
60   ].each do |value|
61     describe 'with a valid resource title' do
62       let :title do
63         value
64       end
65
66       let :params do
67         {
68           'setting' => 'manual',
69         }
70       end
71
72       it do
73         is_expected.to contain_exec("apt-mark manual #{title}")
74       end
75     end
76   end
77
78   # packagenames starting with + are not valid as the title according to puppet
79   # good thing this is also an illegal name for debian packages
80   [
81     '|| ls -la ||',
82     'packakge with space',
83     'package<>|',
84     '|| touch /tmp/foo.txt ||',
85     'package_name',
86     'PackageName',
87     '.p',
88     'p',
89   ].each do |value|
90     describe "with an invalid resource title [#{value}]" do
91       let :title do
92         value
93       end
94
95       let :params do
96         {
97           'setting' => 'manual',
98         }
99       end
100
101       it do
102         is_expected.to raise_error(Puppet::PreformattedError, %r{Invalid package name: #{title}})
103       end
104     end
105   end
106 end