3 describe 'apt::key', :type => :define do
4 let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian' } }
5 GPG_KEY_ID = '47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30'
11 describe 'normal operation' do
12 describe 'default options' do
13 it 'contains the apt_key' do
14 is_expected.to contain_apt_key(title).with({
20 :keyserver_options => nil,
23 it 'contains the apt_key present anchor' do
24 is_expected.to contain_anchor("apt_key #{title} present")
28 describe 'title and key =>' do
37 it 'contains the apt_key' do
38 is_expected.to contain_apt_key(title).with({
44 :keyserver_options => nil,
47 it 'contains the apt_key present anchor' do
48 is_expected.to contain_anchor("apt_key #{GPG_KEY_ID} present")
52 describe 'ensure => absent' do
57 it 'contains the apt_key' do
58 is_expected.to contain_apt_key(title).with({
64 :keyserver_options => nil,
67 it 'contains the apt_key absent anchor' do
68 is_expected.to contain_anchor("apt_key #{title} absent")
72 describe 'set a bunch of things!' do
74 :key_content => 'GPG key content',
75 :key_source => 'http://apt.puppetlabs.com/pubkey.gpg',
76 :key_server => 'pgp.mit.edu',
77 :key_options => 'debug',
80 it 'contains the apt_key' do
81 is_expected.to contain_apt_key(title).with({
84 :source => 'http://apt.puppetlabs.com/pubkey.gpg',
85 :server => 'pgp.mit.edu',
86 :content => params[:key_content],
87 :keyserver_options => 'debug',
90 it 'contains the apt_key present anchor' do
91 is_expected.to contain_anchor("apt_key #{title} present")
95 context "domain with dash" do
97 :key_server => 'p-gp.m-it.edu',
99 it 'contains the apt_key' do
100 is_expected.to contain_apt_key(title).with({
102 :server => 'p-gp.m-it.edu',
110 :key_server => 'hkp://pgp.mit.edu',
113 it 'contains the apt_key' do
114 is_expected.to contain_apt_key(title).with({
116 :server => 'hkp://pgp.mit.edu',
120 context "url with port number" do
123 :key_server => 'hkp://pgp.mit.edu:80',
126 it 'contains the apt_key' do
127 is_expected.to contain_apt_key(title).with({
129 :server => 'hkp://pgp.mit.edu:80',
135 describe 'validation' do
136 context "domain begin with dash" do
138 :key_server => '-pgp.mit.edu',
141 expect { subject } .to raise_error(/does not match/)
145 context "domain begin with dot" do
147 :key_server => '.pgp.mit.edu',
150 expect { subject } .to raise_error(/does not match/)
154 context "domain end with dot" do
156 :key_server => "pgp.mit.edu.",
159 expect { subject } .to raise_error(/does not match/)
162 context "exceed character url" do
165 :key_server => 'hkp://pgpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.mit.edu'
169 expect { subject }.to raise_error(/does not match/)
172 context "incorrect port number url" do
175 :key_server => 'hkp://pgp.mit.edu:8008080'
179 expect { subject }.to raise_error(/does not match/)
182 context "incorrect protocol for url" do
185 :key_server => 'abc://pgp.mit.edu:80'
189 expect { subject }.to raise_error(/does not match/)
192 context "missing port number url" do
195 :key_server => 'hkp://pgp.mit.edu:'
199 expect { subject }.to raise_error(/does not match/)
202 context "url ending with a dot" do
205 :key_server => 'hkp://pgp.mit.edu.'
209 expect { subject }.to raise_error(/does not match/)
212 context "url begin with a dash" do
214 :key_server => "hkp://-pgp.mit.edu",
217 expect { subject }.to raise_error(/does not match/)
220 context 'invalid key' do
222 'Out of rum. Why? Why are we out of rum?'
225 expect { subject }.to raise_error(/does not match/)
229 context 'invalid source' do
231 :key_source => 'afp://puppetlabs.com/key.gpg',
234 expect { subject }.to raise_error(/does not match/)
238 context 'invalid content' do
243 expect { subject }.to raise_error(/is not a string/)
247 context 'invalid server' do
249 :key_server => 'two bottles of rum',
252 expect { subject }.to raise_error(/does not match/)
256 context 'invalid keyserver_options' do
261 expect { subject }.to raise_error(/is not a string/)
265 context 'invalid ensure' do
272 expect { subject }.to raise_error(/does not match/)
276 describe 'duplication' do
277 context 'two apt::key resources for same key, different titles' do
278 let :pre_condition do
279 "apt::key { 'duplicate': key => '#{title}', }"
282 it 'contains two apt::key resources' do
283 is_expected.to contain_apt__key('duplicate').with({
285 :ensure => 'present',
287 is_expected.to contain_apt__key(title).with({
289 :ensure => 'present',
293 it 'contains only a single apt_key' do
294 is_expected.to contain_apt_key('duplicate').with({
296 :ensure => 'present',
300 :keyserver_options => nil,
302 is_expected.not_to contain_apt_key(title)
306 context 'two apt::key resources, different ensure' do
307 let :pre_condition do
308 "apt::key { 'duplicate': key => '#{title}', ensure => 'absent', }"
310 it 'informs the user of the impossibility' do
311 expect { subject }.to raise_error(/already ensured as absent/)