1 # frozen_string_literal: true
6 describe Puppet::Type.type(:apt_key) do
7 context 'with only namevar 32bit key id' do
9 Puppet::Type.type(:apt_key).new(
15 expect(resource[:id]).to eq 'EF8D349F'
18 it 'name is set to id' do
19 expect(resource[:name]).to eq 'EF8D349F'
22 it 'keyserver is default' do
23 expect(resource[:server]).to eq :'keyserver.ubuntu.com'
26 it 'source is not set' do
27 expect(resource[:source]).to be_nil
30 it 'content is not set' do
31 expect(resource[:content]).to be_nil
34 it 'refresh is not set' do
35 expect(resource[:refresh]).to be_nil
38 it 'weak_ssl is not set' do
39 expect(resource[:weak_ssl]).to be_nil
43 context 'with a lowercase 32bit key id' do
45 Puppet::Type.type(:apt_key).new(
51 expect(resource[:id]).to eq 'EF8D349F'
55 context 'with a 64bit key id' do
57 Puppet::Type.type(:apt_key).new(
58 id: 'FFFFFFFFEF8D349F',
63 expect(resource[:id]).to eq 'FFFFFFFFEF8D349F'
67 context 'with a 0x formatted key id' do
69 Puppet::Type.type(:apt_key).new(
75 expect(resource[:id]).to eq 'EF8D349F'
79 context 'with a 0x formatted lowercase key id' do
81 Puppet::Type.type(:apt_key).new(
87 expect(resource[:id]).to eq 'EF8D349F'
91 context 'with a 0x formatted 64bit key id' do
93 Puppet::Type.type(:apt_key).new(
94 id: '0xFFFFFFFFEF8D349F',
99 expect(resource[:id]).to eq 'FFFFFFFFEF8D349F'
103 context 'with source' do
105 Puppet::Type.type(:apt_key).new(
107 source: 'http://apt.puppetlabs.com/pubkey.gpg',
111 it 'source is set to the URL' do
112 expect(resource[:source]).to eq 'http://apt.puppetlabs.com/pubkey.gpg'
116 context 'with source and weak_ssl' do
118 Puppet::Type.type(:apt_key).new(
120 source: 'https://apt.puppetlabs.com/pubkey.gpg',
125 it 'source is set to the URL' do
126 expect(resource[:source]).to eq 'https://apt.puppetlabs.com/pubkey.gpg'
130 context 'with content' do
132 Puppet::Type.type(:apt_key).new(
134 content: 'http://apt.puppetlabs.com/pubkey.gpg',
138 it 'content is set to the string' do
139 expect(resource[:content]).to eq 'http://apt.puppetlabs.com/pubkey.gpg'
143 context 'with keyserver' do
145 Puppet::Type.type(:apt_key).new(
147 server: 'http://keyring.debian.org',
151 it 'keyserver is set to Debian' do
152 expect(resource[:server]).to eq 'http://keyring.debian.org'
156 context 'with validation' do
157 it 'raises an error if content and source are set' do
159 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
160 source: 'http://apt.puppetlabs.com/pubkey.gpg',
161 content: 'Completely invalid as a GPG key')
162 }.to raise_error(%r{content and source are mutually exclusive})
165 it 'raises an error if refresh => true and ensure => absent' do
167 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
168 source: 'http://apt.puppetlabs.com/pubkey.gpg',
171 }.to raise_error(%r{ensure => absent and refresh => true are mutually exclusive})
174 it 'raises an error if a weird length key is used' do
176 Puppet::Type.type(:apt_key).new(id: 'FEF8D349F',
177 source: 'http://apt.puppetlabs.com/pubkey.gpg',
178 content: 'Completely invalid as a GPG key')
179 }.to raise_error(%r{Valid values match})
182 it 'raises an error when an invalid URI scheme is used in source' do
184 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
185 source: 'hkp://pgp.mit.edu')
186 }.to raise_error(%r{Valid values match})
189 it 'allows the http URI scheme in source' do
191 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
192 source: 'http://pgp.mit.edu')
196 it 'allows the http URI with username and password' do
198 Puppet::Type.type(:apt_key).new(id: '4BD6EC30',
199 source: 'http://testme:Password2@pgp.mit.edu')
203 it 'allows the https URI scheme in source' do
205 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
206 source: 'https://pgp.mit.edu')
210 it 'allows the https URI with username and password' do
212 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
213 source: 'https://testme:Password2@pgp.mit.edu')
217 it 'allows the ftp URI scheme in source' do
219 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
220 source: 'ftp://pgp.mit.edu')
224 it 'allows an absolute path in source' do
226 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
227 source: '/path/to/a/file')
231 it 'allows 5-digit ports' do
233 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
234 source: 'http://pgp.mit.edu:12345/key')
238 it 'allows 5-digit ports when using key servers' do
240 Puppet::Type.type(:apt_key).new(id: 'EF8D349F',
241 server: 'http://pgp.mit.edu:12345')