Add spec tests for apt-mark
[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     'my_source'
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 my_source')
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   ].each do |value|
57     describe 'with a valid resource title' do
58       let :title do
59         value
60       end
61
62       let :params do
63         {
64           'setting' => 'manual',
65         }
66       end
67
68       it do
69         is_expected.to contain_exec("apt-mark manual #{title}")
70       end
71     end
72   end
73
74   [
75     '|| ls -la ||',
76     'packakge with space',
77     'package<>|',
78     '|| touch /tmp/foo.txt ||',
79   ].each do |value|
80     describe 'with an invalid resource title' do
81       let :title do
82         value
83       end
84
85       let :params do
86         {
87           'setting' => 'manual',
88         }
89       end
90
91       it do
92         is_expected.to raise_error(Puppet::PreformattedError, %r{Invalid package name: #{title}})
93       end
94     end
95   end
96 end