8 let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => Puppet.version, } }
10 GPG_KEY_ID = '6F6B15509CF8E59E6E469F327F438280EF8D349F'
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
271 %w(foo aabsent absenta apresent presenta).each do |param|
278 expect { subject.call }.to raise_error(/does not match/)
283 describe 'duplication' do
284 context 'two apt::key resources for same key, different titles' do
285 let :pre_condition do
287 apt::key { 'duplicate': id => '#{title}', }"
290 it 'contains two apt::key resources' do
291 is_expected.to contain_apt__key('duplicate').with({
293 :ensure => 'present',
295 is_expected.to contain_apt__key(title).with({
297 :ensure => 'present',
301 it 'contains only a single apt_key' do
302 is_expected.to contain_apt_key('duplicate').with({
304 :ensure => 'present',
306 :server => 'keyserver.ubuntu.com',
310 is_expected.not_to contain_apt_key(title)
314 context 'two apt::key resources, different ensure' do
315 let :pre_condition do
317 apt::key { 'duplicate': id => '#{title}', ensure => 'absent', }"
319 it 'informs the user of the impossibility' do
320 expect { subject.call }.to raise_error(/already ensured as absent/)