require 'spec_helper' oracle_url = 'http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz' describe 'java::oracle', type: :define do context 'with CentOS 64-bit' do let(:facts) { { kernel: 'Linux', os: { family: 'RedHat', architecture: 'x86_64', name: 'CentOS', release: { full: '6.0' } } } } context 'when Oracle Java SE 6 JDK' do let(:params) { { ensure: 'present', version: '6', java_se: 'jdk' } } let(:title) { 'jdk6' } it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64-rpm.bin') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('sh /tmp/jdk-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-x64-rpm.bin]') } end context 'when Oracle Java SE 7 JDK' do let(:params) { { ensure: 'present', version: '7', java_se: 'jdk' } } let(:title) { 'jdk7' } it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('rpm --force -iv /tmp/jdk-7u80-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-x64.rpm]') } end context 'when Oracle Java SE 8 JDK' do let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } } let(:title) { 'jdk8' } it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u131 b11').with_command('rpm --force -iv /tmp/jdk-8u131-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u131 b11').that_requires('Archive[/tmp/jdk-8u131-linux-x64.rpm]') } end context 'when Oracle Java SE 6 JRE' do let(:params) { { ensure: 'present', version: '6', java_se: 'jre' } } let(:title) { 'jre6' } it { is_expected.to contain_archive('/tmp/jre-6u45-linux-x64-rpm.bin') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('sh /tmp/jre-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-x64-rpm.bin]') } end context 'when Oracle Java SE 7 JRE' do let(:params) { { ensure: 'present', version: '7', java_se: 'jre' } } let(:title) { 'jre7' } it { is_expected.to contain_archive('/tmp/jre-7u80-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('rpm --force -iv /tmp/jre-7u80-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-x64.rpm]') } end context 'when select Oracle Java SE 8 JRE' do let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } } let(:title) { 'jre8' } it { is_expected.to contain_archive('/tmp/jre-8u131-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u131 b11').with_command('rpm --force -iv /tmp/jre-8u131-linux-x64.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u131 b11').that_requires('Archive[/tmp/jre-8u131-linux-x64.rpm]') } end context 'when passing URL to url parameter' do let(:params) do { ensure: 'present', version_major: '8u131', version_minor: 'b11', java_se: 'jdk', url: 'http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm', url_hash: 'ignored', } end let(:title) { 'jdk8' } it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.rpm') .with_source('http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm') } end context 'when passing a hash to url_hash parameter' do let(:params) do { ensure: 'present', version_major: '8u131', version_minor: 'b11', java_se: 'jdk', url_hash: 'abcdef01234567890', } end let(:title) { 'jdk8' } it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.rpm').with_source('http://download.oracle.com/otn-pub/java/jdk//8u131-b11/abcdef01234567890/jdk-8u131-linux-x64.rpm') } end context 'when installing multiple versions' do let(:params) do { ensure: 'present', version_major: '8u131', version_minor: 'b11', java_se: 'jdk', url_hash: 'abcdef01234567890', } end let(:title) { 'jdk8' } let(:pre_condition) do <<-EOL java::oracle { 'jdk8121': ensure => 'present', version_major => '8u121', version_minor => 'b11', java_se => 'jdk', url_hash => 'fiewojgfuiowfniweof', } EOL end it { is_expected.to compile } end end context 'when on CentOS 32-bit' do let(:facts) { { kernel: 'Linux', os: { family: 'RedHat', architecture: 'i386', name: 'CentOS', release: { full: '6.6' } } } } context 'when selecting Oracle Java SE 6 JDK on RedHat family, 32-bit' do let(:params) { { ensure: 'present', version: '6', java_se: 'jdk' } } let(:title) { 'jdk6' } it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-i586-rpm.bin') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('sh /tmp/jdk-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-i586-rpm.bin]') } end context 'when selecting Oracle Java SE 7 JDK on RedHat family, 32-bit' do let(:params) { { ensure: 'present', version: '7', java_se: 'jdk' } } let(:title) { 'jdk7' } it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('rpm --force -iv /tmp/jdk-7u80-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-i586.rpm]') } end context 'when selecting Oracle Java SE 8 JDK on RedHat family, 32-bit' do let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } } let(:title) { 'jdk8' } it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u131 b11').with_command('rpm --force -iv /tmp/jdk-8u131-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u131 b11').that_requires('Archive[/tmp/jdk-8u131-linux-i586.rpm]') } end context 'when selecting Oracle Java SE 6 JRE on RedHat family, 32-bit' do let(:params) { { ensure: 'present', version: '6', java_se: 'jre' } } let(:title) { 'jdk6' } it { is_expected.to contain_archive('/tmp/jre-6u45-linux-i586-rpm.bin') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('sh /tmp/jre-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-i586-rpm.bin]') } end context 'when select Oracle Java SE 7 JRE on RedHat family, 32-bit' do let(:params) { { ensure: 'present', version: '7', java_se: 'jre' } } let(:title) { 'jdk7' } it { is_expected.to contain_archive('/tmp/jre-7u80-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('rpm --force -iv /tmp/jre-7u80-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-i586.rpm]') } end context 'when select Oracle Java SE 8 JRE on RedHat family, 32-bit' do let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } } let(:title) { 'jdk8' } it { is_expected.to contain_archive('/tmp/jre-8u131-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u131 b11').with_command('rpm --force -iv /tmp/jre-8u131-linux-i586.rpm') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u131 b11').that_requires('Archive[/tmp/jre-8u131-linux-i586.rpm]') } end context 'when installing multiple versions' do let(:params) do { ensure: 'present', version_major: '8u131', version_minor: 'b11', java_se: 'jdk', url_hash: 'abcdef01234567890', } end let(:title) { 'jdk8' } let(:pre_condition) do <<-EOL java::oracle { 'jdk8121': ensure => 'present', version_major => '8u121', version_minor => 'b11', java_se => 'jdk', url_hash => 'fiewojgfuiowfniweof', } EOL end it { is_expected.to compile } end end context 'with Ubuntu 64-bit' do let(:facts) { { kernel: 'Linux', os: { family: 'Debian', architecture: 'amd64', name: 'Ubuntu', release: { full: '16.04' } } } } context 'when Oracle Java SE 6 JDK' do let(:params) { { ensure: 'present', version: '6', java_se: 'jdk' } } let(:title) { 'jdk6' } it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64.tar.gz') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('tar -zxf /tmp/jdk-6u45-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-x64.tar.gz]') } end context 'with Oracle Java SE 7 JDK' do let(:params) { { ensure: 'present', version: '7', java_se: 'jdk' } } let(:title) { 'jdk7' } it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-x64.tar.gz') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('tar -zxf /tmp/jdk-7u80-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-x64.tar.gz]') } end context 'with Oracle Java SE 8 JDK' do let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } } let(:title) { 'jdk8' } it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.tar.gz') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u131 b11').with_command('tar -zxf /tmp/jdk-8u131-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u131 b11').that_requires('Archive[/tmp/jdk-8u131-linux-x64.tar.gz]') } end context 'with Oracle Java SE 6 JRE' do let(:params) { { ensure: 'present', version: '6', java_se: 'jre' } } let(:title) { 'jre6' } it { is_expected.to contain_archive('/tmp/jre-6u45-linux-x64.tar.gz') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('tar -zxf /tmp/jre-6u45-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-x64.tar.gz]') } end context 'when Oracle Java SE 7 JRE' do let(:params) { { ensure: 'present', version: '7', java_se: 'jre' } } let(:title) { 'jre7' } it { is_expected.to contain_archive('/tmp/jre-7u80-linux-x64.tar.gz') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('tar -zxf /tmp/jre-7u80-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-x64.tar.gz]') } end context 'when Oracle Java SE 8 JRE' do let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } } let(:title) { 'jre8' } it { is_expected.to contain_archive('/tmp/jre-8u131-linux-x64.tar.gz') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u131 b11').with_command('tar -zxf /tmp/jre-8u131-linux-x64.tar.gz -C /usr/lib/jvm') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u131 b11').that_requires('Archive[/tmp/jre-8u131-linux-x64.tar.gz]') } end context 'when passing URL to url parameter' do let(:params) { { ensure: 'present', version_major: '8u131', version_minor: 'b11', java_se: 'jdk', url: oracle_url.to_s } } let(:title) { 'jdk8' } it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.tar.gz') } end context 'when installing multiple versions' do let(:params) do { ensure: 'present', version_major: '8u131', version_minor: 'b11', java_se: 'jdk', url_hash: 'abcdef01234567890', } end let(:title) { 'jdk8' } let(:pre_condition) do <<-EOL java::oracle { 'jdk8121': ensure => 'present', version_major => '8u121', version_minor => 'b11', java_se => 'jdk', url_hash => 'fiewojgfuiowfniweof', } EOL end it { is_expected.to compile } end end describe 'incompatible OSes' do [ { # C14706 kernel: 'Windows', os: { family: 'Windows', name: 'Windows', release: { full: '8.1', }, }, }, { # C14707 kernel: 'Darwin', os: { family: 'Darwin', name: 'Darwin', release: { full: '13.3.0', }, }, }, { # C14708 kernel: 'AIX', os: { family: 'AIX', name: 'AIX', release: { full: '7100-02-00-000', }, }, }, { # C14709 kernel: 'AIX', os: { family: 'AIX', name: 'AIX', release: { full: '6100-07-04-1216', }, }, }, { # C14710 kernel: 'AIX', os: { family: 'AIX', name: 'AIX', release: { full: '5300-12-01-1016', }, }, }, ].each do |facts| let(:facts) { facts } let(:title) { 'jdk' } it "is_expected.to fail on #{facts[:os][:name]} #{facts[:os][:release][:full]}" do expect { catalogue }.to raise_error Puppet::Error, %r{unsupported platform} end end end end