+++ /dev/null
-require 'spec_helper'
-
-curl_provider = Puppet::Type.type(:archive).provider(:curl)
-
-RSpec.describe curl_provider do
- it_behaves_like 'an archive provider', curl_provider
-
- describe '#download' do
- let(:name) { '/tmp/example.zip' }
- let(:resource) { Puppet::Type::Archive.new(resource_properties) }
- let(:provider) { curl_provider.new(resource) }
-
- let(:default_options) do
- [
- 'http://home.lan/example.zip',
- '-o',
- String,
- '-fsSLg',
- '--max-redirs',
- 5
- ]
- end
-
- before do
- allow(FileUtils).to receive(:mv)
- allow(provider).to receive(:curl)
- end
-
- context 'no extra properties specified' do
- let(:resource_properties) do
- {
- name: name,
- source: 'http://home.lan/example.zip'
- }
- end
-
- it 'calls curl with input, output and --max-redirects=5' do
- provider.download(name)
- expect(provider).to have_received(:curl).with(default_options)
- end
- end
-
- context 'username specified' do
- let(:resource_properties) do
- {
- name: name,
- source: 'http://home.lan/example.zip',
- username: 'foo'
- }
- end
-
- it 'calls curl with default options and username' do
- provider.download(name)
- expect(provider).to have_received(:curl).with(default_options << '--user' << 'foo')
- end
- end
-
- context 'username and password specified' do
- let(:resource_properties) do
- {
- name: name,
- source: 'http://home.lan/example.zip',
- username: 'foo',
- password: 'bar'
- }
- end
-
- it 'calls curl with default options and password' do
- provider.download(name)
- expect(provider).to have_received(:curl).with(default_options << '--user' << 'foo:bar')
- end
- end
-
- context 'allow_insecure true' do
- let(:resource_properties) do
- {
- name: name,
- source: 'http://home.lan/example.zip',
- allow_insecure: true
- }
- end
-
- it 'calls curl with default options and --insecure' do
- provider.download(name)
- expect(provider).to have_received(:curl).with(default_options << '--insecure')
- end
- end
-
- context 'cookie specified' do
- let(:resource_properties) do
- {
- name: name,
- source: 'http://home.lan/example.zip',
- cookie: 'foo=bar'
- }
- end
-
- it 'calls curl with default options cookie' do
- provider.download(name)
- expect(provider).to have_received(:curl).with(default_options << '--cookie' << 'foo=bar')
- end
- end
-
- context 'using proxy' do
- let(:resource_properties) do
- {
- name: name,
- source: 'http://home.lan/example.zip',
- proxy_server: 'https://home.lan:8080'
- }
- end
-
- it 'calls curl with proxy' do
- provider.download(name)
- expect(provider).to have_received(:curl).with(default_options << '--proxy' << 'https://home.lan:8080')
- end
- end
-
- describe '#checksum' do
- subject { provider.checksum }
-
- let(:url) { nil }
- let(:resource_properties) do
- {
- name: name,
- source: 'http://home.lan/example.zip'
- }
- end
-
- before do
- resource[:checksum_url] = url if url
- end
-
- context 'with a url' do
- let(:curl_params) do
- [
- 'http://example.com/checksum',
- '-fsSLg',
- '--max-redirs',
- 5
- ]
- end
-
- let(:url) { 'http://example.com/checksum' }
-
- context 'responds with hash' do
- let(:remote_hash) { 'a0c38e1aeb175201b0dacd65e2f37e187657050a' }
-
- it 'parses checksum value' do
- allow(provider).to receive(:curl).with(curl_params).and_return("a0c38e1aeb175201b0dacd65e2f37e187657050a README.md\n")
- expect(provider.checksum).to eq('a0c38e1aeb175201b0dacd65e2f37e187657050a')
- end
- end
- end
- end
-
- describe 'custom options' do
- let(:resource_properties) do
- {
- name: name,
- source: 'http://home.lan/example.zip',
- download_options: ['--tlsv1']
- }
- end
-
- it 'calls curl with custom tls options' do
- provider.download(name)
- expect(provider).to have_received(:curl).with(default_options << '--tlsv1')
- end
- end
- end
-end