pin_spec.rb 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. require 'spec_helper'
  2. describe 'apt::pin', :type => :define do
  3. let :pre_condition do
  4. 'class { "apt": }'
  5. end
  6. let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy', :puppetversion => Puppet.version, } }
  7. let(:title) { 'my_pin' }
  8. context 'defaults' do
  9. it { is_expected.to contain_apt__setting("pref-my_pin").with_content(/Explanation: : my_pin\nPackage: \*\nPin: release a=my_pin\nPin-Priority: 0\n/)}
  10. it { is_expected.to contain_apt__setting("pref-my_pin") }
  11. end
  12. context 'set version' do
  13. let :params do
  14. {
  15. 'packages' => 'vim',
  16. 'version' => '1',
  17. }
  18. end
  19. it { is_expected.to contain_apt__setting("pref-my_pin").with_content(/Explanation: : my_pin\nPackage: vim\nPin: version 1\nPin-Priority: 0\n/)}
  20. it { is_expected.to contain_apt__setting("pref-my_pin") }
  21. end
  22. context 'set origin' do
  23. let :params do
  24. {
  25. 'packages' => 'vim',
  26. 'origin' => 'test',
  27. }
  28. end
  29. it { is_expected.to contain_apt__setting("pref-my_pin").with_content(/Explanation: : my_pin\nPackage: vim\nPin: origin test\nPin-Priority: 0\n/)}
  30. it { is_expected.to contain_apt__setting("pref-my_pin") }
  31. end
  32. context 'not defaults' do
  33. let :params do
  34. {
  35. 'explanation' => 'foo',
  36. 'order' => 99,
  37. 'release' => '1',
  38. 'codename' => 'bar',
  39. 'release_version' => '2',
  40. 'component' => 'baz',
  41. 'originator' => 'foobar',
  42. 'label' => 'foobaz',
  43. 'priority' => 10,
  44. }
  45. end
  46. it { is_expected.to contain_apt__setting("pref-my_pin").with_content(/Explanation: foo\nPackage: \*\nPin: release a=1, n=bar, v=2, c=baz, o=foobar, l=foobaz\nPin-Priority: 10\n/) }
  47. it { is_expected.to contain_apt__setting("pref-my_pin").with({
  48. 'priority' => 99,
  49. })
  50. }
  51. end
  52. context 'ensure absent' do
  53. let :params do
  54. {
  55. 'ensure' => 'absent'
  56. }
  57. end
  58. it { is_expected.to contain_apt__setting("pref-my_pin").with({
  59. 'ensure' => 'absent',
  60. })
  61. }
  62. end
  63. context 'bad characters' do
  64. let(:title) { 'such bad && wow!' }
  65. it { is_expected.to contain_apt__setting("pref-such__bad____wow_") }
  66. end
  67. describe 'validation' do
  68. context 'invalid order' do
  69. let :params do
  70. {
  71. 'order' => 'foo',
  72. }
  73. end
  74. it do
  75. expect {
  76. subject.call
  77. }.to raise_error(Puppet::Error, /Only integers are allowed/)
  78. end
  79. end
  80. context 'packages == * and version' do
  81. let :params do
  82. {
  83. 'version' => '1',
  84. }
  85. end
  86. it do
  87. expect {
  88. subject.call
  89. }.to raise_error(Puppet::Error, /parameter version cannot be used in general form/)
  90. end
  91. end
  92. context 'packages == * and release and origin' do
  93. let :params do
  94. {
  95. 'origin' => 'test',
  96. 'release' => 'foo',
  97. }
  98. end
  99. it do
  100. expect {
  101. subject.call
  102. }.to raise_error(Puppet::Error, /parameters release and origin are mutually exclusive/)
  103. end
  104. end
  105. context 'specific form with release and origin' do
  106. let :params do
  107. {
  108. 'release' => 'foo',
  109. 'origin' => 'test',
  110. 'packages' => 'vim',
  111. }
  112. end
  113. it do
  114. expect {
  115. subject.call
  116. }.to raise_error(Puppet::Error, /parameters release, origin, and version are mutually exclusive/)
  117. end
  118. end
  119. context 'specific form with version and origin' do
  120. let :params do
  121. {
  122. 'version' => '1',
  123. 'origin' => 'test',
  124. 'packages' => 'vim',
  125. }
  126. end
  127. it do
  128. expect {
  129. subject.call
  130. }.to raise_error(Puppet::Error, /parameters release, origin, and version are mutually exclusive/)
  131. end
  132. end
  133. end
  134. end