Add puppet/archive module
[mirror/dsa-puppet.git] / 3rdparty / modules / archive / spec / classes / archive_spec.rb
diff --git a/3rdparty/modules/archive/spec/classes/archive_spec.rb b/3rdparty/modules/archive/spec/classes/archive_spec.rb
new file mode 100644 (file)
index 0000000..1495d3d
--- /dev/null
@@ -0,0 +1,100 @@
+require 'spec_helper'
+
+describe 'archive' do
+  context 'RHEL' do
+    let(:facts) do
+      {
+        os: { family: 'RedHat' },
+        operatingsystem: 'RedHat',
+        puppetversion: '4.4.0'
+      }
+    end
+
+    context 'default' do
+      it { is_expected.not_to contain_package('7zip') }
+      it { is_expected.not_to contain_file('/opt/awscli-bundle') }
+      it { is_expected.not_to contain_archive('awscli-bundle.zip') }
+      it { is_expected.not_to contain_exec('install_aws_cli') }
+      it { is_expected.to compile.with_all_deps }
+      it { is_expected.to contain_class('archive::params') }
+    end
+
+    context 'with aws_cli' do
+      let(:params) do
+        {
+          aws_cli_install: true
+        }
+      end
+
+      it { is_expected.to contain_file('/opt/awscli-bundle') }
+      it { is_expected.to contain_archive('awscli-bundle.zip') }
+      it { is_expected.to contain_exec('install_aws_cli') }
+    end
+  end
+
+  describe 'Windows' do
+    let(:default_facts) do
+      {
+        os: { family: 'Windows' },
+        operatingsystem: 'Windows',
+        archive_windir: 'C:/staging'
+      }
+    end
+
+    context 'default 7zip chcolatey package' do
+      let(:facts) do
+        {
+          puppetversion: '4.4.0'
+        }.merge(default_facts)
+      end
+
+      it do
+        is_expected.to contain_package('7zip').with(
+          name: '7zip',
+          provider: 'chocolatey'
+        )
+      end
+      it { is_expected.not_to contain_archive('awscli-bundle.zip') }
+    end
+
+    context 'with 7zip msi package' do
+      let(:facts) do
+        {
+          puppetversion: '3.4.3 (Puppet Enterprise 3.2.3)'
+        }.merge(default_facts)
+      end
+
+      let(:params) do
+        {
+          seven_zip_name: '7-Zip 9.20 (x64 edition)',
+          seven_zip_source: 'C:/Windows/Temp/7z920-x64.msi',
+          seven_zip_provider: 'windows'
+        }
+      end
+
+      it do
+        is_expected.to contain_package('7zip').with(
+          name: '7-Zip 9.20 (x64 edition)',
+          source: 'C:/Windows/Temp/7z920-x64.msi',
+          provider: 'windows'
+        )
+      end
+    end
+
+    context 'without 7zip' do
+      let(:facts) do
+        {
+          puppetversion: '3.4.3 (Puppet Enterprise 3.2.3)'
+        }.merge(default_facts)
+      end
+
+      let(:params) do
+        {
+          seven_zip_provider: ''
+        }
+      end
+
+      it { is_expected.not_to contain_package('7zip') }
+    end
+  end
+end