|
150 | 150 | expect { provider.transfer_download(name) }.to raise_error(Puppet::Error, %r{Download file checksum mismatch}) |
151 | 151 | end |
152 | 152 | end |
| 153 | + |
| 154 | + describe 'header specified' do |
| 155 | + let(:source_location) { 'http://example.com' } |
| 156 | + let(:resource_properties) do |
| 157 | + { |
| 158 | + name: name, |
| 159 | + source: source_location, |
| 160 | + headers: ['Authorization: OAuth 123ABC'] |
| 161 | + } |
| 162 | + end |
| 163 | + |
| 164 | + it 'downloads with header' do |
| 165 | + http_dbl = double |
| 166 | + allow(http_dbl).to receive(:request) do |request| |
| 167 | + expect(request['Authorization']).to eq('OAuth 123ABC') |
| 168 | + end |
| 169 | + allow(Net::HTTP).to receive(:start).and_yield(http_dbl) |
| 170 | + |
| 171 | + provider.download(source_location, name) |
| 172 | + |
| 173 | + expect(Net::HTTP).to have_received(:start) |
| 174 | + expect(http_dbl).to have_received(:request) |
| 175 | + end |
| 176 | + end |
| 177 | + |
| 178 | + describe 'multiple headers specified' do |
| 179 | + let(:source_location) { 'http://example.com' } |
| 180 | + let(:resource_properties) do |
| 181 | + { |
| 182 | + name: name, |
| 183 | + source: source_location, |
| 184 | + headers: ['Authorization: OAuth 123ABC', 'Accept: application/json'] |
| 185 | + } |
| 186 | + end |
| 187 | + |
| 188 | + it 'downloads with headers' do |
| 189 | + http_dbl = double |
| 190 | + allow(http_dbl).to receive(:request) do |request| |
| 191 | + expect(request['Authorization']).to eq('OAuth 123ABC') |
| 192 | + expect(request['Accept']).to eq('application/json') |
| 193 | + end |
| 194 | + allow(Net::HTTP).to receive(:start).and_yield(http_dbl) |
| 195 | + |
| 196 | + provider.download(source_location, name) |
| 197 | + |
| 198 | + expect(Net::HTTP).to have_received(:start) |
| 199 | + expect(http_dbl).to have_received(:request) |
| 200 | + end |
| 201 | + end |
| 202 | + |
| 203 | + describe 'headers and cookie specified' do |
| 204 | + let(:source_location) { 'http://example.com' } |
| 205 | + let(:resource_properties) do |
| 206 | + { |
| 207 | + name: name, |
| 208 | + source: source_location, |
| 209 | + headers: ['Authorization: OAuth 123ABC', 'Accept: application/json'], |
| 210 | + cookie: 'something' |
| 211 | + } |
| 212 | + end |
| 213 | + |
| 214 | + it 'downloads with headers and cookie' do |
| 215 | + http_dbl = double |
| 216 | + allow(http_dbl).to receive(:request) do |request| |
| 217 | + expect(request['Authorization']).to eq('OAuth 123ABC') |
| 218 | + expect(request['Accept']).to eq('application/json') |
| 219 | + expect(request['Cookie']).to eq('something') |
| 220 | + end |
| 221 | + allow(Net::HTTP).to receive(:start).and_yield(http_dbl) |
| 222 | + |
| 223 | + provider.download(source_location, name) |
| 224 | + |
| 225 | + expect(Net::HTTP).to have_received(:start) |
| 226 | + expect(http_dbl).to have_received(:request) |
| 227 | + end |
| 228 | + end |
153 | 229 | end |
154 | 230 | end |
155 | 231 | # rubocop:enable RSpec/MultipleMemoizedHelpers |
0 commit comments