3 describe 'apt::key', :type => :define do
5 :lsbdistid => 'Debian',
7 :puppetversion => Puppet.version,
9 GPG_KEY_ID = '6F6B15509CF8E59E6E469F327F438280EF8D349F'
19 describe 'normal operation' do
20 describe 'default options' do
22 is_expected.to contain_apt_key(title).with({
26 :server => 'keyserver.ubuntu.com',
28 :keyserver_options => nil,
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
45 it 'contains the apt_key' do
46 is_expected.to contain_apt_key(title).with({
50 :server => 'keyserver.ubuntu.com',
52 :keyserver_options => nil,
55 it 'contains the apt_key present anchor' do
56 is_expected.to contain_anchor("apt_key #{GPG_KEY_ID} present")
60 describe 'ensure => absent' do
65 it 'contains the apt_key' do
66 is_expected.to contain_apt_key(title).with({
70 :server => 'keyserver.ubuntu.com',
72 :keyserver_options => nil,
75 it 'contains the apt_key absent anchor' do
76 is_expected.to contain_anchor("apt_key #{title} absent")
80 describe 'set a bunch of things!' do
82 :key_content => 'GPG key content',
83 :key_source => 'http://apt.puppetlabs.com/pubkey.gpg',
84 :key_server => 'pgp.mit.edu',
85 :key_options => 'debug',
88 it 'contains the apt_key' do
89 is_expected.to contain_apt_key(title).with({
92 :source => 'http://apt.puppetlabs.com/pubkey.gpg',
93 :server => 'pgp.mit.edu',
94 :content => params[:key_content],
98 it 'contains the apt_key present anchor' do
99 is_expected.to contain_anchor("apt_key #{title} present")
103 context "domain with dash" do
105 :key_server => 'p-gp.m-it.edu',
107 it 'contains the apt_key' do
108 is_expected.to contain_apt_key(title).with({
110 :server => 'p-gp.m-it.edu',
118 :key_server => 'hkp://pgp.mit.edu',
121 it 'contains the apt_key' do
122 is_expected.to contain_apt_key(title).with({
124 :server => 'hkp://pgp.mit.edu',
128 context "url with port number" do
131 :key_server => 'hkp://pgp.mit.edu:80',
134 it 'contains the apt_key' do
135 is_expected.to contain_apt_key(title).with({
137 :server => 'hkp://pgp.mit.edu:80',
143 describe 'validation' do
144 context "domain begin with dash" do
146 :key_server => '-pgp.mit.edu',
149 expect { subject.call } .to raise_error(/does not match/)
153 context "domain begin with dot" do
155 :key_server => '.pgp.mit.edu',
158 expect { subject.call } .to raise_error(/does not match/)
162 context "domain end with dot" do
164 :key_server => "pgp.mit.edu.",
167 expect { subject.call } .to raise_error(/does not match/)
170 context "exceed character url" do
173 :key_server => 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu'
177 expect { subject.call }.to raise_error(/does not match/)
180 context "incorrect port number url" do
183 :key_server => 'hkp://pgp.mit.edu:8008080'
187 expect { subject.call }.to raise_error(/does not match/)
190 context "incorrect protocol for url" do
193 :key_server => 'abc://pgp.mit.edu:80'
197 expect { subject.call }.to raise_error(/does not match/)
200 context "missing port number url" do
203 :key_server => 'hkp://pgp.mit.edu:'
207 expect { subject.call }.to raise_error(/does not match/)
210 context "url ending with a dot" do
213 :key_server => 'hkp://pgp.mit.edu.'
217 expect { subject.call }.to raise_error(/does not match/)
220 context "url begin with a dash" do
222 :key_server => "hkp://-pgp.mit.edu",
225 expect { subject.call }.to raise_error(/does not match/)
228 context 'invalid key' do
230 'Out of rum. Why? Why are we out of rum?'
233 expect { subject.call }.to raise_error(/does not match/)
237 context 'invalid source' do
239 :key_source => 'afp://puppetlabs.com/key.gpg',
242 expect { subject.call }.to raise_error(/does not match/)
246 context 'invalid content' do
251 expect { subject.call }.to raise_error(/is not a string/)
255 context 'invalid server' do
257 :key_server => 'two bottles of rum',
260 expect { subject.call }.to raise_error(/does not match/)
264 context 'invalid keyserver_options' do
269 expect { subject.call }.to raise_error(/is not a string/)
273 context 'invalid ensure' do
280 expect { subject.call }.to raise_error(/does not match/)
284 describe 'duplication' do
285 context 'two apt::key resources for same key, different titles' do
286 let :pre_condition do
287 "#{super()}\napt::key { 'duplicate': key => '#{title}', }"
290 it 'contains the duplicate apt::key resource' do
291 is_expected.to contain_apt__key('duplicate').with({
293 :ensure => 'present',
297 it 'contains the original apt::key resource' do
298 is_expected.to contain_apt__key(title).with({
300 :ensure => 'present',
304 it 'contains the native apt_key' do
305 is_expected.to contain_apt_key('duplicate').with({
307 :ensure => 'present',
309 :server => 'keyserver.ubuntu.com',
311 :keyserver_options => nil,
315 it 'does not contain the original apt_key' do
316 is_expected.not_to contain_apt_key(title)
320 context 'two apt::key resources, different ensure' do
321 let :pre_condition do
322 "#{super()}\napt::key { 'duplicate': key => '#{title}', ensure => 'absent', }"
324 it 'informs the user of the impossibility' do
325 expect { subject.call }.to raise_error(/already ensured as absent/)