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 let(:key_id) { '6F6B15509CF8E59E6E469F327F438280EF8D349F' }
50 describe 'normal operation' do
51 describe 'default options' do
53 expect(subject).to contain_apt_key(title).with(id: title,
56 server: 'keyserver.ubuntu.com',
60 it 'contains the apt_key present anchor' do
61 expect(subject).to contain_anchor("apt_key #{title} present")
65 describe 'title and key =>' do
76 it 'contains the apt_key' do
77 expect(subject).to contain_apt_key(title).with(id: key_id,
80 server: 'keyserver.ubuntu.com',
84 it 'contains the apt_key present anchor' do
85 expect(subject).to contain_anchor("apt_key #{key_id} present")
89 describe 'ensure => absent' do
96 it 'contains the apt_key' do
97 expect(subject).to contain_apt_key(title).with(id: title,
100 server: 'keyserver.ubuntu.com',
104 it 'contains the apt_key absent anchor' do
105 expect(subject).to contain_anchor("apt_key #{title} absent")
109 describe 'set a bunch of things!' do
112 content: 'GPG key content',
113 source: 'http://apt.puppetlabs.com/pubkey.gpg',
114 server: 'pgp.mit.edu',
119 it 'contains the apt_key' do
120 expect(subject).to contain_apt_key(title).with(contains_apt_key_example(title))
123 it 'contains the apt_key present anchor' do
124 expect(subject).to contain_anchor("apt_key #{title} present")
128 context 'when domain has dash' do
131 server: 'p-gp.m-it.edu'
135 it 'contains the apt_key' do
136 expect(subject).to contain_apt_key(title).with(id: title,
137 server: 'p-gp.m-it.edu')
141 context 'with url' do
144 server: 'hkp://pgp.mit.edu'
148 it 'contains the apt_key' do
149 expect(subject).to contain_apt_key(title).with(id: title,
150 server: 'hkp://pgp.mit.edu')
154 context 'with url and port number' do
157 server: 'hkp://pgp.mit.edu:80'
161 it 'contains the apt_key' do
162 expect(subject).to contain_apt_key(title).with(id: title,
163 server: 'hkp://pgp.mit.edu:80')
168 describe 'validation' do
169 context 'when domain begins with a dash' do
172 server: '-pgp.mit.edu'
177 expect(subject).to raise_error(%r{expects a match})
181 context 'when domain begins with dot' do
184 server: '.pgp.mit.edu'
189 expect(subject).to raise_error(%r{expects a match})
193 context 'when domain ends with dot' do
196 server: 'pgp.mit.edu.'
201 expect(subject).to raise_error(%r{expects a match})
205 context 'when url character limit is exceeded' do
208 server: 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu'
213 expect(subject).to raise_error(%r{expects a match})
217 context 'with incorrect port number url' do
220 server: 'hkp://pgp.mit.edu:8008080'
225 expect(subject).to raise_error(%r{expects a match})
229 context 'with incorrect protocol for url' do
232 server: 'abc://pgp.mit.edu:80'
237 expect(subject).to raise_error(%r{expects a match})
241 context 'with missing port number url' do
244 server: 'hkp://pgp.mit.edu:'
249 expect(subject).to raise_error(%r{expects a match})
253 context 'with url ending with a dot' do
256 server: 'hkp://pgp.mit.edu.'
261 expect(subject).to raise_error(%r{expects a match})
265 context 'with url begin with a dash' do
268 server: 'hkp://-pgp.mit.edu'
273 expect(subject).to raise_error(%r{expects a match})
277 context 'with invalid key' do
279 'Out of rum. Why? Why are we out of rum?'
283 expect(subject).to raise_error(%r{expects a match})
287 context 'with invalid source' do
290 source: 'afp://puppetlabs.com/key.gpg'
295 expect(subject).to raise_error(%r{evaluating a Resource})
299 context 'with invalid content' do
307 expect(subject).to raise_error(%r{expects a})
311 context 'with invalid server' do
314 server: 'two bottles of rum'
319 expect(subject).to raise_error(%r{expects a match})
323 context 'with invalid keyserver_options' do
331 expect(subject).to raise_error(%r{expects a})
335 context 'with invalid ensure' do
343 expect(subject).to raise_error(%r{Enum\['absent', 'present', 'refreshed'\]})
347 describe 'duplication - two apt::key resources for same key, different titles' do
348 let :pre_condition do
349 "#{super()}\napt::key { 'duplicate': id => '#{title}', }"
352 it 'contains the duplicate apt::key resource' do
353 expect(subject).to contain_apt__key('duplicate').with(id: title,
357 it 'contains the original apt::key resource' do
358 expect(subject).to contain_apt__key(title).with(id: title,
362 it 'contains the native apt_key' do
363 expect(subject).to contain_apt_key('duplicate').with(apt_key_example(title))
366 it 'does not contain the original apt_key' do
367 expect(subject).not_to contain_apt_key(title)
371 describe 'duplication - two apt::key resources, different ensure' do
372 let :pre_condition do
373 "#{super()}\napt::key { 'duplicate': id => '#{title}', ensure => 'absent', }"
376 it 'informs the user of the impossibility' do
377 expect(subject).to raise_error(%r{already ensured as absent})