package_spec.rb 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. require 'spec_helper'
  2. describe 'nginx::package' do
  3. shared_examples 'redhat' do |operatingsystem|
  4. let(:facts) {{ :operatingsystem => operatingsystem, :osfamily => 'RedHat', :operatingsystemmajrelease => '6' }}
  5. context "using defaults" do
  6. it { is_expected.to contain_package('nginx') }
  7. it { is_expected.to contain_yumrepo('nginx-release').with(
  8. 'baseurl' => "http://nginx.org/packages/#{operatingsystem == 'CentOS' ? 'centos' : 'rhel'}/6/$basearch/",
  9. 'descr' => 'nginx repo',
  10. 'enabled' => '1',
  11. 'gpgcheck' => '1',
  12. 'priority' => '1',
  13. 'gpgkey' => 'http://nginx.org/keys/nginx_signing.key'
  14. )}
  15. it { is_expected.to contain_anchor('nginx::package::begin').that_comes_before('Class[nginx::package::redhat]') }
  16. it { is_expected.to contain_anchor('nginx::package::end').that_requires('Class[nginx::package::redhat]') }
  17. end
  18. context "package_source => nginx-mainline" do
  19. let(:params) {{ :package_source => 'nginx-mainline' }}
  20. it { is_expected.to contain_yumrepo('nginx-release').with(
  21. 'baseurl' => "http://nginx.org/packages/mainline/#{operatingsystem == 'CentOS' ? 'centos' : 'rhel'}/6/$basearch/",
  22. )}
  23. end
  24. context "manage_repo => false" do
  25. let(:facts) {{ :operatingsystem => operatingsystem, :osfamily => 'RedHat', :operatingsystemmajrelease => '7' }}
  26. let(:params) {{ :manage_repo => false }}
  27. it { is_expected.to contain_package('nginx') }
  28. it { is_expected.not_to contain_yumrepo('nginx-release') }
  29. end
  30. context "operatingsystemmajrelease = 5" do
  31. let(:facts) {{ :operatingsystem => operatingsystem, :osfamily => 'RedHat', :operatingsystemmajrelease => '5' }}
  32. it { is_expected.to contain_package('nginx') }
  33. it { is_expected.to contain_yumrepo('nginx-release').with(
  34. 'baseurl' => "http://nginx.org/packages/#{operatingsystem == 'CentOS' ? 'centos' : 'rhel'}/5/$basearch/"
  35. )}
  36. end
  37. describe 'installs the requested package version' do
  38. let(:facts) {{ :operatingsystem => 'redhat', :osfamily => 'redhat', :operatingsystemmajrelease => '7'}}
  39. let(:params) {{ :package_ensure => '3.0.0' }}
  40. it 'installs 3.0.0 exactly' do
  41. is_expected.to contain_package('nginx').with({
  42. 'ensure' => '3.0.0'
  43. })
  44. end
  45. end
  46. end
  47. shared_examples 'debian' do |operatingsystem, lsbdistcodename, lsbdistid, operatingsystemmajrelease|
  48. let(:facts) {{
  49. :operatingsystem => operatingsystem,
  50. :operatingsystemmajrelease => operatingsystemmajrelease,
  51. :osfamily => 'Debian',
  52. :lsbdistcodename => lsbdistcodename,
  53. :lsbdistid => lsbdistid
  54. }}
  55. context "using defaults" do
  56. it { is_expected.to contain_package('nginx') }
  57. it { is_expected.not_to contain_package('passenger') }
  58. it { is_expected.to contain_apt__source('nginx').with(
  59. 'location' => "http://nginx.org/packages/#{operatingsystem.downcase}",
  60. 'repos' => 'nginx',
  61. 'key' => '573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62',
  62. )}
  63. it { is_expected.to contain_anchor('nginx::package::begin').that_comes_before('Class[nginx::package::debian]') }
  64. it { is_expected.to contain_anchor('nginx::package::end').that_requires('Class[nginx::package::debian]') }
  65. end
  66. context "package_source => nginx-mainline" do
  67. let(:params) {{ :package_source => 'nginx-mainline' }}
  68. it { is_expected.to contain_apt__source('nginx').with(
  69. 'location' => "http://nginx.org/packages/mainline/#{operatingsystem.downcase}",
  70. )}
  71. end
  72. context "package_source => 'passenger'" do
  73. let(:params) {{ :package_source => 'passenger' }}
  74. it { is_expected.to contain_package('nginx') }
  75. it { is_expected.to contain_package('passenger') }
  76. it { is_expected.to contain_apt__source('nginx').with(
  77. 'location' => 'https://oss-binaries.phusionpassenger.com/apt/passenger',
  78. 'repos' => "main",
  79. 'key' => '16378A33A6EF16762922526E561F9B9CAC40B2F7',
  80. )}
  81. end
  82. context "manage_repo => false" do
  83. let(:params) {{ :manage_repo => false }}
  84. it { is_expected.to contain_package('nginx') }
  85. it { is_expected.not_to contain_apt__source('nginx') }
  86. it { is_expected.not_to contain_package('passenger') }
  87. end
  88. end
  89. context 'redhat' do
  90. it_behaves_like 'redhat', 'CentOS'
  91. it_behaves_like 'redhat', 'RedHat'
  92. end
  93. context 'debian' do
  94. it_behaves_like 'debian', 'Debian', 'wheezy', 'Debian', '6'
  95. it_behaves_like 'debian', 'Ubuntu', 'precise', 'Ubuntu', '12.04'
  96. end
  97. context 'other' do
  98. let(:facts) {{ :operatingsystem => 'xxx', :osfamily => 'linux' }}
  99. it { is_expected.to contain_package('nginx') }
  100. end
  101. end