3 describe 'apt::key', :type => :define do
5 :os => { :family => 'Debian', :name => 'Debian', :release => { :major => '7', :full => '7.0' }},
6 :lsbdistid => 'Debian',
8 :puppetversion => Puppet.version,
10 GPG_KEY_ID = '6F6B15509CF8E59E6E469F327F438280EF8D349F'
20 describe 'normal operation' do
21 describe 'default options' do
23 is_expected.to contain_apt_key(title).with({
27 :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
45 it 'contains the apt_key' do
46 is_expected.to contain_apt_key(title).with({
50 :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
64 it 'contains the apt_key' do
65 is_expected.to contain_apt_key(title).with({
69 :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
80 :content => 'GPG key content',
81 :source => 'http://apt.puppetlabs.com/pubkey.gpg',
82 :server => 'pgp.mit.edu',
86 it 'contains the apt_key' do
87 is_expected.to contain_apt_key(title).with({
90 :source => 'http://apt.puppetlabs.com/pubkey.gpg',
91 :server => 'pgp.mit.edu',
92 :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
103 :server => 'p-gp.m-it.edu',
105 it 'contains the apt_key' do
106 is_expected.to contain_apt_key(title).with({
108 :server => 'p-gp.m-it.edu',
116 :server => 'hkp://pgp.mit.edu',
119 it 'contains the apt_key' do
120 is_expected.to contain_apt_key(title).with({
122 :server => 'hkp://pgp.mit.edu',
126 context "url with port number" do
129 :server => 'hkp://pgp.mit.edu:80',
132 it 'contains the apt_key' do
133 is_expected.to contain_apt_key(title).with({
135 :server => 'hkp://pgp.mit.edu:80',
141 describe 'validation' do
142 context "domain begin with dash" do
144 :server => '-pgp.mit.edu',
147 expect { subject.call } .to raise_error(/does not match/)
151 context "domain begin with dot" do
153 :server => '.pgp.mit.edu',
156 expect { subject.call } .to raise_error(/does not match/)
160 context "domain end with dot" do
162 :server => "pgp.mit.edu.",
165 expect { subject.call } .to raise_error(/does not match/)
168 context "exceed character url" do
171 :server => 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu'
175 expect { subject.call }.to raise_error(/does not match/)
178 context "incorrect port number url" do
181 :server => 'hkp://pgp.mit.edu:8008080'
185 expect { subject.call }.to raise_error(/does not match/)
188 context "incorrect protocol for url" do
191 :server => 'abc://pgp.mit.edu:80'
195 expect { subject.call }.to raise_error(/does not match/)
198 context "missing port number url" do
201 :server => 'hkp://pgp.mit.edu:'
205 expect { subject.call }.to raise_error(/does not match/)
208 context "url ending with a dot" do
211 :server => 'hkp://pgp.mit.edu.'
215 expect { subject.call }.to raise_error(/does not match/)
218 context "url begin with a dash" do
220 :server => "hkp://-pgp.mit.edu",
223 expect { subject.call }.to raise_error(/does not match/)
226 context 'invalid key' do
228 'Out of rum. Why? Why are we out of rum?'
231 expect { subject.call }.to raise_error(/does not match/)
235 context 'invalid source' do
237 :source => 'afp://puppetlabs.com/key.gpg',
240 expect { subject.call }.to raise_error(/does not match/)
244 context 'invalid content' do
249 expect { subject.call }.to raise_error(/expects a String value/)
253 context 'invalid server' do
255 :server => 'two bottles of rum',
258 expect { subject.call }.to raise_error(/does not match/)
262 context 'invalid keyserver_options' do
267 expect { subject.call }.to raise_error(/expects a String value/)
271 context 'invalid ensure' do
278 expect { subject.call }.to raise_error(/Enum\['absent', 'present'\]/)
282 describe 'duplication' do
283 context 'two apt::key resources for same key, different titles' do
284 let :pre_condition do
285 "#{super()}\napt::key { 'duplicate': id => '#{title}', }"
288 it 'contains the duplicate apt::key resource' do
289 is_expected.to contain_apt__key('duplicate').with({
291 :ensure => 'present',
295 it 'contains the original apt::key resource' do
296 is_expected.to contain_apt__key(title).with({
298 :ensure => 'present',
302 it 'contains the native apt_key' do
303 is_expected.to contain_apt_key('duplicate').with({
305 :ensure => 'present',
307 :server => 'keyserver.ubuntu.com',
309 :keyserver_options => nil,
313 it 'does not contain the original apt_key' do
314 is_expected.not_to contain_apt_key(title)
318 context 'two apt::key resources, different ensure' do
319 let :pre_condition do
320 "#{super()}\napt::key { 'duplicate': id => '#{title}', ensure => 'absent', }"
322 it 'informs the user of the impossibility' do
323 expect { subject.call }.to raise_error(/already ensured as absent/)