X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Farchive%2Fspec%2Fsupport%2Fshared_behaviour.rb;fp=3rdparty%2Fmodules%2Farchive%2Fspec%2Fsupport%2Fshared_behaviour.rb;h=08e08caf462793d8c1f99d34c7cf621104d4a2b5;hb=e107504bce7d9b21cc301124fc7c39fdb0762374;hp=0000000000000000000000000000000000000000;hpb=24caa46729f80fbba4be8b9b26ebcb3acc4cb0fb;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/archive/spec/support/shared_behaviour.rb b/3rdparty/modules/archive/spec/support/shared_behaviour.rb new file mode 100644 index 000000000..08e08caf4 --- /dev/null +++ b/3rdparty/modules/archive/spec/support/shared_behaviour.rb @@ -0,0 +1,107 @@ +# rubocop:disable RSpec/MultipleExpectations +require 'spec_helper' +require 'tmpdir' + +RSpec.shared_examples 'an archive provider' do |provider_class| + describe provider_class do + let(:resource) do + Puppet::Type::Archive.new(name: '/tmp/example.zip', source: 'http://home.lan/example.zip') + end + + let(:provider) do + provider_class.new(resource) + end + + let(:zipfile) do + File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'files', 'test.zip')) + end + + it '#checksum?' do + Dir.mktmpdir do |dir| + resource[:path] = File.join(dir, resource[:filename]) + FileUtils.cp(zipfile, resource[:path]) + + resource[:checksum] = '377ec712d7fdb7266221db3441e3af2055448ead' + resource[:checksum_type] = :sha1 + expect(provider.checksum?).to eq true + + resource[:checksum] = '557e2ebb67b35d1fddff18090b6bc26b' + resource[:checksum_type] = :md5 + expect(provider.checksum?).to eq true + + resource[:checksum] = '557e2ebb67b35d1fddff18090b6bc26b' + resource[:checksum_type] = :sha1 + expect(provider.checksum?).to eq false + end + end + + it '#extract' do + skip 'jruby not supported' if defined? JRUBY_VERSION + Dir.mktmpdir do |dir| + resource[:path] = File.join(dir, resource[:filename]) + extracted_file = File.join(dir, 'test') + FileUtils.cp(zipfile, resource[:path]) + + resource[:extract] = :true + resource[:creates] = extracted_file + resource[:extract_path] = dir + + provider.extract + expect(File.read(extracted_file)).to eq "hello world\n" + end + end + + it '#extracted?' do + skip 'jruby not supported' if defined? JRUBY_VERSION + Dir.mktmpdir do |dir| + resource[:path] = File.join(dir, resource[:filename]) + extracted_file = File.join(dir, 'test') + FileUtils.cp(zipfile, resource[:path]) + + resource[:extract] = :true + resource[:creates] = extracted_file + resource[:extract_path] = dir + + expect(provider.extracted?).to eq false + provider.extract + expect(provider.extracted?).to eq true + end + end + + it '#cleanup' do + skip 'jruby not supported' if defined? JRUBY_VERSION + Dir.mktmpdir do |dir| + resource[:path] = File.join(dir, resource[:filename]) + extracted_file = File.join(dir, 'test') + FileUtils.cp(zipfile, resource[:path]) + + resource[:extract] = :true + resource[:cleanup] = :true + resource[:creates] = extracted_file + resource[:extract_path] = dir + + provider.extract + provider.cleanup + expect(File.exist?(resource[:path])).to eq false + end + end + + it '#create' do + skip 'jruby not supported' if defined? JRUBY_VERSION + Dir.mktmpdir do |dir| + resource[:path] = File.join(dir, resource[:filename]) + extracted_file = File.join(dir, 'test') + FileUtils.cp(zipfile, resource[:path]) + + resource[:extract] = :true + resource[:cleanup] = :true + resource[:creates] = extracted_file + resource[:extract_path] = dir + + provider.create + expect(File.read(extracted_file)).to eq "hello world\n" + expect(File.exist?(resource[:path])).to eq false + end + end + end +end