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'
51 describe 'normal operation' do
52 describe 'default options' do
54 is_expected.to contain_apt_key(title).with(id: title,
57 server: 'keyserver.ubuntu.com',
60 it 'contains the apt_key present anchor' do
61 is_expected.to contain_anchor("apt_key #{title} present")
65 describe 'title and key =>' do
76 it 'contains the apt_key' do
77 is_expected.to contain_apt_key(title).with(id: GPG_KEY_ID,
80 server: 'keyserver.ubuntu.com',
83 it 'contains the apt_key present anchor' do
84 is_expected.to contain_anchor("apt_key #{GPG_KEY_ID} present")
88 describe 'ensure => absent' do
95 it 'contains the apt_key' do
96 is_expected.to contain_apt_key(title).with(id: title,
99 server: 'keyserver.ubuntu.com',
102 it 'contains the apt_key absent anchor' do
103 is_expected.to contain_anchor("apt_key #{title} absent")
107 describe 'set a bunch of things!' do
110 content: 'GPG key content',
111 source: 'http://apt.puppetlabs.com/pubkey.gpg',
112 server: 'pgp.mit.edu',
117 it 'contains the apt_key' do
118 is_expected.to contain_apt_key(title).with(contains_apt_key_example(title))
120 it 'contains the apt_key present anchor' do
121 is_expected.to contain_anchor("apt_key #{title} present")
125 context 'when domain has dash' do
128 server: 'p-gp.m-it.edu',
132 it 'contains the apt_key' do
133 is_expected.to contain_apt_key(title).with(id: title,
134 server: 'p-gp.m-it.edu')
138 context 'with url' do
141 server: 'hkp://pgp.mit.edu',
145 it 'contains the apt_key' do
146 is_expected.to contain_apt_key(title).with(id: title,
147 server: 'hkp://pgp.mit.edu')
150 context 'with url and port number' do
153 server: 'hkp://pgp.mit.edu:80',
157 it 'contains the apt_key' do
158 is_expected.to contain_apt_key(title).with(id: title,
159 server: 'hkp://pgp.mit.edu:80')
164 describe 'validation' do
165 context 'when domain begins with a dash' do
168 server: '-pgp.mit.edu',
173 is_expected .to raise_error(%r{expects a match})
177 context 'when domain begins with dot' do
180 server: '.pgp.mit.edu',
185 is_expected .to raise_error(%r{expects a match})
189 context 'when domain ends with dot' do
192 server: 'pgp.mit.edu.',
197 is_expected .to raise_error(%r{expects a match})
200 context 'when url character limit is exceeded' do
203 server: 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu',
208 is_expected.to raise_error(%r{expects a match})
211 context 'with incorrect port number url' do
214 server: 'hkp://pgp.mit.edu:8008080',
219 is_expected.to raise_error(%r{expects a match})
222 context 'with incorrect protocol for url' do
225 server: 'abc://pgp.mit.edu:80',
230 is_expected.to raise_error(%r{expects a match})
233 context 'with missing port number url' do
236 server: 'hkp://pgp.mit.edu:',
241 is_expected.to raise_error(%r{expects a match})
244 context 'with url ending with a dot' do
247 server: 'hkp://pgp.mit.edu.',
252 is_expected.to raise_error(%r{expects a match})
255 context 'with url begin with a dash' do
258 server: 'hkp://-pgp.mit.edu',
263 is_expected.to raise_error(%r{expects a match})
266 context 'with invalid key' do
268 'Out of rum. Why? Why are we out of rum?'
272 is_expected.to raise_error(%r{expects a match})
276 context 'with invalid source' do
279 source: 'afp://puppetlabs.com/key.gpg',
284 is_expected.to raise_error(%r{evaluating a Resource})
288 context 'with invalid content' do
296 is_expected.to raise_error(%r{expects a})
300 context 'with invalid server' do
303 server: 'two bottles of rum',
308 is_expected.to raise_error(%r{expects a match})
312 context 'with invalid keyserver_options' do
320 is_expected.to raise_error(%r{expects a})
324 context 'with invalid ensure' do
332 is_expected.to raise_error(%r{Enum\['absent', 'present', 'refreshed'\]})
336 describe 'duplication - two apt::key resources for same key, different titles' do
337 let :pre_condition do
338 "#{super()}\napt::key { 'duplicate': id => '#{title}', }"
341 it 'contains the duplicate apt::key resource' do
342 is_expected.to contain_apt__key('duplicate').with(id: title,
346 it 'contains the original apt::key resource' do
347 is_expected.to contain_apt__key(title).with(id: title,
351 it 'contains the native apt_key' do
352 is_expected.to contain_apt_key('duplicate').with(apt_key_example(title))
355 it 'does not contain the original apt_key' do
356 is_expected.not_to contain_apt_key(title)
360 describe 'duplication - two apt::key resources, different ensure' do
361 let :pre_condition do
362 "#{super()}\napt::key { 'duplicate': id => '#{title}', ensure => 'absent', }"
365 it 'informs the user of the impossibility' do
366 is_expected.to raise_error(%r{already ensured as absent})