4 describe Puppet::Type::type(:apt_key) do
5 context 'only namevar 32bit key id' do
6 let(:resource) { Puppet::Type.type(:apt_key).new(
10 expect(resource[:id]).to eq 'EF8D349F'
13 it 'name is set to id' do
14 expect(resource[:name]).to eq 'EF8D349F'
17 it 'keyserver is default' do
18 expect(resource[:server]).to eq :'keyserver.ubuntu.com'
21 it 'source is not set' do
22 expect(resource[:source]).to eq nil
25 it 'content is not set' do
26 expect(resource[:content]).to eq nil
30 context 'with a lowercase 32bit key id' do
31 let(:resource) { Puppet::Type.type(:apt_key).new(
35 expect(resource[:id]).to eq 'EF8D349F'
39 context 'with a 64bit key id' do
40 let(:resource) { Puppet::Type.type(:apt_key).new(
41 :id => 'FFFFFFFFEF8D349F'
44 expect(resource[:id]).to eq 'FFFFFFFFEF8D349F'
48 context 'with a 0x formatted key id' do
49 let(:resource) { Puppet::Type.type(:apt_key).new(
53 expect(resource[:id]).to eq 'EF8D349F'
57 context 'with a 0x formatted lowercase key id' do
58 let(:resource) { Puppet::Type.type(:apt_key).new(
62 expect(resource[:id]).to eq 'EF8D349F'
66 context 'with a 0x formatted 64bit key id' do
67 let(:resource) { Puppet::Type.type(:apt_key).new(
68 :id => '0xFFFFFFFFEF8D349F'
71 expect(resource[:id]).to eq 'FFFFFFFFEF8D349F'
75 context 'with source' do
76 let(:resource) { Puppet::Type.type(:apt_key).new(
78 :source => 'http://apt.puppetlabs.com/pubkey.gpg'
81 it 'source is set to the URL' do
82 expect(resource[:source]).to eq 'http://apt.puppetlabs.com/pubkey.gpg'
86 context 'with content' do
87 let(:resource) { Puppet::Type.type(:apt_key).new(
89 :content => 'http://apt.puppetlabs.com/pubkey.gpg'
92 it 'content is set to the string' do
93 expect(resource[:content]).to eq 'http://apt.puppetlabs.com/pubkey.gpg'
97 context 'with keyserver' do
98 let(:resource) { Puppet::Type.type(:apt_key).new(
100 :server => 'http://keyring.debian.org'
103 it 'keyserver is set to Debian' do
104 expect(resource[:server]).to eq 'http://keyring.debian.org'
108 context 'validation' do
109 it 'raises an error if content and source are set' do
110 expect { Puppet::Type.type(:apt_key).new(
112 :source => 'http://apt.puppetlabs.com/pubkey.gpg',
113 :content => 'Completely invalid as a GPG key'
114 )}.to raise_error(/content and source are mutually exclusive/)
117 it 'raises an error if a weird length key is used' do
118 expect { Puppet::Type.type(:apt_key).new(
120 :source => 'http://apt.puppetlabs.com/pubkey.gpg',
121 :content => 'Completely invalid as a GPG key'
122 )}.to raise_error(/Valid values match/)
125 it 'raises an error when an invalid URI scheme is used in source' do
126 expect { Puppet::Type.type(:apt_key).new(
128 :source => 'hkp://pgp.mit.edu'
129 )}.to raise_error(/Valid values match/)
132 it 'allows the http URI scheme in source' do
133 expect { Puppet::Type.type(:apt_key).new(
135 :source => 'http://pgp.mit.edu'
136 )}.to_not raise_error
139 it 'allows the http URI with username and password' do
140 expect { Puppet::Type.type(:apt_key).new(
142 :source => 'http://testme:Password2@pgp.mit.edu'
143 )}.to_not raise_error
146 it 'allows the https URI scheme in source' do
147 expect { Puppet::Type.type(:apt_key).new(
149 :source => 'https://pgp.mit.edu'
150 )}.to_not raise_error
153 it 'allows the https URI with username and password' do
154 expect { Puppet::Type.type(:apt_key).new(
156 :source => 'https://testme:Password2@pgp.mit.edu'
157 )}.to_not raise_error
160 it 'allows the ftp URI scheme in source' do
161 expect { Puppet::Type.type(:apt_key).new(
163 :source => 'ftp://pgp.mit.edu'
164 )}.to_not raise_error
167 it 'allows an absolute path in source' do
168 expect { Puppet::Type.type(:apt_key).new(
170 :source => '/path/to/a/file'
171 )}.to_not raise_error
174 it 'allows 5-digit ports' do
175 expect { Puppet::Type.type(:apt_key).new(
177 :source => 'http://pgp.mit.edu:12345/key'
178 )}.to_not raise_error
181 it 'allows 5-digit ports when using key servers' do
182 expect { Puppet::Type.type(:apt_key).new(
184 :server => 'http://pgp.mit.edu:12345'
185 )}.to_not raise_error