3 describe 'apt::key', type: :define do
6 os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
9 puppetversion: Puppet.version,
12 GPG_KEY_ID = '6F6B15509CF8E59E6E469F327F438280EF8D349F'.freeze
22 describe 'normal operation' do
23 describe 'default options' do
25 is_expected.to contain_apt_key(title).with(id: title,
28 server: 'keyserver.ubuntu.com',
31 it 'contains the apt_key present anchor' do
32 is_expected.to contain_anchor("apt_key #{title} present")
36 describe 'title and key =>' do
47 it 'contains the apt_key' do
48 is_expected.to contain_apt_key(title).with(id: GPG_KEY_ID,
51 server: 'keyserver.ubuntu.com',
54 it 'contains the apt_key present anchor' do
55 is_expected.to contain_anchor("apt_key #{GPG_KEY_ID} present")
59 describe 'ensure => absent' do
66 it 'contains the apt_key' do
67 is_expected.to contain_apt_key(title).with(id: title,
70 server: 'keyserver.ubuntu.com',
73 it 'contains the apt_key absent anchor' do
74 is_expected.to contain_anchor("apt_key #{title} absent")
78 describe 'set a bunch of things!' do
81 content: 'GPG key content',
82 source: 'http://apt.puppetlabs.com/pubkey.gpg',
83 server: 'pgp.mit.edu',
88 it 'contains the apt_key' do
89 is_expected.to contain_apt_key(title).with(id: title,
91 source: 'http://apt.puppetlabs.com/pubkey.gpg',
92 server: 'pgp.mit.edu',
93 content: params[:content],
96 it 'contains the apt_key present anchor' do
97 is_expected.to contain_anchor("apt_key #{title} present")
101 context 'domain with dash' do
104 server: 'p-gp.m-it.edu',
108 it 'contains the apt_key' do
109 is_expected.to contain_apt_key(title).with(id: title,
110 server: 'p-gp.m-it.edu')
117 server: 'hkp://pgp.mit.edu',
121 it 'contains the apt_key' do
122 is_expected.to contain_apt_key(title).with(id: title,
123 server: 'hkp://pgp.mit.edu')
126 context 'url with port number' do
129 server: 'hkp://pgp.mit.edu:80',
133 it 'contains the apt_key' do
134 is_expected.to contain_apt_key(title).with(id: title,
135 server: 'hkp://pgp.mit.edu:80')
140 describe 'validation' do
141 context 'domain begin with dash' do
144 server: '-pgp.mit.edu',
149 expect { subject.call } .to raise_error(%r{does not match})
153 context 'domain begin with dot' do
156 server: '.pgp.mit.edu',
161 expect { subject.call } .to raise_error(%r{does not match})
165 context 'domain end with dot' do
168 server: 'pgp.mit.edu.',
173 expect { subject.call } .to raise_error(%r{does not match})
176 context 'exceed character url' do
179 server: 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu',
184 expect { subject.call }.to raise_error(%r{does not match})
187 context 'incorrect port number url' do
190 server: 'hkp://pgp.mit.edu:8008080',
195 expect { subject.call }.to raise_error(%r{does not match})
198 context 'incorrect protocol for url' do
201 server: 'abc://pgp.mit.edu:80',
206 expect { subject.call }.to raise_error(%r{does not match})
209 context 'missing port number url' do
212 server: 'hkp://pgp.mit.edu:',
217 expect { subject.call }.to raise_error(%r{does not match})
220 context 'url ending with a dot' do
223 server: 'hkp://pgp.mit.edu.',
228 expect { subject.call }.to raise_error(%r{does not match})
231 context 'url begin with a dash' do
234 server: 'hkp://-pgp.mit.edu',
239 expect { subject.call }.to raise_error(%r{does not match})
242 context 'invalid key' do
244 'Out of rum. Why? Why are we out of rum?'
248 expect { subject.call }.to raise_error(%r{does not match})
252 context 'invalid source' do
255 source: 'afp://puppetlabs.com/key.gpg',
260 expect { subject.call }.to raise_error(%r{does not match})
264 context 'invalid content' do
272 expect { subject.call }.to raise_error(%r{expects a})
276 context 'invalid server' do
279 server: 'two bottles of rum',
284 expect { subject.call }.to raise_error(%r{does not match})
288 context 'invalid keyserver_options' do
296 expect { subject.call }.to raise_error(%r{expects a})
300 context 'invalid ensure' do
308 expect { subject.call }.to raise_error(%r{Enum\['absent', 'present'\]})
312 describe 'duplication' do
313 context 'two apt::key resources for same key, different titles' do
314 let :pre_condition do
315 "#{super()}\napt::key { 'duplicate': id => '#{title}', }"
318 it 'contains the duplicate apt::key resource' do
319 is_expected.to contain_apt__key('duplicate').with(id: title,
323 it 'contains the original apt::key resource' do
324 is_expected.to contain_apt__key(title).with(id: title,
328 it 'contains the native apt_key' do
329 is_expected.to contain_apt_key('duplicate').with(id: title,
332 server: 'keyserver.ubuntu.com',
334 keyserver_options: nil)
337 it 'does not contain the original apt_key' do
338 is_expected.not_to contain_apt_key(title)
342 context 'two apt::key resources, different ensure' do
343 let :pre_condition do
344 "#{super()}\napt::key { 'duplicate': id => '#{title}', ensure => 'absent', }"
347 it 'informs the user of the impossibility' do
348 expect { subject.call }.to raise_error(%r{already ensured as absent})