1 # frozen_string_literal: true
5 def contains_apt_key_example(title)
8 source: 'http://apt.puppetlabs.com/pubkey.gpg',
10 content: params[:content],
14 def apt_key_example(title)
18 server: 'keyserver.ubuntu.com',
20 keyserver_options: nil }
23 describe 'apt::key', type: :define do
24 GPG_KEY_ID = '6F6B15509CF8E59E6E469F327F438280EF8D349F'
28 os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
42 describe 'normal operation' do
43 describe 'default options' do
45 is_expected.to contain_apt_key(title).with(id: title,
48 server: 'keyserver.ubuntu.com',
51 it 'contains the apt_key present anchor' do
52 is_expected.to contain_anchor("apt_key #{title} present")
56 describe 'title and key =>' do
67 it 'contains the apt_key' do
68 is_expected.to contain_apt_key(title).with(id: GPG_KEY_ID,
71 server: 'keyserver.ubuntu.com',
74 it 'contains the apt_key present anchor' do
75 is_expected.to contain_anchor("apt_key #{GPG_KEY_ID} present")
79 describe 'ensure => absent' do
86 it 'contains the apt_key' do
87 is_expected.to contain_apt_key(title).with(id: title,
90 server: 'keyserver.ubuntu.com',
93 it 'contains the apt_key absent anchor' do
94 is_expected.to contain_anchor("apt_key #{title} absent")
98 describe 'set a bunch of things!' do
101 content: 'GPG key content',
102 source: 'http://apt.puppetlabs.com/pubkey.gpg',
103 server: 'pgp.mit.edu',
108 it 'contains the apt_key' do
109 is_expected.to contain_apt_key(title).with(contains_apt_key_example(title))
111 it 'contains the apt_key present anchor' do
112 is_expected.to contain_anchor("apt_key #{title} present")
116 context 'when domain has dash' do
119 server: 'p-gp.m-it.edu',
123 it 'contains the apt_key' do
124 is_expected.to contain_apt_key(title).with(id: title,
125 server: 'p-gp.m-it.edu')
129 context 'with url' do
132 server: 'hkp://pgp.mit.edu',
136 it 'contains the apt_key' do
137 is_expected.to contain_apt_key(title).with(id: title,
138 server: 'hkp://pgp.mit.edu')
141 context 'with url and port number' do
144 server: 'hkp://pgp.mit.edu:80',
148 it 'contains the apt_key' do
149 is_expected.to contain_apt_key(title).with(id: title,
150 server: 'hkp://pgp.mit.edu:80')
155 describe 'validation' do
156 context 'when domain begins with a dash' do
159 server: '-pgp.mit.edu',
164 is_expected .to raise_error(%r{expects a match})
168 context 'when domain begins with dot' do
171 server: '.pgp.mit.edu',
176 is_expected .to raise_error(%r{expects a match})
180 context 'when domain ends with dot' do
183 server: 'pgp.mit.edu.',
188 is_expected .to raise_error(%r{expects a match})
191 context 'when url character limit is exceeded' do
194 server: 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu',
199 is_expected.to raise_error(%r{expects a match})
202 context 'with incorrect port number url' do
205 server: 'hkp://pgp.mit.edu:8008080',
210 is_expected.to raise_error(%r{expects a match})
213 context 'with incorrect protocol for url' do
216 server: 'abc://pgp.mit.edu:80',
221 is_expected.to raise_error(%r{expects a match})
224 context 'with missing port number url' do
227 server: 'hkp://pgp.mit.edu:',
232 is_expected.to raise_error(%r{expects a match})
235 context 'with url ending with a dot' do
238 server: 'hkp://pgp.mit.edu.',
243 is_expected.to raise_error(%r{expects a match})
246 context 'with url begin with a dash' do
249 server: 'hkp://-pgp.mit.edu',
254 is_expected.to raise_error(%r{expects a match})
257 context 'with invalid key' do
259 'Out of rum. Why? Why are we out of rum?'
263 is_expected.to raise_error(%r{expects a match})
267 context 'with invalid source' do
270 source: 'afp://puppetlabs.com/key.gpg',
275 is_expected.to raise_error(%r{evaluating a Resource})
279 context 'with invalid content' do
287 is_expected.to raise_error(%r{expects a})
291 context 'with invalid server' do
294 server: 'two bottles of rum',
299 is_expected.to raise_error(%r{expects a match})
303 context 'with invalid keyserver_options' do
311 is_expected.to raise_error(%r{expects a})
315 context 'with invalid ensure' do
323 is_expected.to raise_error(%r{Enum\['absent', 'present', 'refreshed'\]})
327 describe 'duplication - two apt::key resources for same key, different titles' do
328 let :pre_condition do
329 "#{super()}\napt::key { 'duplicate': id => '#{title}', }"
332 it 'contains the duplicate apt::key resource' do
333 is_expected.to contain_apt__key('duplicate').with(id: title,
337 it 'contains the original apt::key resource' do
338 is_expected.to contain_apt__key(title).with(id: title,
342 it 'contains the native apt_key' do
343 is_expected.to contain_apt_key('duplicate').with(apt_key_example(title))
346 it 'does not contain the original apt_key' do
347 is_expected.not_to contain_apt_key(title)
351 describe 'duplication - two apt::key resources, different ensure' do
352 let :pre_condition do
353 "#{super()}\napt::key { 'duplicate': id => '#{title}', ensure => 'absent', }"
356 it 'informs the user of the impossibility' do
357 is_expected.to raise_error(%r{already ensured as absent})