8 let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => Puppet.version, } }
10 GPG_KEY_ID = '47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30'
16 describe 'normal operation' do
17 describe 'default options' do
18 it 'contains the apt_key' do
19 is_expected.to contain_apt_key(title).with({
23 :server => 'keyserver.ubuntu.com',
28 it 'contains the apt_key present anchor' do
29 is_expected.to contain_anchor("apt_key #{title} present")
33 describe 'title and key =>' do
42 it 'contains the apt_key' do
43 is_expected.to contain_apt_key(title).with({
47 :server => 'keyserver.ubuntu.com',
52 it 'contains the apt_key present anchor' do
53 is_expected.to contain_anchor("apt_key #{GPG_KEY_ID} present")
57 describe 'ensure => absent' do
62 it 'contains the apt_key' do
63 is_expected.to contain_apt_key(title).with({
67 :server => 'keyserver.ubuntu.com',
72 it 'contains the apt_key absent anchor' do
73 is_expected.to contain_anchor("apt_key #{title} absent")
77 describe 'set a bunch of things!' do
79 :content => 'GPG key content',
80 :source => 'http://apt.puppetlabs.com/pubkey.gpg',
81 :server => 'pgp.mit.edu',
85 it 'contains the apt_key' do
86 is_expected.to contain_apt_key(title).with({
89 :source => 'http://apt.puppetlabs.com/pubkey.gpg',
90 :server => 'pgp.mit.edu',
91 :content => params[:content],
95 it 'contains the apt_key present anchor' do
96 is_expected.to contain_anchor("apt_key #{title} present")
100 context "domain with dash" do
102 :server => 'p-gp.m-it.edu',
104 it 'contains the apt_key' do
105 is_expected.to contain_apt_key(title).with({
107 :server => 'p-gp.m-it.edu',
115 :server => 'hkp://pgp.mit.edu',
118 it 'contains the apt_key' do
119 is_expected.to contain_apt_key(title).with({
121 :server => 'hkp://pgp.mit.edu',
125 context "url with port number" do
128 :server => 'hkp://pgp.mit.edu:80',
131 it 'contains the apt_key' do
132 is_expected.to contain_apt_key(title).with({
134 :server => 'hkp://pgp.mit.edu:80',
140 describe 'validation' do
141 context "domain begin with dash" do
143 :server => '-pgp.mit.edu',
146 expect { subject.call } .to raise_error(/does not match/)
150 context "domain begin with dot" do
152 :server => '.pgp.mit.edu',
155 expect { subject.call } .to raise_error(/does not match/)
159 context "domain end with dot" do
161 :server => "pgp.mit.edu.",
164 expect { subject.call } .to raise_error(/does not match/)
167 context "exceed character url" do
170 :server => 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu'
174 expect { subject.call }.to raise_error(/does not match/)
177 context "incorrect port number url" do
180 :server => 'hkp://pgp.mit.edu:8008080'
184 expect { subject.call }.to raise_error(/does not match/)
187 context "incorrect protocol for url" do
190 :server => 'abc://pgp.mit.edu:80'
194 expect { subject.call }.to raise_error(/does not match/)
197 context "missing port number url" do
200 :server => 'hkp://pgp.mit.edu:'
204 expect { subject.call }.to raise_error(/does not match/)
207 context "url ending with a dot" do
210 :server => 'hkp://pgp.mit.edu.'
214 expect { subject.call }.to raise_error(/does not match/)
217 context "url begin with a dash" do
219 :server => "hkp://-pgp.mit.edu",
222 expect { subject.call }.to raise_error(/does not match/)
225 context 'invalid key' do
227 'Out of rum. Why? Why are we out of rum?'
230 expect { subject.call }.to raise_error(/does not match/)
234 context 'invalid source' do
236 :source => 'afp://puppetlabs.com/key.gpg',
239 expect { subject.call }.to raise_error(/does not match/)
243 context 'invalid content' do
248 expect { subject.call }.to raise_error(/is not a string/)
252 context 'invalid server' do
254 :server => 'two bottles of rum',
257 expect { subject.call }.to raise_error(/does not match/)
261 context 'invalid options' do
266 expect { subject.call }.to raise_error(/is not a string/)
270 context 'invalid ensure' do
277 expect { subject.call }.to raise_error(/does not match/)
281 describe 'duplication' do
282 context 'two apt::key resources for same key, different titles' do
283 let :pre_condition do
285 apt::key { 'duplicate': id => '#{title}', }"
288 it 'contains two apt::key resources' do
289 is_expected.to contain_apt__key('duplicate').with({
291 :ensure => 'present',
293 is_expected.to contain_apt__key(title).with({
295 :ensure => 'present',
299 it 'contains only a single apt_key' do
300 is_expected.to contain_apt_key('duplicate').with({
302 :ensure => 'present',
304 :server => 'keyserver.ubuntu.com',
308 is_expected.not_to contain_apt_key(title)
312 context 'two apt::key resources, different ensure' do
313 let :pre_condition do
315 apt::key { 'duplicate': id => '#{title}', ensure => 'absent', }"
317 it 'informs the user of the impossibility' do
318 expect { subject.call }.to raise_error(/already ensured as absent/)