Merge pull request #731 from willmeek/rubocopification
[puppet-modules/puppetlabs-apt.git] / spec / defines / source_compat_spec.rb
1 require 'spec_helper'
2
3 describe 'apt::source', type: :define do
4   GPG_KEY_ID = '6F6B15509CF8E59E6E469F327F438280EF8D349F'.freeze
5
6   let :title do
7     'my_source'
8   end
9
10   context 'mostly defaults' do
11     let :facts do
12       {
13         os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
14         lsbdistid: 'Debian',
15         lsbdistcodename: 'wheezy',
16         osfamily: 'Debian',
17         puppetversion: Puppet.version,
18       }
19     end
20
21     let :params do
22       {
23         'include' => { 'deb' => false, 'src' => true },
24         'location' => 'http://debian.mirror.iweb.ca/debian/',
25       }
26     end
27
28     it {
29       is_expected.to contain_apt__setting('list-my_source').with_content(%r{# my_source\ndeb-src http://debian.mirror.iweb.ca/debian/ wheezy main\n})
30     }
31   end
32
33   context 'no defaults' do
34     let :facts do
35       {
36         os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
37         lsbdistid: 'Debian',
38         lsbdistcodename: 'wheezy',
39         osfamily: 'Debian',
40         puppetversion: Puppet.version,
41       }
42     end
43     let :params do
44       {
45         'comment'        => 'foo',
46         'location'       => 'http://debian.mirror.iweb.ca/debian/',
47         'release'        => 'sid',
48         'repos'          => 'testing',
49         'include'        => { 'src' => false },
50         'key'            => GPG_KEY_ID,
51         'pin'            => '10',
52         'architecture'   => 'x86_64',
53         'allow_unsigned' => true,
54       }
55     end
56
57     it {
58       is_expected.to contain_apt__setting('list-my_source').with_content(%r{# foo\ndeb \[arch=x86_64 trusted=yes\] http://debian.mirror.iweb.ca/debian/ sid testing\n})
59                                                            .without_content(%r{deb-src})
60     }
61
62     it {
63       is_expected.to contain_apt__pin('my_source').that_comes_before('Apt::Setting[list-my_source]').with('ensure' => 'present',
64                                                                                                           'priority' => '10',
65                                                                                                           'origin'   => 'debian.mirror.iweb.ca')
66     }
67
68     it {
69       is_expected.to contain_apt__key("Add key: #{GPG_KEY_ID} from Apt::Source my_source").that_comes_before('Apt::Setting[list-my_source]').with('ensure' => 'present',
70                                                                                                                                                   'id' => GPG_KEY_ID)
71     }
72   end
73
74   context 'allow_unsigned true' do
75     let :facts do
76       {
77         os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
78         lsbdistid: 'Debian',
79         lsbdistcodename: 'wheezy',
80         osfamily: 'Debian',
81         puppetversion: Puppet.version,
82       }
83     end
84     let :params do
85       {
86         'include'        => { 'src' => false },
87         'location'       => 'http://debian.mirror.iweb.ca/debian/',
88         'allow_unsigned' => true,
89       }
90     end
91
92     it { is_expected.to contain_apt__setting('list-my_source').with_content(%r{# my_source\ndeb \[trusted=yes\] http://debian.mirror.iweb.ca/debian/ wheezy main\n}) }
93   end
94
95   context 'architecture equals x86_64' do
96     let :facts do
97       {
98         os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
99         lsbdistid: 'Debian',
100         lsbdistcodename: 'wheezy',
101         osfamily: 'Debian',
102         puppetversion: Puppet.version,
103       }
104     end
105     let :params do
106       {
107         'location'     => 'http://debian.mirror.iweb.ca/debian/',
108         'architecture' => 'x86_64',
109       }
110     end
111
112     it {
113       is_expected.to contain_apt__setting('list-my_source').with_content(%r{# my_source\ndeb \[arch=x86_64\] http://debian.mirror.iweb.ca/debian/ wheezy main\n})
114     }
115   end
116
117   context 'ensure => absent' do
118     let :facts do
119       {
120         os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
121         lsbdistid: 'Debian',
122         lsbdistcodename: 'wheezy',
123         osfamily: 'Debian',
124         puppetversion: Puppet.version,
125       }
126     end
127     let :params do
128       {
129         'ensure' => 'absent',
130       }
131     end
132
133     it {
134       is_expected.to contain_apt__setting('list-my_source').with('ensure' => 'absent')
135     }
136   end
137
138   describe 'validation' do
139     context 'no release' do
140       let :facts do
141         {
142           os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
143           lsbdistid: 'Debian',
144           osfamily: 'Debian',
145           puppetversion: Puppet.version,
146         }
147       end
148
149       it do
150         is_expected.to raise_error(Puppet::Error, %r{lsbdistcodename fact not available: release parameter required})
151       end
152     end
153   end
154 end