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',
29 :keyserver_options => nil,
32 it 'contains the apt_key present anchor' do
33 is_expected.to contain_anchor("apt_key #{title} present")
37 describe 'title and key =>' do
46 it 'contains the apt_key' do
47 is_expected.to contain_apt_key(title).with({
51 :server => 'keyserver.ubuntu.com',
53 :keyserver_options => nil,
56 it 'contains the apt_key present anchor' do
57 is_expected.to contain_anchor("apt_key #{GPG_KEY_ID} present")
61 describe 'ensure => absent' do
66 it 'contains the apt_key' do
67 is_expected.to contain_apt_key(title).with({
71 :server => 'keyserver.ubuntu.com',
73 :keyserver_options => nil,
76 it 'contains the apt_key absent anchor' do
77 is_expected.to contain_anchor("apt_key #{title} absent")
81 describe 'set a bunch of things!' do
83 :content => 'GPG key content',
84 :key_source => 'http://apt.puppetlabs.com/pubkey.gpg',
85 :key_server => 'pgp.mit.edu',
86 :key_options => 'debug',
89 it 'contains the apt_key' do
90 is_expected.to contain_apt_key(title).with({
93 :source => 'http://apt.puppetlabs.com/pubkey.gpg',
94 :server => 'pgp.mit.edu',
95 :content => params[:content],
99 it 'contains the apt_key present anchor' do
100 is_expected.to contain_anchor("apt_key #{title} present")
104 context "domain with dash" do
106 :key_server => 'p-gp.m-it.edu',
108 it 'contains the apt_key' do
109 is_expected.to contain_apt_key(title).with({
111 :server => 'p-gp.m-it.edu',
119 :key_server => 'hkp://pgp.mit.edu',
122 it 'contains the apt_key' do
123 is_expected.to contain_apt_key(title).with({
125 :server => 'hkp://pgp.mit.edu',
129 context "url with port number" do
132 :key_server => 'hkp://pgp.mit.edu:80',
135 it 'contains the apt_key' do
136 is_expected.to contain_apt_key(title).with({
138 :server => 'hkp://pgp.mit.edu:80',
144 describe 'validation' do
145 context "domain begin with dash" do
147 :key_server => '-pgp.mit.edu',
150 expect { subject.call } .to raise_error(/does not match/)
154 context "domain begin with dot" do
156 :key_server => '.pgp.mit.edu',
159 expect { subject.call } .to raise_error(/does not match/)
163 context "domain end with dot" do
165 :key_server => "pgp.mit.edu.",
168 expect { subject.call } .to raise_error(/does not match/)
171 context "exceed character url" do
174 :key_server => 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu'
178 expect { subject.call }.to raise_error(/does not match/)
181 context "incorrect port number url" do
184 :key_server => 'hkp://pgp.mit.edu:8008080'
188 expect { subject.call }.to raise_error(/does not match/)
191 context "incorrect protocol for url" do
194 :key_server => 'abc://pgp.mit.edu:80'
198 expect { subject.call }.to raise_error(/does not match/)
201 context "missing port number url" do
204 :key_server => 'hkp://pgp.mit.edu:'
208 expect { subject.call }.to raise_error(/does not match/)
211 context "url ending with a dot" do
214 :key_server => 'hkp://pgp.mit.edu.'
218 expect { subject.call }.to raise_error(/does not match/)
221 context "url begin with a dash" do
223 :key_server => "hkp://-pgp.mit.edu",
226 expect { subject.call }.to raise_error(/does not match/)
229 context 'invalid key' do
231 'Out of rum. Why? Why are we out of rum?'
234 expect { subject.call }.to raise_error(/does not match/)
238 context 'invalid source' do
240 :key_source => 'afp://puppetlabs.com/key.gpg',
243 expect { subject.call }.to raise_error(/does not match/)
247 context 'invalid content' do
252 expect { subject.call }.to raise_error(/expects a String value/)
256 context 'invalid server' do
258 :key_server => 'two bottles of rum',
261 expect { subject.call }.to raise_error(/does not match/)
265 context 'invalid keyserver_options' do
270 expect { subject.call }.to raise_error(/expects a String value/)
274 context 'invalid ensure' do
281 expect { subject.call }.to raise_error(/Enum\['absent', 'present'\]/)
285 describe 'duplication' do
286 context 'two apt::key resources for same key, different titles' do
287 let :pre_condition do
288 "#{super()}\napt::key { 'duplicate': id => '#{title}', }"
291 it 'contains the duplicate apt::key resource' do
292 is_expected.to contain_apt__key('duplicate').with({
294 :ensure => 'present',
298 it 'contains the original apt::key resource' do
299 is_expected.to contain_apt__key(title).with({
301 :ensure => 'present',
305 it 'contains the native apt_key' do
306 is_expected.to contain_apt_key('duplicate').with({
308 :ensure => 'present',
310 :server => 'keyserver.ubuntu.com',
312 :keyserver_options => nil,
316 it 'does not contain the original apt_key' do
317 is_expected.not_to contain_apt_key(title)
321 context 'two apt::key resources, different ensure' do
322 let :pre_condition do
323 "#{super()}\napt::key { 'duplicate': id => '#{title}', ensure => 'absent', }"
325 it 'informs the user of the impossibility' do
326 expect { subject.call }.to raise_error(/already ensured as absent/)