10 os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
13 lsbdistcodename: 'wheezy',
14 puppetversion: Puppet.version,
18 GPG_KEY_ID = '6F6B15509CF8E59E6E469F327F438280EF8D349F'.freeze
24 describe 'normal operation' do
25 describe 'default options' do
26 it 'contains the apt_key' do
27 is_expected.to contain_apt_key(title).with(id: title,
30 server: 'keyserver.ubuntu.com',
34 it 'contains the apt_key present anchor' do
35 is_expected.to contain_anchor("apt_key #{title} present")
39 describe 'title and key =>' do
50 it 'contains the apt_key' do
51 is_expected.to contain_apt_key(title).with(id: GPG_KEY_ID,
54 server: 'keyserver.ubuntu.com',
58 it 'contains the apt_key present anchor' do
59 is_expected.to contain_anchor("apt_key #{GPG_KEY_ID} present")
63 describe 'ensure => absent' do
70 it 'contains the apt_key' do
71 is_expected.to contain_apt_key(title).with(id: title,
74 server: 'keyserver.ubuntu.com',
78 it 'contains the apt_key absent anchor' do
79 is_expected.to contain_anchor("apt_key #{title} absent")
83 describe 'set a bunch of things!' do
86 content: 'GPG key content',
87 source: 'http://apt.puppetlabs.com/pubkey.gpg',
88 server: 'pgp.mit.edu',
93 it 'contains the apt_key' do
94 is_expected.to contain_apt_key(title).with(id: title,
96 source: 'http://apt.puppetlabs.com/pubkey.gpg',
97 server: 'pgp.mit.edu',
98 content: params[:content],
101 it 'contains the apt_key present anchor' do
102 is_expected.to contain_anchor("apt_key #{title} present")
106 context 'domain with dash' do
109 server: 'p-gp.m-it.edu',
113 it 'contains the apt_key' do
114 is_expected.to contain_apt_key(title).with(id: title,
115 server: 'p-gp.m-it.edu')
122 server: 'hkp://pgp.mit.edu',
126 it 'contains the apt_key' do
127 is_expected.to contain_apt_key(title).with(id: title,
128 server: 'hkp://pgp.mit.edu')
131 context 'url with port number' do
134 server: 'hkp://pgp.mit.edu:80',
138 it 'contains the apt_key' do
139 is_expected.to contain_apt_key(title).with(id: title,
140 server: 'hkp://pgp.mit.edu:80')
145 describe 'validation' do
146 context 'domain begin with dash' do
149 server: '-pgp.mit.edu',
154 expect { subject.call } .to raise_error(%r{expects a match})
158 context 'domain begin with dot' do
161 server: '.pgp.mit.edu',
166 expect { subject.call } .to raise_error(%r{expects a match})
170 context 'domain end with dot' do
173 server: 'pgp.mit.edu.',
178 expect { subject.call } .to raise_error(%r{expects a match})
181 context 'exceed character url' do
184 server: 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu',
189 expect { subject.call }.to raise_error(%r{expects a match})
192 context 'incorrect port number url' do
195 server: 'hkp://pgp.mit.edu:8008080',
200 expect { subject.call }.to raise_error(%r{expects a match})
203 context 'incorrect protocol for url' do
206 server: 'abc://pgp.mit.edu:80',
211 expect { subject.call }.to raise_error(%r{expects a match})
214 context 'missing port number url' do
217 server: 'hkp://pgp.mit.edu:',
222 expect { subject.call }.to raise_error(%r{expects a match})
225 context 'url ending with a dot' do
228 server: 'hkp://pgp.mit.edu.',
233 expect { subject.call }.to raise_error(%r{expects a match})
236 context 'url begin with a dash' do
239 server: 'hkp://-pgp.mit.edu',
244 expect { subject.call }.to raise_error(%r{expects a match})
247 context 'invalid key' do
249 'Out of rum. Why? Why are we out of rum?'
253 expect { subject.call }.to raise_error(%r{expects a match})
257 context 'invalid source' do
260 source: 'afp://puppetlabs.com/key.gpg',
265 expect { subject.call }.to raise_error(%r{expects a match})
269 context 'invalid content' do
277 expect { subject.call }.to raise_error(%r{expects a})
281 context 'invalid server' do
284 server: 'two bottles of rum',
289 expect { subject.call }.to raise_error(%r{expects a match})
293 context 'invalid options' do
301 expect { subject.call }.to raise_error(%r{expects a})
305 context 'invalid ensure' do
306 %w[foo aabsent absenta apresent presenta].each do |param|
314 expect { subject.call }.to raise_error(%r{for Enum\['absent', 'present'\], got})
319 describe 'duplication' do
320 context 'two apt::key resources for same key, different titles' do
321 let :pre_condition do
323 apt::key { 'duplicate': id => '#{title}', }"
326 it 'contains two apt::key resources' do
327 is_expected.to contain_apt__key('duplicate').with(id: title,
329 is_expected.to contain_apt__key(title).with(id: title,
333 it 'contains only a single apt_key' do
334 is_expected.to contain_apt_key('duplicate').with(id: title,
337 server: 'keyserver.ubuntu.com',
340 is_expected.not_to contain_apt_key(title)
344 context 'two apt::key resources, different ensure' do
345 let :pre_condition do
347 apt::key { 'duplicate': id => '#{title}', ensure => 'absent', }"
350 it 'informs the user of the impossibility' do
351 expect { subject.call }.to raise_error(%r{already ensured as absent})