5f1da4fce9
Since commit 531ef9 of puppetlabs-apt, the gpg key (apt::key) is
checked, and should use the long format.
This value is validated with a regex enforcing it to only contain valid
hexadecimal characters, be precisely 8 or 16 hexadecimal characters long
and optionally prefixed with 0x for key IDs, or 40 hexadecimal
characters long for key fingerprints.
f588f2651a
118 lines
4.8 KiB
Ruby
118 lines
4.8 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'nginx::package' do
|
|
|
|
shared_examples 'redhat' do |operatingsystem|
|
|
let(:facts) {{ :operatingsystem => operatingsystem, :osfamily => 'RedHat', :operatingsystemmajrelease => '6' }}
|
|
context "using defaults" do
|
|
it { is_expected.to contain_package('nginx') }
|
|
it { is_expected.to contain_yumrepo('nginx-release').with(
|
|
'baseurl' => "http://nginx.org/packages/#{operatingsystem == 'CentOS' ? 'centos' : 'rhel'}/6/$basearch/",
|
|
'descr' => 'nginx repo',
|
|
'enabled' => '1',
|
|
'gpgcheck' => '1',
|
|
'priority' => '1',
|
|
'gpgkey' => 'http://nginx.org/keys/nginx_signing.key'
|
|
)}
|
|
it { is_expected.to contain_anchor('nginx::package::begin').that_comes_before('Class[nginx::package::redhat]') }
|
|
it { is_expected.to contain_anchor('nginx::package::end').that_requires('Class[nginx::package::redhat]') }
|
|
end
|
|
|
|
context "package_source => nginx-mainline" do
|
|
let(:params) {{ :package_source => 'nginx-mainline' }}
|
|
it { is_expected.to contain_yumrepo('nginx-release').with(
|
|
'baseurl' => "http://nginx.org/packages/mainline/#{operatingsystem == 'CentOS' ? 'centos' : 'rhel'}/6/$basearch/",
|
|
)}
|
|
end
|
|
|
|
context "manage_repo => false" do
|
|
let(:facts) {{ :operatingsystem => operatingsystem, :osfamily => 'RedHat', :operatingsystemmajrelease => '7' }}
|
|
let(:params) {{ :manage_repo => false }}
|
|
it { is_expected.to contain_package('nginx') }
|
|
it { is_expected.not_to contain_yumrepo('nginx-release') }
|
|
end
|
|
|
|
context "operatingsystemmajrelease = 5" do
|
|
let(:facts) {{ :operatingsystem => operatingsystem, :osfamily => 'RedHat', :operatingsystemmajrelease => '5' }}
|
|
it { is_expected.to contain_package('nginx') }
|
|
it { is_expected.to contain_yumrepo('nginx-release').with(
|
|
'baseurl' => "http://nginx.org/packages/#{operatingsystem == 'CentOS' ? 'centos' : 'rhel'}/5/$basearch/"
|
|
)}
|
|
end
|
|
|
|
describe 'installs the requested package version' do
|
|
let(:facts) {{ :operatingsystem => 'redhat', :osfamily => 'redhat', :operatingsystemmajrelease => '7'}}
|
|
let(:params) {{ :package_ensure => '3.0.0' }}
|
|
|
|
it 'installs 3.0.0 exactly' do
|
|
is_expected.to contain_package('nginx').with({
|
|
'ensure' => '3.0.0'
|
|
})
|
|
end
|
|
end
|
|
end
|
|
|
|
shared_examples 'debian' do |operatingsystem, lsbdistcodename, lsbdistid, operatingsystemmajrelease|
|
|
let(:facts) {{
|
|
:operatingsystem => operatingsystem,
|
|
:operatingsystemmajrelease => operatingsystemmajrelease,
|
|
:osfamily => 'Debian',
|
|
:lsbdistcodename => lsbdistcodename,
|
|
:lsbdistid => lsbdistid
|
|
}}
|
|
|
|
context "using defaults" do
|
|
it { is_expected.to contain_package('nginx') }
|
|
it { is_expected.not_to contain_package('passenger') }
|
|
it { is_expected.to contain_apt__source('nginx').with(
|
|
'location' => "http://nginx.org/packages/#{operatingsystem.downcase}",
|
|
'repos' => 'nginx',
|
|
'key' => 'ABF5BD827BD9BF62',
|
|
'key_source' => 'http://nginx.org/keys/nginx_signing.key'
|
|
)}
|
|
it { is_expected.to contain_anchor('nginx::package::begin').that_comes_before('Class[nginx::package::debian]') }
|
|
it { is_expected.to contain_anchor('nginx::package::end').that_requires('Class[nginx::package::debian]') }
|
|
end
|
|
|
|
context "package_source => nginx-mainline" do
|
|
let(:params) {{ :package_source => 'nginx-mainline' }}
|
|
it { is_expected.to contain_apt__source('nginx').with(
|
|
'location' => "http://nginx.org/packages/mainline/#{operatingsystem.downcase}",
|
|
)}
|
|
end
|
|
|
|
context "package_source => 'passenger'" do
|
|
let(:params) {{ :package_source => 'passenger' }}
|
|
it { is_expected.to contain_package('nginx') }
|
|
it { is_expected.to contain_package('passenger') }
|
|
it { is_expected.to contain_apt__source('nginx').with(
|
|
'location' => 'https://oss-binaries.phusionpassenger.com/apt/passenger',
|
|
'repos' => "main",
|
|
'key' => '561F9B9CAC40B2F7',
|
|
'key_source' => 'https://oss-binaries.phusionpassenger.com/auto-software-signing-gpg-key.txt'
|
|
)}
|
|
end
|
|
|
|
context "manage_repo => false" do
|
|
let(:params) {{ :manage_repo => false }}
|
|
it { is_expected.to contain_package('nginx') }
|
|
it { is_expected.not_to contain_apt__source('nginx') }
|
|
it { is_expected.not_to contain_package('passenger') }
|
|
end
|
|
end
|
|
|
|
context 'redhat' do
|
|
it_behaves_like 'redhat', 'CentOS'
|
|
it_behaves_like 'redhat', 'RedHat'
|
|
end
|
|
|
|
context 'debian' do
|
|
it_behaves_like 'debian', 'Debian', 'wheezy', 'Debian', '6'
|
|
it_behaves_like 'debian', 'Ubuntu', 'precise', 'Ubuntu', '12.04'
|
|
end
|
|
|
|
context 'other' do
|
|
let(:facts) {{ :operatingsystem => 'xxx', :osfamily => 'linux' }}
|
|
it { is_expected.to contain_package('nginx') }
|
|
end
|
|
end
|