unattended_upgrades_spec.rb 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. require 'spec_helper'
  2. describe 'apt::unattended_upgrades', :type => :class do
  3. let(:file_unattended) { '/etc/apt/apt.conf.d/50unattended-upgrades' }
  4. let(:file_periodic) { '/etc/apt/apt.conf.d/10periodic' }
  5. let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian' } }
  6. it { should contain_package("unattended-upgrades") }
  7. it {
  8. should create_file("/etc/apt/apt.conf.d/50unattended-upgrades").with({
  9. "owner" => "root",
  10. "group" => "root",
  11. "mode" => "0644",
  12. "require" => "Package[unattended-upgrades]",
  13. })
  14. }
  15. it {
  16. should create_file("/etc/apt/apt.conf.d/10periodic").with({
  17. "owner" => "root",
  18. "group" => "root",
  19. "mode" => "0644",
  20. "require" => "Package[unattended-upgrades]",
  21. })
  22. }
  23. describe 'failing' do
  24. let :facts do
  25. {
  26. 'lsbdistid' => 'debian',
  27. 'lsbdistcodename' => 'squeeze',
  28. 'osfamily' => 'Debian',
  29. }
  30. end
  31. context 'bad auto_fix' do
  32. let :params do
  33. {
  34. 'auto_fix' => 'foo',
  35. }
  36. end
  37. it { expect { should raise_error(Puppet::Error) } }
  38. end
  39. context 'bad minimal_steps' do
  40. let :params do
  41. {
  42. 'minimal_steps' => 'foo',
  43. }
  44. end
  45. it { expect { should raise_error(Puppet::Error) } }
  46. end
  47. context 'bad install_on_shutdown' do
  48. let :params do
  49. {
  50. 'install_on_shutdown' => 'foo',
  51. }
  52. end
  53. it { expect { should raise_error(Puppet::Error) } }
  54. end
  55. context 'bad mail_only_on_error' do
  56. let :params do
  57. {
  58. 'mail_only_on_error' => 'foo',
  59. }
  60. end
  61. it { expect { should raise_error(Puppet::Error) } }
  62. end
  63. context 'bad remove_unused' do
  64. let :params do
  65. {
  66. 'remove_unused' => 'foo',
  67. }
  68. end
  69. it { expect { should raise_error(Puppet::Error) } }
  70. end
  71. context 'bad auto_reboot' do
  72. let :params do
  73. {
  74. 'auto_reboot' => 'foo',
  75. }
  76. end
  77. it { expect { should raise_error(Puppet::Error) } }
  78. end
  79. context 'bad origins' do
  80. let :params do
  81. {
  82. 'origins' => 'foo'
  83. }
  84. end
  85. it { expect { should raise_error(Puppet::Error) } }
  86. end
  87. context 'bad randomsleep' do
  88. let :params do
  89. {
  90. 'randomsleep' => '4ever'
  91. }
  92. end
  93. it { expect { should raise_error(Puppet::Error) } }
  94. end
  95. end
  96. context 'defaults' do
  97. let :facts do
  98. {
  99. 'lsbdistid' => 'debian',
  100. 'lsbdistcodename' => 'squeeze',
  101. 'osfamily' => 'Debian',
  102. }
  103. end
  104. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::Allowed-Origins \{\n\t"\${distro_id} oldstable";\n\t"\${distro_id} \${distro_codename}-security";\n\t"\${distro_id} \${distro_codename}-lts";\n\};} }
  105. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::AutoFixInterruptedDpkg "true";}}
  106. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::MinimalSteps "false";}}
  107. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::InstallOnShutdown "false";}}
  108. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::Remove-Unused-Dependencies "true";}}
  109. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::Automatic-Reboot "false";}}
  110. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Enable "1";}}
  111. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::BackUpArchiveInterval "0";}}
  112. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::BackUpLevel "3";}}
  113. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::MaxAge "0";}}
  114. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::MinAge "0";}}
  115. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::MaxSize "0";}}
  116. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Update-Package-Lists "1";}}
  117. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Download-Upgradeable-Packages "1";}}
  118. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Download-Upgradeable-Packages-Debdelta "0";}}
  119. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Unattended-Upgrade "1";}}
  120. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::AutocleanInterval "7";}}
  121. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Verbose "0";}}
  122. it { is_expected.to_not contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::RandomSleep}}
  123. end
  124. context 'wheezy' do
  125. let :facts do
  126. {
  127. 'lsbdistid' => 'debian',
  128. 'lsbdistcodename' => 'wheezy',
  129. 'osfamily' => 'Debian',
  130. }
  131. end
  132. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::Origins-Pattern \{\n\t"origin=Debian,archive=stable,label=Debian-Security";\n\t"origin=Debian,archive=oldstable,label=Debian-Security";\n\};} }
  133. end
  134. context 'anything but defaults' do
  135. let :facts do
  136. {
  137. 'lsbdistid' => 'debian',
  138. 'lsbdistcodename' => 'wheezy',
  139. 'osfamily' => 'Debian',
  140. }
  141. end
  142. let :params do
  143. {
  144. 'enable' => '0',
  145. 'backup_interval' => '3',
  146. 'backup_level' => '1',
  147. 'max_age' => '7',
  148. 'min_age' => '1',
  149. 'max_size' => '100',
  150. 'update' => '0',
  151. 'download' => '0',
  152. 'download_delta' => '1',
  153. 'upgrade' => '0',
  154. 'autoclean' => '0',
  155. 'verbose' => '1',
  156. 'origins' => ['bananas'],
  157. 'blacklist' => ['foo', 'bar'],
  158. 'auto_fix' => false,
  159. 'minimal_steps' => true,
  160. 'install_on_shutdown' => true,
  161. 'mail_to' => 'root@localhost',
  162. 'mail_only_on_error' => true,
  163. 'remove_unused' => false,
  164. 'auto_reboot' => true,
  165. 'dl_limit' => '70',
  166. 'randomsleep' => '1799',
  167. }
  168. end
  169. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::Origins-Pattern \{\n\t"bananas";\n\};} }
  170. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::Package-Blacklist \{\n\t"foo";\n\t"bar";\n\};} }
  171. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::AutoFixInterruptedDpkg "false";}}
  172. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::MinimalSteps "true";}}
  173. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::InstallOnShutdown "true";}}
  174. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::Mail "root@localhost";}}
  175. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::MailOnlyOnError "true";}}
  176. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::Remove-Unused-Dependencies "false";}}
  177. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Unattended-Upgrade::Automatic-Reboot "true";}}
  178. it { is_expected.to contain_file("/etc/apt/apt.conf.d/50unattended-upgrades").with_content %r{Acquire::http::Dl-Limit "70";}}
  179. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Enable "0";}}
  180. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::BackUpArchiveInterval "3";}}
  181. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::BackUpLevel "1";}}
  182. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::MaxAge "7";}}
  183. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::MinAge "1";}}
  184. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::MaxSize "100";}}
  185. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Update-Package-Lists "0";}}
  186. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Download-Upgradeable-Packages "0";}}
  187. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Download-Upgradeable-Packages-Debdelta "1";}}
  188. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Unattended-Upgrade "0";}}
  189. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::AutocleanInterval "0";}}
  190. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::Verbose "1";}}
  191. it { is_expected.to contain_file("/etc/apt/apt.conf.d/10periodic").with_content %r{APT::Periodic::RandomSleep "1799";}}
  192. end
  193. end