puppet 6.0.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/Gemfile.lock +20 -20
  4. data/Guardfile.example +76 -0
  5. data/LICENSE +189 -4
  6. data/README.md +3 -3
  7. data/Rakefile +5 -2
  8. data/ext/solaris/smf/svc-puppetd +8 -1
  9. data/ext/solaris/smf/svc-puppetmasterd +8 -1
  10. data/lib/puppet/application/apply.rb +100 -59
  11. data/lib/puppet/application/cert.rb +4 -114
  12. data/lib/puppet/application/device.rb +48 -32
  13. data/lib/puppet/application/script.rb +1 -1
  14. data/lib/puppet/application/ssl.rb +135 -51
  15. data/lib/puppet/application.rb +5 -0
  16. data/lib/puppet/configurer.rb +2 -3
  17. data/lib/puppet/defaults.rb +33 -49
  18. data/lib/puppet/etc.rb +20 -0
  19. data/lib/puppet/face/config.rb +3 -3
  20. data/lib/puppet/face/key.rb +1 -1
  21. data/lib/puppet/face/node/clean.rb +0 -1
  22. data/lib/puppet/feature/base.rb +1 -1
  23. data/lib/puppet/file_bucket/dipper.rb +1 -1
  24. data/lib/puppet/file_serving/fileset.rb +1 -1
  25. data/lib/puppet/functions/abs.rb +1 -1
  26. data/lib/puppet/functions/new.rb +1 -1
  27. data/lib/puppet/module/task.rb +29 -38
  28. data/lib/puppet/pal/catalog_compiler.rb +96 -0
  29. data/lib/puppet/pal/compiler.rb +221 -0
  30. data/lib/puppet/pal/function_signature.rb +52 -0
  31. data/lib/puppet/pal/json_catalog_encoder.rb +67 -0
  32. data/lib/puppet/pal/pal_api.rb +15 -0
  33. data/lib/puppet/pal/pal_impl.rb +523 -0
  34. data/lib/puppet/pal/plan_signature.rb +71 -0
  35. data/lib/puppet/pal/script_compiler.rb +71 -0
  36. data/lib/puppet/pal/task_signature.rb +58 -0
  37. data/lib/puppet/parser/catalog_compiler.rb +24 -0
  38. data/lib/puppet/parser/compiler.rb +3 -1
  39. data/lib/puppet/parser/functions/generate.rb +7 -6
  40. data/lib/puppet/plugins/configuration.rb +5 -1
  41. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +3 -1
  42. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -0
  43. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -1
  44. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -3
  45. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  46. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +19 -10
  47. data/lib/puppet/pops/loader/task_instantiator.rb +13 -70
  48. data/lib/puppet/pops/parser/heredoc_support.rb +1 -2
  49. data/lib/puppet/pops/parser/lexer2.rb +1 -1
  50. data/lib/puppet/pops/pcore.rb +10 -33
  51. data/lib/puppet/pops/serialization/to_data_converter.rb +9 -1
  52. data/lib/puppet/pops/serialization.rb +1 -0
  53. data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
  54. data/lib/puppet/pops/types/string_converter.rb +18 -4
  55. data/lib/puppet/pops/validation/checker4_0.rb +17 -2
  56. data/lib/puppet/provider/exec.rb +59 -57
  57. data/lib/puppet/provider/group/aix.rb +18 -2
  58. data/lib/puppet/provider/group/windows_adsi.rb +7 -3
  59. data/lib/puppet/provider/nameservice.rb +1 -25
  60. data/lib/puppet/provider/package/dnf.rb +2 -0
  61. data/lib/puppet/provider/package/pkgng.rb +37 -21
  62. data/lib/puppet/provider/package/portage.rb +2 -2
  63. data/lib/puppet/provider/package/windows/exe_package.rb +16 -10
  64. data/lib/puppet/provider/package/windows/msi_package.rb +8 -0
  65. data/lib/puppet/provider/package/windows/package.rb +9 -1
  66. data/lib/puppet/provider/package/windows.rb +2 -2
  67. data/lib/puppet/provider/package/yum.rb +1 -1
  68. data/lib/puppet/provider/parsedfile.rb +25 -4
  69. data/lib/puppet/provider/service/launchd.rb +19 -3
  70. data/lib/puppet/provider/service/smf.rb +54 -0
  71. data/lib/puppet/provider/service/systemd.rb +19 -0
  72. data/lib/puppet/provider/service/upstart.rb +1 -0
  73. data/lib/puppet/provider/service/windows.rb +22 -5
  74. data/lib/puppet/provider/user/aix.rb +48 -2
  75. data/lib/puppet/provider/user/useradd.rb +2 -10
  76. data/lib/puppet/provider/user/windows_adsi.rb +9 -1
  77. data/lib/puppet/resource/catalog.rb +1 -5
  78. data/lib/puppet/resource.rb +3 -1
  79. data/lib/puppet/ssl/host.rb +26 -16
  80. data/lib/puppet/syntax_checkers/epp.rb +34 -0
  81. data/lib/puppet/syntax_checkers/pp.rb +34 -0
  82. data/lib/puppet/transaction/event_manager.rb +13 -1
  83. data/lib/puppet/transaction/persistence.rb +1 -1
  84. data/lib/puppet/transaction/resource_harness.rb +3 -1
  85. data/lib/puppet/type/group.rb +29 -1
  86. data/lib/puppet/type/package.rb +5 -1
  87. data/lib/puppet/type/resources.rb +12 -2
  88. data/lib/puppet/type/schedule.rb +7 -0
  89. data/lib/puppet/type/service.rb +12 -0
  90. data/lib/puppet/type/user.rb +5 -2
  91. data/lib/puppet/type.rb +6 -0
  92. data/lib/puppet/util/command_line.rb +2 -3
  93. data/lib/puppet/util/execution.rb +15 -1
  94. data/lib/puppet/util/filetype.rb +56 -8
  95. data/lib/puppet/util/log/destinations.rb +3 -2
  96. data/lib/puppet/util/logging.rb +3 -2
  97. data/lib/puppet/util/posix.rb +15 -0
  98. data/lib/puppet/util/selinux.rb +1 -1
  99. data/lib/puppet/util/storage.rb +12 -0
  100. data/lib/puppet/util/windows/adsi.rb +79 -2
  101. data/lib/puppet/util/windows/api_types.rb +1 -1
  102. data/lib/puppet/util/windows/process.rb +23 -3
  103. data/lib/puppet/util/windows/registry.rb +29 -5
  104. data/lib/puppet/util/windows/security.rb +14 -0
  105. data/lib/puppet/util/windows/service.rb +294 -74
  106. data/lib/puppet/util/windows/user.rb +3 -5
  107. data/lib/puppet/util.rb +7 -3
  108. data/lib/puppet/version.rb +1 -1
  109. data/lib/puppet.rb +1 -0
  110. data/lib/puppet_pal.rb +5 -1099
  111. data/locales/ja/puppet.po +952 -986
  112. data/locales/puppet.pot +592 -347
  113. data/man/man5/puppet.conf.5 +26 -31
  114. data/man/man8/puppet-agent.8 +1 -1
  115. data/man/man8/puppet-apply.8 +1 -1
  116. data/man/man8/puppet-catalog.8 +1 -1
  117. data/man/man8/puppet-config.8 +4 -4
  118. data/man/man8/puppet-describe.8 +1 -1
  119. data/man/man8/puppet-device.8 +23 -19
  120. data/man/man8/puppet-doc.8 +1 -1
  121. data/man/man8/puppet-epp.8 +1 -1
  122. data/man/man8/puppet-facts.8 +1 -1
  123. data/man/man8/puppet-filebucket.8 +1 -1
  124. data/man/man8/puppet-generate.8 +1 -1
  125. data/man/man8/puppet-help.8 +1 -1
  126. data/man/man8/puppet-key.8 +2 -2
  127. data/man/man8/puppet-lookup.8 +1 -1
  128. data/man/man8/puppet-man.8 +1 -1
  129. data/man/man8/puppet-module.8 +1 -1
  130. data/man/man8/puppet-node.8 +1 -1
  131. data/man/man8/puppet-parser.8 +1 -1
  132. data/man/man8/puppet-plugin.8 +1 -1
  133. data/man/man8/puppet-report.8 +1 -1
  134. data/man/man8/puppet-resource.8 +1 -1
  135. data/man/man8/puppet-script.8 +1 -1
  136. data/man/man8/puppet-ssl.8 +26 -3
  137. data/man/man8/puppet-status.8 +1 -1
  138. data/man/man8/puppet.8 +2 -2
  139. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +11 -0
  140. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +7 -1
  141. data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +1 -0
  142. data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +6 -0
  143. data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +13 -0
  144. data/spec/integration/application/apply_spec.rb +4 -1
  145. data/spec/integration/parser/collection_spec.rb +4 -8
  146. data/spec/integration/provider/service/windows_spec.rb +5 -5
  147. data/spec/integration/ssl/key_spec.rb +0 -4
  148. data/spec/integration/transaction_spec.rb +559 -0
  149. data/spec/integration/type/file_spec.rb +6 -6
  150. data/spec/integration/util/windows/registry_spec.rb +39 -0
  151. data/spec/integration/util/windows/security_spec.rb +10 -7
  152. data/spec/integration/util/windows/user_spec.rb +37 -17
  153. data/spec/lib/puppet/test_ca.rb +1 -1
  154. data/spec/spec_helper.rb +1 -1
  155. data/spec/unit/agent_spec.rb +2 -2
  156. data/spec/unit/application/apply_spec.rb +55 -2
  157. data/spec/unit/application/device_spec.rb +10 -7
  158. data/spec/unit/application/face_base_spec.rb +1 -1
  159. data/spec/unit/application/lookup_spec.rb +2 -1
  160. data/spec/unit/application/ssl_spec.rb +178 -109
  161. data/spec/unit/application_spec.rb +29 -11
  162. data/spec/unit/configurer/downloader_spec.rb +1 -1
  163. data/spec/unit/configurer_spec.rb +16 -5
  164. data/spec/unit/etc_spec.rb +25 -0
  165. data/spec/unit/face/node_spec.rb +1 -3
  166. data/spec/unit/face/parser_spec.rb +15 -0
  167. data/spec/unit/file_serving/fileset_spec.rb +11 -11
  168. data/spec/unit/functions/logging_spec.rb +10 -3
  169. data/spec/unit/indirector/catalog/json_spec.rb +9 -3
  170. data/spec/unit/indirector/yaml_spec.rb +1 -1
  171. data/spec/unit/network/http/connection_spec.rb +2 -2
  172. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +36 -0
  173. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +22 -4
  174. data/spec/unit/pops/loaders/loader_spec.rb +9 -17
  175. data/spec/unit/pops/loaders/loaders_spec.rb +48 -0
  176. data/spec/unit/pops/loaders/module_loaders_spec.rb +7 -7
  177. data/spec/unit/pops/parser/parse_heredoc_spec.rb +16 -0
  178. data/spec/unit/pops/serialization/to_from_hr_spec.rb +9 -0
  179. data/spec/unit/pops/types/p_timespan_type_spec.rb +22 -0
  180. data/spec/unit/pops/types/p_timestamp_type_spec.rb +19 -0
  181. data/spec/unit/pops/types/string_converter_spec.rb +25 -1
  182. data/spec/unit/pops/types/task_spec.rb +42 -116
  183. data/spec/unit/pops/validator/validator_spec.rb +24 -10
  184. data/spec/unit/provider/exec/posix_spec.rb +24 -0
  185. data/spec/unit/provider/group/aix_spec.rb +20 -6
  186. data/spec/unit/provider/group/ldap_spec.rb +22 -25
  187. data/spec/unit/provider/group/pw_spec.rb +7 -10
  188. data/spec/unit/provider/group/windows_adsi_spec.rb +42 -33
  189. data/spec/unit/provider/nameservice/directoryservice_spec.rb +97 -103
  190. data/spec/unit/provider/package/aix_spec.rb +5 -8
  191. data/spec/unit/provider/package/apt_spec.rb +3 -6
  192. data/spec/unit/provider/package/dnf_spec.rb +38 -25
  193. data/spec/unit/provider/package/dpkg_spec.rb +18 -21
  194. data/spec/unit/provider/package/freebsd_spec.rb +4 -7
  195. data/spec/unit/provider/package/gem_spec.rb +41 -41
  196. data/spec/unit/provider/package/hpux_spec.rb +7 -10
  197. data/spec/unit/provider/package/macports_spec.rb +13 -15
  198. data/spec/unit/provider/package/nim_spec.rb +3 -10
  199. data/spec/unit/provider/package/openbsd_spec.rb +14 -17
  200. data/spec/unit/provider/package/pip3_spec.rb +3 -6
  201. data/spec/unit/provider/package/pip_spec.rb +45 -49
  202. data/spec/unit/provider/package/pkgin_spec.rb +13 -18
  203. data/spec/unit/provider/package/pkgng_spec.rb +32 -27
  204. data/spec/unit/provider/package/puppet_gem_spec.rb +6 -9
  205. data/spec/unit/provider/package/tdnf_spec.rb +9 -12
  206. data/spec/unit/provider/package/windows/exe_package_spec.rb +3 -3
  207. data/spec/unit/provider/package/windows_spec.rb +4 -4
  208. data/spec/unit/provider/package/yum_spec.rb +30 -16
  209. data/spec/unit/provider/package/zypper_spec.rb +17 -19
  210. data/spec/unit/provider/service/bsd_spec.rb +7 -9
  211. data/spec/unit/provider/service/daemontools_spec.rb +12 -16
  212. data/spec/unit/provider/service/debian_spec.rb +6 -10
  213. data/spec/unit/provider/service/freebsd_spec.rb +2 -2
  214. data/spec/unit/provider/service/launchd_spec.rb +19 -0
  215. data/spec/unit/provider/service/openbsd_spec.rb +13 -17
  216. data/spec/unit/provider/service/rcng_spec.rb +2 -4
  217. data/spec/unit/provider/service/redhat_spec.rb +12 -11
  218. data/spec/unit/provider/service/runit_spec.rb +7 -14
  219. data/spec/unit/provider/service/smf_spec.rb +77 -13
  220. data/spec/unit/provider/service/src_spec.rb +11 -16
  221. data/spec/unit/provider/service/systemd_spec.rb +39 -1
  222. data/spec/unit/provider/service/windows_spec.rb +39 -7
  223. data/spec/unit/provider/user/aix_spec.rb +43 -2
  224. data/spec/unit/provider/user/hpux_spec.rb +3 -5
  225. data/spec/unit/provider/user/ldap_spec.rb +29 -32
  226. data/spec/unit/provider/user/pw_spec.rb +10 -13
  227. data/spec/unit/provider/user/useradd_spec.rb +2 -2
  228. data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
  229. data/spec/unit/puppet_pal_2pec.rb +6 -6
  230. data/spec/unit/puppet_pal_catalog_spec.rb +58 -0
  231. data/spec/unit/resource/catalog_spec.rb +2 -2
  232. data/spec/unit/resource_spec.rb +31 -0
  233. data/spec/unit/ssl/host_spec.rb +22 -1
  234. data/spec/unit/ssl/key_spec.rb +2 -4
  235. data/spec/unit/task_spec.rb +50 -5
  236. data/spec/unit/transaction/event_manager_spec.rb +12 -1
  237. data/spec/unit/transaction/persistence_spec.rb +4 -4
  238. data/spec/unit/transaction/resource_harness_spec.rb +18 -0
  239. data/spec/unit/type/group_spec.rb +11 -3
  240. data/spec/unit/type/resources_spec.rb +18 -0
  241. data/spec/unit/type/service_spec.rb +27 -1
  242. data/spec/unit/util/execution_spec.rb +77 -0
  243. data/spec/unit/util/filetype_spec.rb +13 -5
  244. data/spec/unit/util/log/destinations_spec.rb +10 -0
  245. data/spec/unit/util/logging_spec.rb +58 -41
  246. data/spec/unit/util/monkey_patches_spec.rb +18 -5
  247. data/spec/unit/util/posix_spec.rb +28 -0
  248. data/spec/unit/util/selinux_spec.rb +4 -0
  249. data/spec/unit/util/storage_spec.rb +107 -0
  250. data/spec/unit/util/suidmanager_spec.rb +1 -3
  251. data/spec/unit/util/windows/adsi_spec.rb +95 -0
  252. data/spec/unit/util/windows/service_spec.rb +377 -131
  253. metadata +24 -11
  254. data/ext/autotest/Rakefile +0 -8
  255. data/ext/autotest/config +0 -43
  256. data/ext/autotest/readme.rst +0 -16
  257. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -7
  258. data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
  259. data/spec/watchr.rb +0 -137
@@ -285,10 +285,11 @@ describe "Puppet::Util::Windows::Security", :if => Puppet::Util::Platform.window
285
285
  # access mask, and back to mode without loss of information
286
286
  # (provided the owner and group are not the same)
287
287
  next if ((u & g) != g) or ((g & o) != o)
288
-
289
- mode = (s << 9 | u << 6 | g << 3 | o << 0)
290
- winsec.set_mode(mode, path)
291
- expect(winsec.get_mode(path).to_s(8)).to eq(mode.to_s(8))
288
+ applied_mode = (s << 9 | u << 6 | g << 3 | o << 0)
289
+ # SYSTEM must always be Full Control (7)
290
+ expected_mode = (s << 9 | u << 6 | 7 << 3 | o << 0)
291
+ winsec.set_mode(applied_mode, path)
292
+ expect(winsec.get_mode(path).to_s(8)).to eq(expected_mode.to_s(8))
292
293
  end
293
294
  end
294
295
  end
@@ -634,9 +635,11 @@ describe "Puppet::Util::Windows::Security", :if => Puppet::Util::Platform.window
634
635
  # access mask, and back to mode without loss of information
635
636
  # (provided the owner and group are the same)
636
637
  next if ((ug & o) != o)
637
- mode = (s << 9 | ug << 6 | ug << 3 | o << 0)
638
- winsec.set_mode(mode, path)
639
- expect(winsec.get_mode(path).to_s(8)).to eq(mode.to_s(8))
638
+ applied_mode = (s << 9 | ug << 6 | ug << 3 | o << 0)
639
+ # SYSTEM must always be Full Control (7)
640
+ expected_mode = (s << 9 | 7 << 6 | 7 << 3 | o << 0)
641
+ winsec.set_mode(applied_mode, path)
642
+ expect(winsec.get_mode(path).to_s(8)).to eq(expected_mode.to_s(8))
640
643
  end
641
644
  end
642
645
  end
@@ -6,54 +6,74 @@ describe "Puppet::Util::Windows::User", :if => Puppet::Util::Platform.windows? d
6
6
  describe "2003 without UAC" do
7
7
  before :each do
8
8
  Puppet::Util::Windows::Process.stubs(:windows_major_version).returns(5)
9
+ Puppet::Util::Windows::Process.stubs(:supports_elevated_security?).returns(false)
9
10
  end
10
11
 
11
12
  it "should be an admin if user's token contains the Administrators SID" do
12
13
  Puppet::Util::Windows::User.expects(:check_token_membership).returns(true)
13
- Puppet::Util::Windows::Process.expects(:elevated_security?).never
14
14
 
15
15
  expect(Puppet::Util::Windows::User).to be_admin
16
16
  end
17
17
 
18
18
  it "should not be an admin if user's token doesn't contain the Administrators SID" do
19
19
  Puppet::Util::Windows::User.expects(:check_token_membership).returns(false)
20
- Puppet::Util::Windows::Process.expects(:elevated_security?).never
21
20
 
22
21
  expect(Puppet::Util::Windows::User).not_to be_admin
23
22
  end
24
23
 
25
24
  it "should raise an exception if we can't check token membership" do
26
25
  Puppet::Util::Windows::User.expects(:check_token_membership).raises(Puppet::Util::Windows::Error, "Access denied.")
27
- Puppet::Util::Windows::Process.expects(:elevated_security?).never
28
26
 
29
27
  expect { Puppet::Util::Windows::User.admin? }.to raise_error(Puppet::Util::Windows::Error, /Access denied./)
30
28
  end
31
29
  end
32
30
 
33
- describe "2008 with UAC" do
31
+ context "2008 with UAC" do
34
32
  before :each do
35
33
  Puppet::Util::Windows::Process.stubs(:windows_major_version).returns(6)
34
+ Puppet::Util::Windows::Process.stubs(:supports_elevated_security?).returns(true)
36
35
  end
37
36
 
38
- it "should be an admin if user is running with elevated privileges" do
39
- Puppet::Util::Windows::Process.stubs(:elevated_security?).returns(true)
40
- Puppet::Util::Windows::User.expects(:check_token_membership).never
37
+ describe "in local administrators group" do
38
+ before :each do
39
+ Puppet::Util::Windows::User.stubs(:check_token_membership).returns(true)
40
+ end
41
41
 
42
- expect(Puppet::Util::Windows::User).to be_admin
43
- end
42
+ it "should be an admin if user is running with elevated privileges" do
43
+ Puppet::Util::Windows::Process.stubs(:elevated_security?).returns(true)
44
44
 
45
- it "should not be an admin if user is not running with elevated privileges" do
46
- Puppet::Util::Windows::Process.stubs(:elevated_security?).returns(false)
47
- Puppet::Util::Windows::User.expects(:check_token_membership).never
45
+ expect(Puppet::Util::Windows::User).to be_admin
46
+ end
48
47
 
49
- expect(Puppet::Util::Windows::User).not_to be_admin
48
+ it "should not be an admin if user is not running with elevated privileges" do
49
+ Puppet::Util::Windows::Process.stubs(:elevated_security?).returns(false)
50
+
51
+ expect(Puppet::Util::Windows::User).not_to be_admin
52
+ end
53
+
54
+ it "should raise an exception if the process fails to open the process token" do
55
+ Puppet::Util::Windows::Process.stubs(:elevated_security?).raises(Puppet::Util::Windows::Error, "Access denied.")
56
+
57
+ expect { Puppet::Util::Windows::User.admin? }.to raise_error(Puppet::Util::Windows::Error, /Access denied./)
58
+ end
50
59
  end
51
60
 
52
- it "should raise an exception if the process fails to open the process token" do
53
- Puppet::Util::Windows::Process.stubs(:elevated_security?).raises(Puppet::Util::Windows::Error, "Access denied.")
54
- Puppet::Util::Windows::User.expects(:check_token_membership).never
61
+ describe "not in local administrators group" do
62
+ before :each do
63
+ Puppet::Util::Windows::User.stubs(:check_token_membership).returns(false)
64
+ end
65
+
66
+ it "should not be an admin if user is running with elevated privileges" do
67
+ Puppet::Util::Windows::Process.stubs(:elevated_security?).returns(true)
55
68
 
56
- expect { Puppet::Util::Windows::User.admin? }.to raise_error(Puppet::Util::Windows::Error, /Access denied./)
69
+ expect(Puppet::Util::Windows::User).not_to be_admin
70
+ end
71
+
72
+ it "should not be an admin if user is not running with elevated privileges" do
73
+ Puppet::Util::Windows::Process.stubs(:elevated_security?).returns(false)
74
+
75
+ expect(Puppet::Util::Windows::User).not_to be_admin
76
+ end
57
77
  end
58
78
  end
59
79
 
@@ -52,7 +52,7 @@ module Puppet
52
52
  def generate(name, opts)
53
53
  host_key = OpenSSL::PKey::RSA.new(1024)
54
54
  csr = create_csr(name, host_key)
55
- sign(csr, opts)
55
+ { private_key: host_key, csr: csr, cert: sign(csr, opts).content }
56
56
  end
57
57
 
58
58
  private
data/spec/spec_helper.rb CHANGED
@@ -5,7 +5,7 @@
5
5
  dir = File.expand_path(File.dirname(__FILE__))
6
6
  $LOAD_PATH.unshift File.join(dir, 'lib')
7
7
 
8
- # Don't want puppet getting the command line arguments for rake or autotest
8
+ # Don't want puppet getting the command line arguments for rake
9
9
  ARGV.clear
10
10
 
11
11
  begin
@@ -138,7 +138,7 @@ describe Puppet::Agent do
138
138
 
139
139
  it "should not fail if a client class instance cannot be created" do
140
140
  AgentTestClient.expects(:new).raises "eh"
141
- Puppet.expects(:err)
141
+ Puppet.expects(:log_exception)
142
142
  @agent.run
143
143
  end
144
144
 
@@ -146,7 +146,7 @@ describe Puppet::Agent do
146
146
  client = AgentTestClient.new
147
147
  AgentTestClient.expects(:new).returns client
148
148
  client.expects(:run).raises "eh"
149
- Puppet.expects(:err)
149
+ Puppet.expects(:log_exception)
150
150
  @agent.run
151
151
  end
152
152
 
@@ -7,6 +7,8 @@ require 'puppet/configurer'
7
7
  require 'fileutils'
8
8
 
9
9
  describe Puppet::Application::Apply do
10
+ include PuppetSpec::Files
11
+
10
12
  before :each do
11
13
  @apply = Puppet::Application[:apply]
12
14
  Puppet::Util::Log.stubs(:newdestination)
@@ -91,6 +93,13 @@ describe Puppet::Application::Apply do
91
93
  @apply.setup
92
94
  end
93
95
 
96
+ it "sets the log destination if logdest is provided via settings" do
97
+ Puppet::Log.expects(:newdestination).with("set_via_config")
98
+ Puppet[:logdest] = "set_via_config"
99
+
100
+ @apply.setup
101
+ end
102
+
94
103
  it "should set INT trap" do
95
104
  Signal.expects(:trap).with(:INT)
96
105
 
@@ -172,8 +181,6 @@ describe Puppet::Application::Apply do
172
181
  end
173
182
 
174
183
  describe "the main command" do
175
- include PuppetSpec::Files
176
-
177
184
  before :each do
178
185
  Puppet[:prerun_command] = ''
179
186
  Puppet[:postrun_command] = ''
@@ -279,6 +286,11 @@ describe Puppet::Application::Apply do
279
286
  expect { @apply.main }.to exit_with 0
280
287
  end
281
288
 
289
+ it 'should called the DeferredResolver to resolve any Deferred values' do
290
+ Puppet::Pops::Evaluator::DeferredResolver.expects(:resolve_and_replace).with(any_parameters)
291
+ expect { @apply.main }.to exit_with 0
292
+ end
293
+
282
294
  it 'should make the Puppet::Pops::Loaders available when applying the compiled catalog' do
283
295
  Puppet::Resource::Catalog.indirection.expects(:find).returns(@catalog)
284
296
  @apply.expects(:apply_catalog).with(@catalog) do
@@ -475,6 +487,47 @@ describe Puppet::Application::Apply do
475
487
  end
476
488
  expect { @apply.apply }.not_to raise_error
477
489
  end
490
+
491
+ it "should call the DeferredResolver to resolve Deferred values" do
492
+ @apply.options[:catalog] = temporary_catalog
493
+ Puppet::Resource::Catalog.stubs(:default_format).returns :rot13_piglatin
494
+ catalog = Puppet::Resource::Catalog.new("testing", Puppet::Node::Environment::NONE)
495
+ Puppet::Resource::Catalog.stubs(:convert_from).with(:rot13_piglatin,'"something"').returns(catalog)
496
+ Puppet::Pops::Evaluator::DeferredResolver.expects(:resolve_and_replace).with(any_parameters)
497
+ @apply.apply
498
+ end
499
+ end
500
+ end
501
+
502
+ describe "when really executing" do
503
+ let(:testfile) { tmpfile('secret_file_name') }
504
+ let(:resourcefile) { tmpfile('resourcefile') }
505
+ let(:classfile) { tmpfile('classfile') }
506
+
507
+ it "should not expose sensitive data in the relationship file" do
508
+ @apply.options[:code] = <<-CODE
509
+ $secret = Sensitive('cat #{testfile}')
510
+
511
+ exec { 'do it':
512
+ command => $secret,
513
+ path => '/bin/'
514
+ }
515
+ CODE
516
+
517
+ @apply.options[:write_catalog_summary] = true
518
+
519
+ Puppet.settings[:resourcefile] = resourcefile
520
+ Puppet.settings[:classfile] = classfile
521
+
522
+ #We don't actually need the resource to do anything, we are using it's properties in other parts of the workflow.
523
+ Puppet::Util::Execution.stubs(:execute)
524
+
525
+ expect { @apply.main }.to exit_with 0
526
+
527
+ result = File.read(resourcefile)
528
+
529
+ expect(result).not_to match(/secret_file_name/)
530
+ expect(result).to match(/do it/)
478
531
  end
479
532
  end
480
533
 
@@ -75,25 +75,25 @@ describe Puppet::Application::Device do
75
75
  it "should set waitforcert to 0 with --onetime and if --waitforcert wasn't given" do
76
76
  Puppet[:onetime] = true
77
77
  Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(0)
78
- @device.setup_host
78
+ @device.setup_host('device.example.com')
79
79
  end
80
80
 
81
81
  it "should use supplied waitforcert when --onetime is specified" do
82
82
  Puppet[:onetime] = true
83
83
  @device.handle_waitforcert(60)
84
84
  Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(60)
85
- @device.setup_host
85
+ @device.setup_host('device.example.com')
86
86
  end
87
87
 
88
88
  it "should use a default value for waitforcert when --onetime and --waitforcert are not specified" do
89
89
  Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(120)
90
- @device.setup_host
90
+ @device.setup_host('device.example.com')
91
91
  end
92
92
 
93
93
  it "should use the waitforcert setting when checking for a signed certificate" do
94
94
  Puppet[:waitforcert] = 10
95
95
  Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(10)
96
- @device.setup_host
96
+ @device.setup_host('device.example.com')
97
97
  end
98
98
 
99
99
  it "should set the log destination with --logdest" do
@@ -271,14 +271,14 @@ describe Puppet::Application::Device do
271
271
 
272
272
  it "should create a new ssl host" do
273
273
  Puppet::SSL::Host.expects(:new).returns(@host)
274
- @device.setup_host
274
+ @device.setup_host('device.example.com')
275
275
  end
276
276
 
277
277
  it "should wait for a certificate" do
278
278
  @device.options.stubs(:[]).with(:waitforcert).returns(123)
279
279
  @host.expects(:wait_for_cert).with(123)
280
280
 
281
- @device.setup_host
281
+ @device.setup_host('device.example.com')
282
282
  end
283
283
  end
284
284
 
@@ -292,6 +292,7 @@ describe Puppet::Application::Device do
292
292
  @device.options.stubs(:[]).with(:facts).returns(false)
293
293
  @device.options.stubs(:[]).with(:resource).returns(false)
294
294
  @device.options.stubs(:[]).with(:to_yaml).returns(false)
295
+ @device.options.stubs(:[]).with(:libdir).returns(nil)
295
296
  @device.options.stubs(:[]).with(:client)
296
297
  @device.command_line.stubs(:args).returns([])
297
298
  Puppet::Util::NetworkDevice::Config.stubs(:devices).returns({})
@@ -497,7 +498,9 @@ describe Puppet::Application::Device do
497
498
  expect { @device.main }.to exit_with 1
498
499
  end
499
500
 
500
- it "should print the device url scheme, host, and port" do
501
+ it "should retrieve plugins and print the device url scheme, host, and port" do
502
+ Puppet.stubs(:info)
503
+ Puppet.expects(:info).with "Retrieving pluginfacts"
501
504
  Puppet.expects(:info).with "starting applying configuration to device1 at ssh://testhost"
502
505
  Puppet.expects(:info).with "starting applying configuration to device2 at https://testhost:443/some/path"
503
506
  expect { @device.main }.to exit_with 1
@@ -416,7 +416,7 @@ EOT
416
416
  # it, but this helps us fail if that slips up and all. --daniel 2011-04-27
417
417
  Puppet::Face[:help, :current].expects(:help).never
418
418
 
419
- Puppet.expects(:err).with("Could not parse application options: I don't know how to render 'interpretive-dance'")
419
+ Puppet.expects(:send_log).with(:err, "Could not parse application options: I don't know how to render 'interpretive-dance'")
420
420
 
421
421
  expect { app.run }.to exit_with(1)
422
422
  end
@@ -13,7 +13,8 @@ describe Puppet::Application::Lookup do
13
13
  ensure
14
14
  $stdout = saved_stdout
15
15
  end
16
- capture.string.strip
16
+ # Drop end of line and an optional yaml end of document
17
+ capture.string.gsub(/\n(\.\.\.\n)?\Z/m, '')
17
18
  end
18
19
 
19
20
  context "when running with incorrect command line options" do