4 describe Puppet::Type.type(:apt_key) do
5 context '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
33 context 'with a lowercase 32bit key id' do
35 Puppet::Type.type(:apt_key).new(
41 expect(resource[:id]).to eq 'EF8D349F'
45 context 'with a 64bit key id' do
47 Puppet::Type.type(:apt_key).new(
48 id: 'FFFFFFFFEF8D349F',
53 expect(resource[:id]).to eq 'FFFFFFFFEF8D349F'
57 context 'with a 0x formatted key id' do
59 Puppet::Type.type(:apt_key).new(
65 expect(resource[:id]).to eq 'EF8D349F'
69 context 'with a 0x formatted lowercase key id' do
71 Puppet::Type.type(:apt_key).new(
77 expect(resource[:id]).to eq 'EF8D349F'
81 context 'with a 0x formatted 64bit key id' do
83 Puppet::Type.type(:apt_key).new(
84 id: '0xFFFFFFFFEF8D349F',
89 expect(resource[:id]).to eq 'FFFFFFFFEF8D349F'
93 context 'with source' do
95 Puppet::Type.type(:apt_key).new(
97 source: 'http://apt.puppetlabs.com/pubkey.gpg',
101 it 'source is set to the URL' do
102 expect(resource[:source]).to eq 'http://apt.puppetlabs.com/pubkey.gpg'
106 context 'with content' do
108 Puppet::Type.type(:apt_key).new(
110 content: 'http://apt.puppetlabs.com/pubkey.gpg',
114 it 'content is set to the string' do
115 expect(resource[:content]).to eq 'http://apt.puppetlabs.com/pubkey.gpg'
119 context 'with keyserver' do
121 Puppet::Type.type(:apt_key).new(
123 server: 'http://keyring.debian.org',
127 it 'keyserver is set to Debian' do
128 expect(resource[:server]).to eq 'http://keyring.debian.org'
132 context 'validation' do
133 it 'raises an error if content and source are set' do
135 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
136 source: 'http://apt.puppetlabs.com/pubkey.gpg',
137 content: 'Completely invalid as a GPG key')
138 }.to raise_error(%r{content and source are mutually exclusive})
141 it 'raises an error if a weird length key is used' do
143 Puppet::Type.type(:apt_key).new(id: 'FEF8D349F',
144 source: 'http://apt.puppetlabs.com/pubkey.gpg',
145 content: 'Completely invalid as a GPG key')
146 }.to raise_error(%r{Valid values match})
149 it 'raises an error when an invalid URI scheme is used in source' do
151 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
152 source: 'hkp://pgp.mit.edu')
153 }.to raise_error(%r{Valid values match})
156 it 'allows the http URI scheme in source' do
158 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
159 source: 'http://pgp.mit.edu')
163 it 'allows the http URI with username and password' do
165 Puppet::Type.type(:apt_key).new(id: '4BD6EC30',
166 source: 'http://testme:Password2@pgp.mit.edu')
170 it 'allows the https URI scheme in source' do
172 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
173 source: 'https://pgp.mit.edu')
177 it 'allows the https URI with username and password' do
179 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
180 source: 'https://testme:Password2@pgp.mit.edu')
184 it 'allows the ftp URI scheme in source' do
186 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
187 source: 'ftp://pgp.mit.edu')
191 it 'allows an absolute path in source' do
193 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
194 source: '/path/to/a/file')
198 it 'allows 5-digit ports' do
200 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
201 source: 'http://pgp.mit.edu:12345/key')
205 it 'allows 5-digit ports when using key servers' do
207 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
208 server: 'http://pgp.mit.edu:12345')