4 describe Puppet::Type.type(:apt_key) do
5 context 'with only namevar 32bit key id' do
7 Puppet::Type.type(:apt_key).new(
13 expect(resource[:id]).to eq 'EF8D349F'
16 it 'name is set to id' do
17 expect(resource[:name]).to eq 'EF8D349F'
20 it 'keyserver is default' do
21 expect(resource[:server]).to eq :'keyserver.ubuntu.com'
24 it 'source is not set' do
25 expect(resource[:source]).to eq nil
28 it 'content is not set' do
29 expect(resource[:content]).to eq nil
32 it 'refresh is not set' do
33 expect(resource[:refresh]).to eq nil
36 it 'weak_ssl is not set' do
37 expect(resource[:weak_ssl]).to eq nil
41 context 'with a lowercase 32bit key id' do
43 Puppet::Type.type(:apt_key).new(
49 expect(resource[:id]).to eq 'EF8D349F'
53 context 'with a 64bit key id' do
55 Puppet::Type.type(:apt_key).new(
56 id: 'FFFFFFFFEF8D349F',
61 expect(resource[:id]).to eq 'FFFFFFFFEF8D349F'
65 context 'with a 0x formatted key id' do
67 Puppet::Type.type(:apt_key).new(
73 expect(resource[:id]).to eq 'EF8D349F'
77 context 'with a 0x formatted lowercase key id' do
79 Puppet::Type.type(:apt_key).new(
85 expect(resource[:id]).to eq 'EF8D349F'
89 context 'with a 0x formatted 64bit key id' do
91 Puppet::Type.type(:apt_key).new(
92 id: '0xFFFFFFFFEF8D349F',
97 expect(resource[:id]).to eq 'FFFFFFFFEF8D349F'
101 context 'with source' do
103 Puppet::Type.type(:apt_key).new(
105 source: 'http://apt.puppetlabs.com/pubkey.gpg',
109 it 'source is set to the URL' do
110 expect(resource[:source]).to eq 'http://apt.puppetlabs.com/pubkey.gpg'
114 context 'with source and weak_ssl' do
116 Puppet::Type.type(:apt_key).new(
118 source: 'https://apt.puppetlabs.com/pubkey.gpg',
123 it 'source is set to the URL' do
124 expect(resource[:source]).to eq 'https://apt.puppetlabs.com/pubkey.gpg'
128 context 'with content' do
130 Puppet::Type.type(:apt_key).new(
132 content: 'http://apt.puppetlabs.com/pubkey.gpg',
136 it 'content is set to the string' do
137 expect(resource[:content]).to eq 'http://apt.puppetlabs.com/pubkey.gpg'
141 context 'with keyserver' do
143 Puppet::Type.type(:apt_key).new(
145 server: 'http://keyring.debian.org',
149 it 'keyserver is set to Debian' do
150 expect(resource[:server]).to eq 'http://keyring.debian.org'
154 context 'with validation' do
155 it 'raises an error if content and source are set' do
157 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
158 source: 'http://apt.puppetlabs.com/pubkey.gpg',
159 content: 'Completely invalid as a GPG key')
160 }.to raise_error(%r{content and source are mutually exclusive})
163 it 'raises an error if refresh => true and ensure => absent' do
165 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
166 source: 'http://apt.puppetlabs.com/pubkey.gpg',
169 }.to raise_error(%r{ensure => absent and refresh => true are mutually exclusive})
172 it 'raises an error if a weird length key is used' do
174 Puppet::Type.type(:apt_key).new(id: 'FEF8D349F',
175 source: 'http://apt.puppetlabs.com/pubkey.gpg',
176 content: 'Completely invalid as a GPG key')
177 }.to raise_error(%r{Valid values match})
180 it 'raises an error when an invalid URI scheme is used in source' do
182 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
183 source: 'hkp://pgp.mit.edu')
184 }.to raise_error(%r{Valid values match})
187 it 'allows the http URI scheme in source' do
189 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
190 source: 'http://pgp.mit.edu')
194 it 'allows the http URI with username and password' do
196 Puppet::Type.type(:apt_key).new(id: '4BD6EC30',
197 source: 'http://testme:Password2@pgp.mit.edu')
201 it 'allows the https URI scheme in source' do
203 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
204 source: 'https://pgp.mit.edu')
208 it 'allows the https URI with username and password' do
210 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
211 source: 'https://testme:Password2@pgp.mit.edu')
215 it 'allows the ftp URI scheme in source' do
217 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
218 source: 'ftp://pgp.mit.edu')
222 it 'allows an absolute path in source' do
224 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
225 source: '/path/to/a/file')
229 it 'allows 5-digit ports' do
231 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
232 source: 'http://pgp.mit.edu:12345/key')
236 it 'allows 5-digit ports when using key servers' do
238 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
239 server: 'http://pgp.mit.edu:12345')