freighthop 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (259) hide show
  1. checksums.yaml +7 -0
  2. data/Puppetfile +1 -1
  3. data/Puppetfile.lock +4 -5
  4. data/README.md +18 -7
  5. data/Vagrantfile +4 -0
  6. data/lib/freighthop/cli/help.rb +1 -0
  7. data/lib/freighthop/cli/init.rb +10 -10
  8. data/lib/freighthop/cli/version.rb +17 -0
  9. data/lib/freighthop/cli.rb +3 -1
  10. data/lib/freighthop/version.rb +1 -1
  11. data/lib/freighthop.rb +4 -0
  12. data/modules/apt/CHANGELOG +2 -36
  13. data/modules/apt/Gemfile +5 -6
  14. data/modules/apt/Gemfile.lock +7 -40
  15. data/modules/apt/Modulefile +1 -1
  16. data/modules/apt/README.md +1 -2
  17. data/modules/apt/Rakefile +0 -1
  18. data/modules/apt/manifests/init.pp +2 -5
  19. data/modules/apt/manifests/params.pp +1 -4
  20. data/modules/apt/manifests/pin.pp +1 -1
  21. data/modules/apt/manifests/ppa.pp +10 -24
  22. data/modules/apt/manifests/update.pp +0 -1
  23. data/modules/apt/metadata.json +19 -32
  24. data/modules/apt/spec/defines/ppa_spec.rb +2 -53
  25. data/modules/apt/spec/defines/source_spec.rb +2 -2
  26. data/modules/apt/templates/source.list.erb +2 -2
  27. data/modules/apt/tests/key.pp +3 -3
  28. data/modules/concat/CHANGELOG +73 -0
  29. data/modules/concat/Gemfile +20 -0
  30. data/modules/concat/Gemfile.lock +104 -0
  31. data/modules/concat/Modulefile +7 -6
  32. data/modules/concat/README.md +440 -0
  33. data/modules/concat/Rakefile +5 -1
  34. data/modules/concat/files/concatfragments.rb +137 -0
  35. data/modules/concat/files/concatfragments.sh +15 -4
  36. data/modules/concat/lib/facter/concat_basedir.rb +9 -3
  37. data/modules/concat/manifests/fragment.pp +108 -48
  38. data/modules/concat/manifests/init.pp +191 -210
  39. data/modules/concat/manifests/setup.pp +31 -31
  40. data/modules/concat/metadata.json +40 -21
  41. data/modules/{apt → concat}/spec/spec_helper_system.rb +11 -6
  42. data/modules/{firewall → concat}/spec/system/basic_spec.rb +1 -1
  43. data/modules/concat/spec/system/concat_spec.rb +154 -0
  44. data/modules/concat/spec/system/deprecation_warnings_spec.rb +247 -0
  45. data/modules/concat/spec/system/empty_spec.rb +27 -0
  46. data/modules/concat/spec/system/fragment_source_spec.rb +142 -0
  47. data/modules/concat/spec/system/replace_spec.rb +257 -0
  48. data/modules/concat/spec/system/symbolic_name_spec.rb +35 -0
  49. data/modules/concat/spec/system/warn_spec.rb +106 -0
  50. data/modules/concat/spec/unit/classes/concat_setup_spec.rb +42 -0
  51. data/modules/concat/spec/unit/defines/concat_fragment_spec.rb +267 -0
  52. data/modules/concat/spec/unit/defines/concat_spec.rb +380 -0
  53. data/modules/concat/spec/unit/facts/concat_basedir_spec.rb +18 -0
  54. data/modules/concat/tests/fragment.pp +19 -0
  55. data/modules/concat/tests/init.pp +7 -0
  56. data/modules/firewall/Changelog +38 -0
  57. data/modules/firewall/Gemfile +5 -2
  58. data/modules/firewall/Gemfile.lock +76 -26
  59. data/modules/firewall/Modulefile +1 -1
  60. data/modules/firewall/README.markdown +47 -15
  61. data/modules/firewall/Rakefile +0 -7
  62. data/modules/firewall/lib/puppet/provider/firewall/ip6tables.rb +50 -7
  63. data/modules/firewall/lib/puppet/provider/firewall/iptables.rb +147 -31
  64. data/modules/firewall/lib/puppet/provider/firewallchain/iptables_chain.rb +19 -8
  65. data/modules/firewall/lib/puppet/type/firewall.rb +207 -3
  66. data/modules/firewall/lib/puppet/type/firewallchain.rb +73 -2
  67. data/modules/firewall/lib/puppet/util/firewall.rb +14 -0
  68. data/modules/firewall/metadata.json +181 -76
  69. data/modules/firewall/spec/acceptance/basic_spec.rb +8 -0
  70. data/modules/firewall/spec/acceptance/change_source_spec.rb +77 -0
  71. data/modules/firewall/spec/acceptance/class_spec.rb +27 -0
  72. data/modules/firewall/spec/acceptance/firewall_spec.rb +1608 -0
  73. data/modules/firewall/spec/acceptance/firewallchain_spec.rb +125 -0
  74. data/modules/firewall/spec/acceptance/ip6_fragment_spec.rb +94 -0
  75. data/modules/firewall/spec/acceptance/isfragment_spec.rb +92 -0
  76. data/modules/firewall/spec/acceptance/nodesets/centos-59-x64.yml +10 -0
  77. data/modules/firewall/spec/acceptance/nodesets/centos-64-x64-fusion.yml +10 -0
  78. data/modules/firewall/spec/acceptance/nodesets/centos-64-x64-pe.yml +12 -0
  79. data/modules/firewall/spec/acceptance/nodesets/centos-64-x64.yml +10 -0
  80. data/modules/firewall/spec/acceptance/nodesets/debian-607-x64.yml +10 -0
  81. data/modules/firewall/spec/acceptance/nodesets/debian-70rc1-x64.yml +10 -0
  82. data/modules/firewall/spec/acceptance/nodesets/default.yml +10 -0
  83. data/modules/firewall/spec/acceptance/nodesets/fedora-18-x64.yml +10 -0
  84. data/modules/firewall/spec/acceptance/nodesets/sles-11sp1-x64.yml +10 -0
  85. data/modules/firewall/spec/acceptance/nodesets/ubuntu-server-10044-x64.yml +10 -0
  86. data/modules/firewall/spec/acceptance/nodesets/ubuntu-server-12042-x64.yml +10 -0
  87. data/modules/firewall/spec/{system → acceptance}/params_spec.rb +44 -52
  88. data/modules/firewall/spec/acceptance/purge_spec.rb +124 -0
  89. data/modules/firewall/spec/acceptance/resource_cmd_spec.rb +93 -0
  90. data/modules/firewall/spec/acceptance/rules_spec.rb +248 -0
  91. data/modules/firewall/spec/acceptance/socket_spec.rb +96 -0
  92. data/modules/firewall/spec/{system → acceptance}/standard_usage_spec.rb +6 -10
  93. data/modules/firewall/spec/fixtures/ip6tables/conversion_hash.rb +107 -0
  94. data/modules/firewall/spec/fixtures/iptables/conversion_hash.rb +56 -2
  95. data/modules/firewall/spec/spec_helper_acceptance.rb +38 -0
  96. data/modules/firewall/spec/unit/classes/firewall_spec.rb +2 -2
  97. data/modules/firewall/spec/unit/facter/iptables_persistent_version_spec.rb +8 -5
  98. data/modules/firewall/spec/unit/facter/iptables_spec.rb +6 -4
  99. data/modules/firewall/spec/unit/puppet/provider/iptables_chain_spec.rb +14 -4
  100. data/modules/firewall/spec/unit/puppet/provider/iptables_spec.rb +246 -5
  101. data/modules/firewall/spec/unit/puppet/type/firewall_spec.rb +99 -8
  102. data/modules/firewall/spec/unit/puppet/type/firewallchain_spec.rb +50 -6
  103. data/modules/firewall/spec/unit/puppet/util/firewall_spec.rb +21 -0
  104. data/modules/mysql/CHANGELOG +0 -30
  105. data/modules/mysql/Gemfile +0 -1
  106. data/modules/mysql/Gemfile.lock +30 -31
  107. data/modules/mysql/Modulefile +1 -1
  108. data/modules/mysql/README.md +2 -49
  109. data/modules/mysql/files/mysqltuner.pl +1 -1
  110. data/modules/mysql/lib/puppet/provider/database/mysql.rb +1 -1
  111. data/modules/mysql/lib/puppet/provider/database_grant/mysql.rb +1 -1
  112. data/modules/mysql/lib/puppet/provider/database_user/mysql.rb +1 -1
  113. data/modules/mysql/lib/puppet/provider/mysql.rb +1 -2
  114. data/modules/mysql/lib/puppet/provider/mysql_database/mysql.rb +13 -2
  115. data/modules/mysql/lib/puppet/provider/mysql_user/mysql.rb +12 -0
  116. data/modules/mysql/lib/puppet/type/database_user.rb +1 -1
  117. data/modules/mysql/lib/puppet/type/mysql_grant.rb +3 -5
  118. data/modules/mysql/manifests/client.pp +0 -7
  119. data/modules/mysql/manifests/server/root_password.pp +0 -2
  120. data/modules/mysql/manifests/server.pp +0 -6
  121. data/modules/mysql/metadata.json +79 -81
  122. data/modules/mysql/spec/classes/mysql_server_spec.rb +0 -74
  123. data/modules/mysql/spec/system/mysql_server_root_password_spec.rb +1 -7
  124. data/modules/mysql/spec/system/mysql_server_spec.rb +3 -6
  125. data/modules/mysql/spec/system/types/mysql_grant_spec.rb +0 -27
  126. data/modules/mysql/spec/unit/puppet/functions/mysql_deepmerge_spec.rb +1 -1
  127. data/modules/mysql/spec/unit/puppet/provider/database/mysql_spec.rb +4 -4
  128. data/modules/mysql/spec/unit/puppet/provider/database_grant/mysql_spec.rb +15 -15
  129. data/modules/mysql/spec/unit/puppet/provider/database_user/mysql_spec.rb +4 -4
  130. data/modules/mysql/spec/unit/puppet/provider/mysql_database/mysql_spec.rb +3 -3
  131. data/modules/mysql/spec/unit/puppet/provider/mysql_user/mysql_spec.rb +3 -3
  132. data/modules/mysql/templates/my.cnf.erb +2 -4
  133. data/modules/mysql/tests/mysql_grant.pp +1 -1
  134. data/modules/postgresql/Changelog +31 -0
  135. data/modules/postgresql/Gemfile +4 -2
  136. data/modules/postgresql/Modulefile +1 -1
  137. data/modules/postgresql/README.md +10 -4
  138. data/modules/postgresql/Rakefile +0 -1
  139. data/modules/postgresql/lib/puppet/provider/postgresql_psql/ruby.rb +25 -3
  140. data/modules/postgresql/manifests/globals.pp +2 -0
  141. data/modules/postgresql/manifests/params.pp +21 -0
  142. data/modules/postgresql/manifests/server/config.pp +0 -5
  143. data/modules/postgresql/manifests/server/config_entry.pp +1 -1
  144. data/modules/postgresql/manifests/server/database.pp +2 -1
  145. data/modules/postgresql/manifests/server/db.pp +2 -0
  146. data/modules/postgresql/manifests/server/grant.pp +20 -16
  147. data/modules/postgresql/manifests/server/initdb.pp +27 -3
  148. data/modules/postgresql/manifests/server/pg_hba_rule.pp +2 -4
  149. data/modules/postgresql/manifests/server/role.pp +8 -2
  150. data/modules/postgresql/manifests/server/service.pp +5 -0
  151. data/modules/postgresql/manifests/server.pp +2 -0
  152. data/modules/postgresql/metadata.json +88 -65
  153. data/modules/postgresql/spec/acceptance/client_spec.rb +18 -0
  154. data/modules/postgresql/spec/{system → acceptance}/common_patterns_spec.rb +8 -14
  155. data/modules/postgresql/spec/{system → acceptance}/contrib_spec.rb +4 -9
  156. data/modules/postgresql/spec/acceptance/lib/devel_spec.rb +17 -0
  157. data/modules/postgresql/spec/acceptance/lib/java_spec.rb +20 -0
  158. data/modules/postgresql/spec/acceptance/lib/python_spec.rb +19 -0
  159. data/modules/postgresql/spec/acceptance/nodesets/centos-510-x64.yml +10 -0
  160. data/modules/postgresql/spec/acceptance/nodesets/centos-59-x64.yml +10 -0
  161. data/modules/postgresql/spec/acceptance/nodesets/centos-64-x64-pe.yml +12 -0
  162. data/modules/postgresql/spec/acceptance/nodesets/centos-64-x64.yml +10 -0
  163. data/modules/postgresql/spec/acceptance/nodesets/debian-607-x64.yml +10 -0
  164. data/modules/postgresql/spec/acceptance/nodesets/debian-73-x64.yml +10 -0
  165. data/modules/postgresql/spec/acceptance/nodesets/default.yml +10 -0
  166. data/modules/postgresql/spec/acceptance/nodesets/ubuntu-server-10044-x64.yml +10 -0
  167. data/modules/postgresql/spec/acceptance/nodesets/ubuntu-server-12042-x64.yml +10 -0
  168. data/modules/postgresql/spec/{system → acceptance}/postgresql_psql_spec.rb +6 -14
  169. data/modules/postgresql/spec/{system → acceptance}/server/config_entry_spec.rb +6 -12
  170. data/modules/postgresql/spec/{system → acceptance}/server/database_grant_spec.rb +6 -12
  171. data/modules/postgresql/spec/{system → acceptance}/server/database_spec.rb +6 -12
  172. data/modules/postgresql/spec/{system → acceptance}/server/db_spec.rb +47 -42
  173. data/modules/postgresql/spec/{system → acceptance}/server/grant_spec.rb +6 -12
  174. data/modules/postgresql/spec/{system → acceptance}/server/pg_hba_rule_spec.rb +10 -23
  175. data/modules/postgresql/spec/{system → acceptance}/server/plperl_spec.rb +6 -10
  176. data/modules/postgresql/spec/{system → acceptance}/server/role_spec.rb +13 -28
  177. data/modules/postgresql/spec/acceptance/server/table_grant_spec.rb +124 -0
  178. data/modules/postgresql/spec/{system → acceptance}/server/tablespace_spec.rb +8 -22
  179. data/modules/postgresql/spec/{system → acceptance}/server_spec.rb +38 -61
  180. data/modules/postgresql/spec/{system → acceptance}/validate_db_connection_spec.rb +8 -20
  181. data/modules/postgresql/spec/spec_helper_acceptance.rb +70 -0
  182. data/modules/postgresql/spec/unit/classes/globals_spec.rb +2 -2
  183. data/modules/postgresql/spec/unit/classes/lib/devel_spec.rb +1 -1
  184. data/modules/postgresql/spec/unit/classes/params_spec.rb +1 -1
  185. data/modules/postgresql/spec/unit/classes/repo_spec.rb +1 -1
  186. data/modules/postgresql/spec/unit/classes/server/initdb_spec.rb +2 -1
  187. data/modules/postgresql/spec/unit/classes/server/plperl_spec.rb +2 -2
  188. data/modules/postgresql/spec/unit/classes/server_spec.rb +9 -2
  189. data/modules/postgresql/spec/unit/puppet/provider/postgresql_psql/ruby_spec.rb +15 -17
  190. data/modules/rbenv/bin/autospec +0 -0
  191. data/modules/rbenv/bin/facter +0 -0
  192. data/modules/rbenv/bin/filebucket +0 -0
  193. data/modules/rbenv/bin/hiera +0 -0
  194. data/modules/rbenv/bin/htmldiff +0 -0
  195. data/modules/rbenv/bin/ldiff +0 -0
  196. data/modules/rbenv/bin/pi +0 -0
  197. data/modules/rbenv/bin/puppet +0 -0
  198. data/modules/rbenv/bin/puppet-lint +0 -0
  199. data/modules/rbenv/bin/puppet-module +0 -0
  200. data/modules/rbenv/bin/puppetca +0 -0
  201. data/modules/rbenv/bin/puppetd +0 -0
  202. data/modules/rbenv/bin/puppetdoc +0 -0
  203. data/modules/rbenv/bin/puppetmasterd +0 -0
  204. data/modules/rbenv/bin/puppetqd +0 -0
  205. data/modules/rbenv/bin/puppetrun +0 -0
  206. data/modules/rbenv/bin/rake +0 -0
  207. data/modules/rbenv/bin/ralsh +0 -0
  208. data/modules/rbenv/bin/rspec +0 -0
  209. data/modules/rbenv/bin/rspec-puppet-init +0 -0
  210. data/modules/stdlib/spec/monkey_patches/alias_should_to_must.rb +0 -0
  211. data/modules/stdlib/spec/monkey_patches/publicize_methods.rb +0 -0
  212. data/modules/stdlib/spec/unit/puppet/parser/functions/abs_spec.rb +0 -0
  213. data/modules/stdlib/spec/unit/puppet/parser/functions/bool2num_spec.rb +0 -0
  214. data/modules/stdlib/spec/unit/puppet/parser/functions/capitalize_spec.rb +0 -0
  215. data/modules/stdlib/spec/unit/puppet/parser/functions/chomp_spec.rb +0 -0
  216. data/modules/stdlib/spec/unit/puppet/parser/functions/chop_spec.rb +0 -0
  217. data/modules/stdlib/spec/unit/puppet/parser/functions/delete_at_spec.rb +0 -0
  218. data/modules/stdlib/spec/unit/puppet/parser/functions/delete_spec.rb +0 -0
  219. data/modules/stdlib/spec/unit/puppet/parser/functions/dirname_spec.rb +0 -0
  220. data/modules/stdlib/spec/unit/puppet/parser/functions/downcase_spec.rb +0 -0
  221. data/modules/stdlib/spec/unit/puppet/parser/functions/empty_spec.rb +0 -0
  222. data/modules/stdlib/spec/unit/puppet/parser/functions/flatten_spec.rb +0 -0
  223. data/modules/stdlib/spec/unit/puppet/parser/functions/grep_spec.rb +0 -0
  224. data/modules/stdlib/spec/unit/puppet/parser/functions/has_interface_with_spec.rb +0 -0
  225. data/modules/stdlib/spec/unit/puppet/parser/functions/has_ip_address_spec.rb +0 -0
  226. data/modules/stdlib/spec/unit/puppet/parser/functions/has_ip_network_spec.rb +0 -0
  227. data/modules/stdlib/spec/unit/puppet/parser/functions/max_spec.rb +0 -0
  228. data/modules/stdlib/spec/unit/puppet/parser/functions/min_spec.rb +0 -0
  229. data/modules/stdlib/spec/unit/puppet/parser/functions/reject_spec.rb +0 -0
  230. data/modules/stdlib/spec/unit/puppet/parser/functions/to_bytes_spec.rb +0 -0
  231. data/modules/stdlib/spec/unit/puppet/parser/functions/validate_slength_spec.rb +0 -0
  232. metadata +92 -77
  233. data/modules/apt/manifests/unattended_upgrades.pp +0 -68
  234. data/modules/apt/spec/classes/unattended_upgrades_spec.rb +0 -204
  235. data/modules/apt/spec/system/apt_builddep_spec.rb +0 -38
  236. data/modules/apt/spec/system/apt_key_spec.rb +0 -53
  237. data/modules/apt/spec/system/apt_ppa_spec.rb +0 -59
  238. data/modules/apt/spec/system/apt_source_spec.rb +0 -51
  239. data/modules/apt/spec/system/basic_spec.rb +0 -10
  240. data/modules/apt/spec/system/class_spec.rb +0 -20
  241. data/modules/apt/templates/10periodic.erb +0 -12
  242. data/modules/apt/templates/50unattended-upgrades.erb +0 -53
  243. data/modules/apt/tests/unattended-upgrades.pp +0 -1
  244. data/modules/concat/README.markdown +0 -150
  245. data/modules/concat/spec/defines/init_spec.rb +0 -115
  246. data/modules/concat/spec/fixtures/manifests/site.pp +0 -0
  247. data/modules/firewall/spec/spec_helper_system.rb +0 -49
  248. data/modules/firewall/spec/system/class_spec.rb +0 -39
  249. data/modules/firewall/spec/system/purge_spec.rb +0 -29
  250. data/modules/firewall/spec/system/resource_cmd_spec.rb +0 -53
  251. data/modules/mysql/manifests/server/providers.pp +0 -8
  252. data/modules/mysql/tests/bindings.pp +0 -3
  253. data/modules/postgresql/Gemfile.lock +0 -74
  254. data/modules/postgresql/spec/spec_helper_system.rb +0 -66
  255. data/modules/postgresql/spec/system/client_spec.rb +0 -22
  256. data/modules/postgresql/spec/system/lib/devel_spec.rb +0 -22
  257. data/modules/postgresql/spec/system/lib/java_spec.rb +0 -25
  258. data/modules/postgresql/spec/system/lib/python_spec.rb +0 -24
  259. data/modules/postgresql/spec/system/server/table_grant_spec.rb +0 -72
@@ -0,0 +1,267 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'concat::fragment', :type => :define do
4
+
5
+ shared_examples 'fragment' do |title, params|
6
+ params = {} if params.nil?
7
+
8
+ p = {
9
+ :content => nil,
10
+ :source => nil,
11
+ :order => 10,
12
+ :ensure => 'present',
13
+ }.merge(params)
14
+
15
+ safe_name = title.gsub(/[\/\n]/, '_')
16
+ safe_target_name = p[:target].gsub(/[\/\n]/, '_')
17
+ concatdir = '/var/lib/puppet/concat'
18
+ fragdir = "#{concatdir}/#{safe_target_name}"
19
+ id = 'root'
20
+ if p[:ensure] == 'absent'
21
+ safe_ensure = p[:ensure]
22
+ else
23
+ safe_ensure = 'file'
24
+ end
25
+
26
+ let(:title) { title }
27
+ let(:facts) {{ :concat_basedir => concatdir, :id => id }}
28
+ let(:params) { params }
29
+ let(:pre_condition) do
30
+ "concat{ '#{p[:target]}': }"
31
+ end
32
+
33
+ it do
34
+ should contain_class('concat::setup')
35
+ should contain_concat(p[:target])
36
+ should contain_file("#{fragdir}/fragments/#{p[:order]}_#{safe_name}").with({
37
+ :ensure => safe_ensure,
38
+ :owner => id,
39
+ :mode => '0640',
40
+ :source => p[:source],
41
+ :content => p[:content],
42
+ :alias => "concat_fragment_#{title}",
43
+ :backup => false,
44
+ })
45
+ end
46
+ end
47
+
48
+ context 'title' do
49
+ ['0', '1', 'a', 'z'].each do |title|
50
+ it_behaves_like 'fragment', title, {
51
+ :target => '/etc/motd',
52
+ }
53
+ end
54
+ end # title
55
+
56
+ context 'target =>' do
57
+ ['./etc/motd', 'etc/motd', 'motd_header'].each do |target|
58
+ context target do
59
+ it_behaves_like 'fragment', target, {
60
+ :target => '/etc/motd',
61
+ }
62
+ end
63
+ end
64
+
65
+ context 'false' do
66
+ let(:title) { 'motd_header' }
67
+ let(:facts) {{ :concat_basedir => '/tmp' }}
68
+ let(:params) {{ :target => false }}
69
+
70
+ it 'should fail' do
71
+ expect { should }.to raise_error(Puppet::Error, /is not a string/)
72
+ end
73
+ end
74
+ end # target =>
75
+
76
+ context 'ensure =>' do
77
+ ['present', 'absent'].each do |ens|
78
+ context ens do
79
+ it_behaves_like 'fragment', 'motd_header', {
80
+ :ensure => ens,
81
+ :target => '/etc/motd',
82
+ }
83
+ end
84
+ end
85
+
86
+ context 'any value other than \'present\' or \'absent\'' do
87
+ let(:title) { 'motd_header' }
88
+ let(:facts) {{ :concat_basedir => '/tmp' }}
89
+ let(:params) {{ :ensure => 'invalid', :target => '/etc/motd' }}
90
+
91
+ it 'should create a warning' do
92
+ pending('rspec-puppet support for testing warning()')
93
+ end
94
+ end
95
+ end # ensure =>
96
+
97
+ context 'content =>' do
98
+ ['', 'ashp is our hero'].each do |content|
99
+ context content do
100
+ it_behaves_like 'fragment', 'motd_header', {
101
+ :content => content,
102
+ :target => '/etc/motd',
103
+ }
104
+ end
105
+ end
106
+
107
+ context 'false' do
108
+ let(:title) { 'motd_header' }
109
+ let(:facts) {{ :concat_basedir => '/tmp' }}
110
+ let(:params) {{ :content => false, :target => '/etc/motd' }}
111
+
112
+ it 'should fail' do
113
+ expect { should }.to raise_error(Puppet::Error, /is not a string/)
114
+ end
115
+ end
116
+ end # content =>
117
+
118
+ context 'source =>' do
119
+ ['', '/foo/bar', ['/foo/bar', '/foo/baz']].each do |source|
120
+ context source do
121
+ it_behaves_like 'fragment', 'motd_header', {
122
+ :source => source,
123
+ :target => '/etc/motd',
124
+ }
125
+ end
126
+ end
127
+
128
+ context 'false' do
129
+ let(:title) { 'motd_header' }
130
+ let(:facts) {{ :concat_basedir => '/tmp' }}
131
+ let(:params) {{ :source => false, :target => '/etc/motd' }}
132
+
133
+ it 'should fail' do
134
+ expect { should }.to raise_error(Puppet::Error, /is not a string or an Array/)
135
+ end
136
+ end
137
+ end # source =>
138
+
139
+ context 'order =>' do
140
+ ['', '42', 'a', 'z'].each do |order|
141
+ context '\'\'' do
142
+ it_behaves_like 'fragment', 'motd_header', {
143
+ :order => order,
144
+ :target => '/etc/motd',
145
+ }
146
+ end
147
+ end
148
+
149
+ context 'false' do
150
+ let(:title) { 'motd_header' }
151
+ let(:facts) {{ :concat_basedir => '/tmp' }}
152
+ let(:params) {{ :order => false, :target => '/etc/motd' }}
153
+
154
+ it 'should fail' do
155
+ expect { should }.to raise_error(Puppet::Error, /is not a string/)
156
+ end
157
+ end
158
+ end # order =>
159
+
160
+ context 'more than one content source' do
161
+ error_msg = 'You cannot specify more than one of $content, $source, $ensure => /target'
162
+
163
+ context 'ensure => target and source' do
164
+ let(:title) { 'motd_header' }
165
+ let(:facts) {{ :concat_basedir => '/tmp' }}
166
+ let(:params) do
167
+ {
168
+ :target => '/etc/motd',
169
+ :ensure => '/foo',
170
+ :source => '/bar',
171
+ }
172
+ end
173
+
174
+ it 'should fail' do
175
+ expect { should }.to raise_error(Puppet::Error, /#{Regexp.escape(error_msg)}/m)
176
+ end
177
+ end
178
+
179
+ context 'ensure => target and content' do
180
+ let(:title) { 'motd_header' }
181
+ let(:facts) {{ :concat_basedir => '/tmp' }}
182
+ let(:params) do
183
+ {
184
+ :target => '/etc/motd',
185
+ :ensure => '/foo',
186
+ :content => 'bar',
187
+ }
188
+ end
189
+
190
+ it 'should fail' do
191
+ expect { should }.to raise_error(Puppet::Error, /#{Regexp.escape(error_msg)}/m)
192
+ end
193
+ end
194
+
195
+ context 'source and content' do
196
+ let(:title) { 'motd_header' }
197
+ let(:facts) {{ :concat_basedir => '/tmp' }}
198
+ let(:params) do
199
+ {
200
+ :target => '/etc/motd',
201
+ :source => '/foo',
202
+ :content => 'bar',
203
+ }
204
+ end
205
+
206
+ it 'should fail' do
207
+ expect { should }.to raise_error(Puppet::Error, /#{Regexp.escape(error_msg)}/m)
208
+ end
209
+ end
210
+
211
+ end # more than one content source
212
+
213
+ describe 'deprecated parameter' do
214
+ context 'mode =>' do
215
+ context '1755' do
216
+ it_behaves_like 'fragment', 'motd_header', {
217
+ :mode => '1755',
218
+ :target => '/etc/motd',
219
+ }
220
+
221
+ it 'should create a warning' do
222
+ pending('rspec-puppet support for testing warning()')
223
+ end
224
+ end
225
+ end # mode =>
226
+
227
+ context 'owner =>' do
228
+ context 'apenny' do
229
+ it_behaves_like 'fragment', 'motd_header', {
230
+ :owner => 'apenny',
231
+ :target => '/etc/motd',
232
+ }
233
+
234
+ it 'should create a warning' do
235
+ pending('rspec-puppet support for testing warning()')
236
+ end
237
+ end
238
+ end # owner =>
239
+
240
+ context 'group =>' do
241
+ context 'apenny' do
242
+ it_behaves_like 'fragment', 'motd_header', {
243
+ :group => 'apenny',
244
+ :target => '/etc/motd',
245
+ }
246
+
247
+ it 'should create a warning' do
248
+ pending('rspec-puppet support for testing warning()')
249
+ end
250
+ end
251
+ end # group =>
252
+
253
+ context 'backup =>' do
254
+ context 'foo' do
255
+ it_behaves_like 'fragment', 'motd_header', {
256
+ :backup => 'foo',
257
+ :target => '/etc/motd',
258
+ }
259
+
260
+ it 'should create a warning' do
261
+ pending('rspec-puppet support for testing warning()')
262
+ end
263
+ end
264
+ end # backup =>
265
+ end # deprecated params
266
+
267
+ end
@@ -0,0 +1,380 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'concat', :type => :define do
4
+
5
+ shared_examples 'concat' do |title, params, id|
6
+ params = {} if params.nil?
7
+ id = 'root' if id.nil?
8
+
9
+ # default param values
10
+ p = {
11
+ :ensure => 'present',
12
+ :path => title,
13
+ :owner => nil,
14
+ :group => nil,
15
+ :mode => '0644',
16
+ :warn => false,
17
+ :force => false,
18
+ :backup => 'puppet',
19
+ :replace => true,
20
+ :order => 'alpha',
21
+ :ensure_newline => false,
22
+ }.merge(params)
23
+
24
+ safe_name = title.gsub('/', '_')
25
+ concatdir = '/var/lib/puppet/concat'
26
+ fragdir = "#{concatdir}/#{safe_name}"
27
+ concat_name = 'fragments.concat.out'
28
+ default_warn_message = '# This file is managed by Puppet. DO NOT EDIT.'
29
+
30
+ file_defaults = {
31
+ :backup => false,
32
+ }
33
+
34
+ let(:title) { title }
35
+ let(:params) { params }
36
+ let(:facts) {{ :concat_basedir => concatdir, :id => id }}
37
+
38
+ if p[:ensure] == 'present'
39
+ it do
40
+ should contain_file(fragdir).with(file_defaults.merge({
41
+ :ensure => 'directory',
42
+ :mode => '0750',
43
+ }))
44
+ end
45
+
46
+ it do
47
+ should contain_file("#{fragdir}/fragments").with(file_defaults.merge({
48
+ :ensure => 'directory',
49
+ :mode => '0750',
50
+ :force => true,
51
+ :ignore => ['.svn', '.git', '.gitignore'],
52
+ :purge => true,
53
+ :recurse => true,
54
+ }))
55
+ end
56
+
57
+ [
58
+ "#{fragdir}/fragments.concat",
59
+ "#{fragdir}/#{concat_name}",
60
+ ].each do |file|
61
+ it do
62
+ should contain_file(file).with(file_defaults.merge({
63
+ :ensure => 'present',
64
+ :mode => '0640',
65
+ }))
66
+ end
67
+ end
68
+
69
+ it do
70
+ should contain_file(title).with(file_defaults.merge({
71
+ :ensure => 'present',
72
+ :owner => p[:owner],
73
+ :group => p[:group],
74
+ :mode => p[:mode],
75
+ :replace => p[:replace],
76
+ :path => p[:path],
77
+ :alias => "concat_#{title}",
78
+ :source => "#{fragdir}/#{concat_name}",
79
+ :backup => p[:backup],
80
+ }))
81
+ end
82
+
83
+ cmd = "#{concatdir}/bin/concatfragments.sh " +
84
+ "-o #{concatdir}/#{safe_name}/fragments.concat.out " +
85
+ "-d #{concatdir}/#{safe_name}"
86
+
87
+ # flag order: fragdir, warnflag, forceflag, orderflag, newlineflag
88
+ if p.has_key?(:warn)
89
+ case p[:warn]
90
+ when TrueClass
91
+ message = default_warn_message
92
+ when 'true', 'yes', 'on'
93
+ # should generate a stringified boolean warning
94
+ message = default_warn_message
95
+ when FalseClass
96
+ message = nil
97
+ when 'false', 'no', 'off'
98
+ # should generate a stringified boolean warning
99
+ message = nil
100
+ else
101
+ message = p[:warn]
102
+ end
103
+
104
+ unless message.nil?
105
+ cmd += " -w \'#{message}\'"
106
+ end
107
+ end
108
+
109
+ cmd += " -f" if p[:force]
110
+ cmd += " -n" if p[:order] == 'numeric'
111
+ cmd += " -l" if p[:ensure_newline] == true
112
+
113
+ it do
114
+ should contain_exec("concat_#{title}").with({
115
+ :alias => "concat_#{fragdir}",
116
+ :command => cmd,
117
+ :unless => "#{cmd} -t",
118
+ })
119
+ end
120
+ else
121
+ [
122
+ fragdir,
123
+ "#{fragdir}/fragments",
124
+ "#{fragdir}/fragments.concat",
125
+ "#{fragdir}/#{concat_name}",
126
+ ].each do |file|
127
+ it do
128
+ should contain_file(file).with(file_defaults.merge({
129
+ :ensure => 'absent',
130
+ :backup => false,
131
+ :force => true,
132
+ }))
133
+ end
134
+ end
135
+
136
+ it do
137
+ should contain_file(title).with(file_defaults.merge({
138
+ :ensure => 'absent',
139
+ :backup => p[:backup],
140
+ }))
141
+ end
142
+
143
+ it do
144
+ should contain_exec("concat_#{title}").with({
145
+ :alias => "concat_#{fragdir}",
146
+ :command => 'true',
147
+ :path => '/bin:/usr/bin',
148
+ })
149
+ end
150
+ end
151
+ end
152
+
153
+ context 'title' do
154
+ context 'without path param' do
155
+ # title/name is the default value for the path param. therefore, the
156
+ # title must be an absolute path unless path is specified
157
+ ['/foo', '/foo/bar', '/foo/bar/baz'].each do |title|
158
+ context title do
159
+ it_behaves_like 'concat', '/etc/foo.bar'
160
+ end
161
+ end
162
+
163
+ ['./foo', 'foo', 'foo/bar'].each do |title|
164
+ context title do
165
+ let(:title) { title }
166
+ it 'should fail' do
167
+ expect { should }.to raise_error(Puppet::Error, /is not an absolute path/)
168
+ end
169
+ end
170
+ end
171
+ end
172
+
173
+ context 'with path param' do
174
+ ['./foo', 'foo', 'foo/bar'].each do |title|
175
+ context title do
176
+ it_behaves_like 'concat', title, { :path => '/etc/foo.bar' }
177
+ end
178
+ end
179
+ end
180
+ end # title =>
181
+
182
+ context 'as non-root user' do
183
+ it_behaves_like 'concat', '/etc/foo.bar', {}, 'bob'
184
+ end
185
+
186
+ context 'ensure =>' do
187
+ ['present', 'absent'].each do |ens|
188
+ context ens do
189
+ it_behaves_like 'concat', '/etc/foo.bar', { :ensure => ens }
190
+ end
191
+ end
192
+
193
+ context 'invalid' do
194
+ let(:title) { '/etc/foo.bar' }
195
+ let(:params) {{ :ensure => 'invalid' }}
196
+ it 'should fail' do
197
+ expect { should }.to raise_error(Puppet::Error, /#{Regexp.escape('does not match "^present$|^absent$"')}/)
198
+ end
199
+ end
200
+ end # ensure =>
201
+
202
+ context 'path =>' do
203
+ context '/foo' do
204
+ it_behaves_like 'concat', '/etc/foo.bar', { :path => '/foo' }
205
+ end
206
+
207
+ ['./foo', 'foo', 'foo/bar', false].each do |path|
208
+ context path do
209
+ let(:title) { '/etc/foo.bar' }
210
+ let(:params) {{ :path => path }}
211
+ it 'should fail' do
212
+ expect { should }.to raise_error(Puppet::Error, /is not an absolute path/)
213
+ end
214
+ end
215
+ end
216
+ end # path =>
217
+
218
+ context 'owner =>' do
219
+ context 'apenney' do
220
+ it_behaves_like 'concat', '/etc/foo.bar', { :owner => 'apenny' }
221
+ end
222
+
223
+ context 'false' do
224
+ let(:title) { '/etc/foo.bar' }
225
+ let(:params) {{ :owner => false }}
226
+ it 'should fail' do
227
+ expect { should }.to raise_error(Puppet::Error, /is not a string/)
228
+ end
229
+ end
230
+ end # owner =>
231
+
232
+ context 'group =>' do
233
+ context 'apenney' do
234
+ it_behaves_like 'concat', '/etc/foo.bar', { :group => 'apenny' }
235
+ end
236
+
237
+ context 'false' do
238
+ let(:title) { '/etc/foo.bar' }
239
+ let(:params) {{ :group => false }}
240
+ it 'should fail' do
241
+ expect { should }.to raise_error(Puppet::Error, /is not a string/)
242
+ end
243
+ end
244
+ end # group =>
245
+
246
+ context 'mode =>' do
247
+ context '1755' do
248
+ it_behaves_like 'concat', '/etc/foo.bar', { :mode => '1755' }
249
+ end
250
+
251
+ context 'false' do
252
+ let(:title) { '/etc/foo.bar' }
253
+ let(:params) {{ :mode => false }}
254
+ it 'should fail' do
255
+ expect { should }.to raise_error(Puppet::Error, /is not a string/)
256
+ end
257
+ end
258
+ end # mode =>
259
+
260
+ context 'warn =>' do
261
+ [true, false, '# foo'].each do |warn|
262
+ context warn do
263
+ it_behaves_like 'concat', '/etc/foo.bar', { :warn => warn }
264
+ end
265
+ end
266
+
267
+ context '(stringified boolean)' do
268
+ ['true', 'yes', 'on', 'false', 'no', 'off'].each do |warn|
269
+ context warn do
270
+ it_behaves_like 'concat', '/etc/foo.bar', { :warn => warn }
271
+
272
+ it 'should create a warning' do
273
+ pending('rspec-puppet support for testing warning()')
274
+ end
275
+ end
276
+ end
277
+ end
278
+
279
+ context '123' do
280
+ let(:title) { '/etc/foo.bar' }
281
+ let(:params) {{ :warn => 123 }}
282
+ it 'should fail' do
283
+ expect { should }.to raise_error(Puppet::Error, /is not a string or boolean/)
284
+ end
285
+ end
286
+ end # warn =>
287
+
288
+ context 'force =>' do
289
+ [true, false].each do |force|
290
+ context force do
291
+ it_behaves_like 'concat', '/etc/foo.bar', { :force => force }
292
+ end
293
+ end
294
+
295
+ context '123' do
296
+ let(:title) { '/etc/foo.bar' }
297
+ let(:params) {{ :force => 123 }}
298
+ it 'should fail' do
299
+ expect { should }.to raise_error(Puppet::Error, /is not a boolean/)
300
+ end
301
+ end
302
+ end # force =>
303
+
304
+ context 'backup =>' do
305
+ context 'reverse' do
306
+ it_behaves_like 'concat', '/etc/foo.bar', { :backup => 'reverse' }
307
+ end
308
+
309
+ context 'false' do
310
+ let(:title) { '/etc/foo.bar' }
311
+ let(:params) {{ :backup => false }}
312
+ it 'should fail' do
313
+ expect { should }.to raise_error(Puppet::Error, /is not a string/)
314
+ end
315
+ end
316
+ end # backup =>
317
+
318
+ context 'replace =>' do
319
+ [true, false].each do |replace|
320
+ context replace do
321
+ it_behaves_like 'concat', '/etc/foo.bar', { :replace => replace }
322
+ end
323
+ end
324
+
325
+ context '123' do
326
+ let(:title) { '/etc/foo.bar' }
327
+ let(:params) {{ :replace => 123 }}
328
+ it 'should fail' do
329
+ expect { should }.to raise_error(Puppet::Error, /is not a boolean/)
330
+ end
331
+ end
332
+ end # replace =>
333
+
334
+ context 'order =>' do
335
+ ['alpha', 'numeric'].each do |order|
336
+ context order do
337
+ it_behaves_like 'concat', '/etc/foo.bar', { :order => order }
338
+ end
339
+ end
340
+
341
+ context 'invalid' do
342
+ let(:title) { '/etc/foo.bar' }
343
+ let(:params) {{ :order => 'invalid' }}
344
+ it 'should fail' do
345
+ expect { should }.to raise_error(Puppet::Error, /#{Regexp.escape('does not match "^alpha$|^numeric$"')}/)
346
+ end
347
+ end
348
+ end # order =>
349
+
350
+ context 'ensure_newline =>' do
351
+ [true, false].each do |ensure_newline|
352
+ context 'true' do
353
+ it_behaves_like 'concat', '/etc/foo.bar', { :ensure_newline => ensure_newline}
354
+ end
355
+ end
356
+
357
+ context '123' do
358
+ let(:title) { '/etc/foo.bar' }
359
+ let(:params) {{ :ensure_newline => 123 }}
360
+ it 'should fail' do
361
+ expect { should }.to raise_error(Puppet::Error, /is not a boolean/)
362
+ end
363
+ end
364
+ end # ensure_newline =>
365
+
366
+ describe 'deprecated parameter' do
367
+ context 'gnu =>' do
368
+ context 'foo' do
369
+ it_behaves_like 'concat', '/etc/foo.bar', { :gnu => 'foo'}
370
+
371
+ it 'should create a warning' do
372
+ pending('rspec-puppet support for testing warning()')
373
+ end
374
+ end
375
+ end
376
+ end
377
+
378
+ end
379
+
380
+ # vim:sw=2:ts=2:expandtab:textwidth=79
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'concat_basedir', :type => :fact do
4
+ before(:each) { Facter.clear }
5
+
6
+ context 'Puppet[:vardir] ==' do
7
+ it '/var/lib/puppet' do
8
+ Puppet.stubs(:[]).with(:vardir).returns('/var/lib/puppet')
9
+ Facter.fact(:concat_basedir).value.should == '/var/lib/puppet/concat'
10
+ end
11
+
12
+ it '/home/apenny/.puppet/var' do
13
+ Puppet.stubs(:[]).with(:vardir).returns('/home/apenny/.puppet/var')
14
+ Facter.fact(:concat_basedir).value.should == '/home/apenny/.puppet/var/concat'
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,19 @@
1
+ concat { 'testconcat':
2
+ ensure => present,
3
+ path => '/tmp/concat',
4
+ owner => 'root',
5
+ group => 'root',
6
+ mode => '0664',
7
+ }
8
+
9
+ concat::fragment { '1':
10
+ target => 'testconcat',
11
+ content => '1',
12
+ order => '01',
13
+ }
14
+
15
+ concat::fragment { '2':
16
+ target => 'testconcat',
17
+ content => '2',
18
+ order => '02',
19
+ }
@@ -0,0 +1,7 @@
1
+ concat { '/tmp/concat':
2
+ ensure => present,
3
+ force => true,
4
+ owner => 'root',
5
+ group => 'root',
6
+ mode => '0644',
7
+ }