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
37 context 'with a lowercase 32bit key id' do
39 Puppet::Type.type(:apt_key).new(
45 expect(resource[:id]).to eq 'EF8D349F'
49 context 'with a 64bit key id' do
51 Puppet::Type.type(:apt_key).new(
52 id: 'FFFFFFFFEF8D349F',
57 expect(resource[:id]).to eq 'FFFFFFFFEF8D349F'
61 context 'with a 0x formatted key id' do
63 Puppet::Type.type(:apt_key).new(
69 expect(resource[:id]).to eq 'EF8D349F'
73 context 'with a 0x formatted lowercase key id' do
75 Puppet::Type.type(:apt_key).new(
81 expect(resource[:id]).to eq 'EF8D349F'
85 context 'with a 0x formatted 64bit key id' do
87 Puppet::Type.type(:apt_key).new(
88 id: '0xFFFFFFFFEF8D349F',
93 expect(resource[:id]).to eq 'FFFFFFFFEF8D349F'
97 context 'with source' do
99 Puppet::Type.type(:apt_key).new(
101 source: 'http://apt.puppetlabs.com/pubkey.gpg',
105 it 'source is set to the URL' do
106 expect(resource[:source]).to eq 'http://apt.puppetlabs.com/pubkey.gpg'
110 context 'with content' do
112 Puppet::Type.type(:apt_key).new(
114 content: 'http://apt.puppetlabs.com/pubkey.gpg',
118 it 'content is set to the string' do
119 expect(resource[:content]).to eq 'http://apt.puppetlabs.com/pubkey.gpg'
123 context 'with keyserver' do
125 Puppet::Type.type(:apt_key).new(
127 server: 'http://keyring.debian.org',
131 it 'keyserver is set to Debian' do
132 expect(resource[:server]).to eq 'http://keyring.debian.org'
136 context 'with validation' do
137 it 'raises an error if content and source are set' do
139 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
140 source: 'http://apt.puppetlabs.com/pubkey.gpg',
141 content: 'Completely invalid as a GPG key')
142 }.to raise_error(%r{content and source are mutually exclusive})
145 it 'raises an error if refresh => true and ensure => absent' do
147 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
148 source: 'http://apt.puppetlabs.com/pubkey.gpg',
151 }.to raise_error(%r{ensure => absent and refresh => true are mutually exclusive})
154 it 'raises an error if a weird length key is used' do
156 Puppet::Type.type(:apt_key).new(id: 'FEF8D349F',
157 source: 'http://apt.puppetlabs.com/pubkey.gpg',
158 content: 'Completely invalid as a GPG key')
159 }.to raise_error(%r{Valid values match})
162 it 'raises an error when an invalid URI scheme is used in source' do
164 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
165 source: 'hkp://pgp.mit.edu')
166 }.to raise_error(%r{Valid values match})
169 it 'allows the http URI scheme in source' do
171 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
172 source: 'http://pgp.mit.edu')
176 it 'allows the http URI with username and password' do
178 Puppet::Type.type(:apt_key).new(id: '4BD6EC30',
179 source: 'http://testme:Password2@pgp.mit.edu')
183 it 'allows the https URI scheme in source' do
185 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
186 source: 'https://pgp.mit.edu')
190 it 'allows the https URI with username and password' do
192 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
193 source: 'https://testme:Password2@pgp.mit.edu')
197 it 'allows the ftp URI scheme in source' do
199 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
200 source: 'ftp://pgp.mit.edu')
204 it 'allows an absolute path in source' do
206 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
207 source: '/path/to/a/file')
211 it 'allows 5-digit ports' do
213 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
214 source: 'http://pgp.mit.edu:12345/key')
218 it 'allows 5-digit ports when using key servers' do
220 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
221 server: 'http://pgp.mit.edu:12345')