puppet 6.20.0-x64-mingw32 → 7.0.0-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (484) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/Gemfile +0 -2
  4. data/Gemfile.lock +18 -24
  5. data/README.md +1 -1
  6. data/conf/fileserver.conf +5 -10
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/osx/file_mapping.yaml +0 -5
  9. data/ext/project_data.yaml +1 -14
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/ext/windows/service/daemon.rb +6 -5
  12. data/install.rb +21 -17
  13. data/lib/puppet.rb +11 -20
  14. data/lib/puppet/application.rb +178 -108
  15. data/lib/puppet/application/agent.rb +0 -1
  16. data/lib/puppet/application/apply.rb +2 -3
  17. data/lib/puppet/application/device.rb +100 -105
  18. data/lib/puppet/application/filebucket.rb +13 -9
  19. data/lib/puppet/application/script.rb +0 -1
  20. data/lib/puppet/application/ssl.rb +1 -1
  21. data/lib/puppet/application_support.rb +0 -7
  22. data/lib/puppet/configurer.rb +30 -45
  23. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  24. data/lib/puppet/defaults.rb +97 -167
  25. data/lib/puppet/environments.rb +59 -58
  26. data/lib/puppet/face/facts.rb +51 -51
  27. data/lib/puppet/face/help.rb +1 -1
  28. data/lib/puppet/face/plugin.rb +5 -8
  29. data/lib/puppet/ffi/windows.rb +12 -0
  30. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  31. data/lib/puppet/ffi/windows/constants.rb +404 -0
  32. data/lib/puppet/ffi/windows/functions.rb +628 -0
  33. data/lib/puppet/ffi/windows/structs.rb +338 -0
  34. data/lib/puppet/file_serving/configuration.rb +0 -5
  35. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  36. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  37. data/lib/puppet/file_serving/mount.rb +1 -2
  38. data/lib/puppet/forge/repository.rb +0 -1
  39. data/lib/puppet/generate/models/type/type.rb +4 -1
  40. data/lib/puppet/http.rb +22 -13
  41. data/lib/puppet/http/client.rb +164 -114
  42. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  43. data/lib/puppet/http/errors.rb +16 -0
  44. data/lib/puppet/http/external_client.rb +5 -7
  45. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  46. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  47. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  48. data/lib/puppet/http/proxy.rb +137 -0
  49. data/lib/puppet/http/redirector.rb +4 -12
  50. data/lib/puppet/http/resolver.rb +5 -15
  51. data/lib/puppet/http/resolver/server_list.rb +6 -10
  52. data/lib/puppet/http/resolver/settings.rb +4 -7
  53. data/lib/puppet/http/resolver/srv.rb +7 -11
  54. data/lib/puppet/http/response.rb +36 -54
  55. data/lib/puppet/http/response_converter.rb +24 -0
  56. data/lib/puppet/http/response_net_http.rb +42 -0
  57. data/lib/puppet/http/retry_after_handler.rb +4 -13
  58. data/lib/puppet/http/service.rb +12 -26
  59. data/lib/puppet/http/service/ca.rb +11 -22
  60. data/lib/puppet/http/service/compiler.rb +22 -69
  61. data/lib/puppet/http/service/file_server.rb +18 -27
  62. data/lib/puppet/http/service/puppetserver.rb +26 -12
  63. data/lib/puppet/http/service/report.rb +8 -10
  64. data/lib/puppet/http/session.rb +11 -20
  65. data/lib/puppet/{network/http → http}/site.rb +1 -2
  66. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  67. data/lib/puppet/indirector/facts/facter.rb +24 -3
  68. data/lib/puppet/indirector/facts/rest.rb +3 -22
  69. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  70. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  71. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  72. data/lib/puppet/indirector/file_server.rb +1 -8
  73. data/lib/puppet/indirector/generic_http.rb +0 -11
  74. data/lib/puppet/indirector/node/rest.rb +2 -4
  75. data/lib/puppet/indirector/report/rest.rb +3 -8
  76. data/lib/puppet/indirector/request.rb +0 -101
  77. data/lib/puppet/indirector/rest.rb +12 -263
  78. data/lib/puppet/module_tool/applications.rb +0 -1
  79. data/lib/puppet/module_tool/applications/installer.rb +2 -48
  80. data/lib/puppet/module_tool/errors/shared.rb +2 -17
  81. data/lib/puppet/network/authconfig.rb +2 -96
  82. data/lib/puppet/network/authorization.rb +13 -35
  83. data/lib/puppet/network/http.rb +3 -3
  84. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  85. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  86. data/lib/puppet/network/http/connection.rb +247 -316
  87. data/lib/puppet/network/http/handler.rb +0 -1
  88. data/lib/puppet/network/http_pool.rb +16 -34
  89. data/lib/puppet/node.rb +1 -30
  90. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  91. data/lib/puppet/pal/pal_impl.rb +3 -1
  92. data/lib/puppet/parser/ast/leaf.rb +2 -3
  93. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  94. data/lib/puppet/parser/compiler.rb +0 -198
  95. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  96. data/lib/puppet/parser/resource.rb +0 -69
  97. data/lib/puppet/parser/templatewrapper.rb +1 -1
  98. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  99. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  100. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  101. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  102. data/lib/puppet/pops/issues.rb +0 -5
  103. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  104. data/lib/puppet/pops/model/ast.pp +0 -42
  105. data/lib/puppet/pops/model/ast.rb +0 -290
  106. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  107. data/lib/puppet/pops/model/factory.rb +0 -45
  108. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  109. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  110. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  111. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  112. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  113. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  114. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  115. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  116. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  117. data/lib/puppet/pops/types/type_parser.rb +0 -4
  118. data/lib/puppet/pops/types/types.rb +0 -1
  119. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  120. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  121. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  122. data/lib/puppet/provider.rb +0 -13
  123. data/lib/puppet/provider/nameservice.rb +0 -18
  124. data/lib/puppet/provider/package/apt.rb +0 -4
  125. data/lib/puppet/provider/package/dpkg.rb +0 -10
  126. data/lib/puppet/provider/package/gem.rb +23 -3
  127. data/lib/puppet/provider/package/pip.rb +0 -1
  128. data/lib/puppet/provider/package/pkg.rb +0 -4
  129. data/lib/puppet/provider/package/portage.rb +1 -1
  130. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  131. data/lib/puppet/provider/service/smf.rb +191 -73
  132. data/lib/puppet/provider/user/aix.rb +2 -2
  133. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  134. data/lib/puppet/reference/configuration.rb +7 -6
  135. data/lib/puppet/reference/indirection.rb +1 -1
  136. data/lib/puppet/resource.rb +1 -89
  137. data/lib/puppet/resource/catalog.rb +1 -14
  138. data/lib/puppet/resource/type.rb +3 -119
  139. data/lib/puppet/resource/type_collection.rb +3 -48
  140. data/lib/puppet/runtime.rb +1 -2
  141. data/lib/puppet/settings.rb +73 -66
  142. data/lib/puppet/settings/integer_setting.rb +17 -0
  143. data/lib/puppet/settings/port_setting.rb +15 -0
  144. data/lib/puppet/settings/priority_setting.rb +5 -4
  145. data/lib/puppet/ssl.rb +10 -6
  146. data/lib/puppet/ssl/base.rb +3 -5
  147. data/lib/puppet/ssl/certificate.rb +0 -6
  148. data/lib/puppet/ssl/certificate_request.rb +1 -12
  149. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  150. data/lib/puppet/ssl/oids.rb +3 -1
  151. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  152. data/lib/puppet/ssl/state_machine.rb +3 -1
  153. data/lib/puppet/ssl/verifier.rb +2 -0
  154. data/lib/puppet/test/test_helper.rb +1 -3
  155. data/lib/puppet/transaction.rb +1 -7
  156. data/lib/puppet/transaction/report.rb +2 -4
  157. data/lib/puppet/type.rb +0 -76
  158. data/lib/puppet/type/file.rb +5 -7
  159. data/lib/puppet/type/file/checksum.rb +1 -1
  160. data/lib/puppet/type/file/source.rb +1 -1
  161. data/lib/puppet/type/filebucket.rb +3 -3
  162. data/lib/puppet/type/package.rb +5 -13
  163. data/lib/puppet/util/autoload.rb +8 -1
  164. data/lib/puppet/util/execution.rb +0 -11
  165. data/lib/puppet/util/http_proxy.rb +2 -215
  166. data/lib/puppet/util/monkey_patches.rb +0 -46
  167. data/lib/puppet/util/posix.rb +5 -54
  168. data/lib/puppet/util/rdoc.rb +0 -7
  169. data/lib/puppet/util/retry_action.rb +1 -1
  170. data/lib/puppet/util/run_mode.rb +9 -1
  171. data/lib/puppet/util/windows.rb +3 -8
  172. data/lib/puppet/util/windows/daemon.rb +360 -0
  173. data/lib/puppet/util/windows/error.rb +1 -0
  174. data/lib/puppet/util/windows/eventlog.rb +4 -9
  175. data/lib/puppet/util/windows/file.rb +8 -242
  176. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  177. data/lib/puppet/util/windows/process.rb +4 -226
  178. data/lib/puppet/util/windows/service.rb +9 -460
  179. data/lib/puppet/util/windows/string.rb +12 -13
  180. data/lib/puppet/util/yaml.rb +0 -22
  181. data/lib/puppet/vendor/require_vendored.rb +0 -1
  182. data/lib/puppet/version.rb +1 -1
  183. data/lib/puppet/x509.rb +5 -1
  184. data/lib/puppet/x509/cert_provider.rb +29 -1
  185. data/locales/puppet.pot +587 -1312
  186. data/man/man5/puppet.conf.5 +39 -99
  187. data/man/man8/puppet-agent.8 +2 -2
  188. data/man/man8/puppet-apply.8 +2 -2
  189. data/man/man8/puppet-catalog.8 +1 -1
  190. data/man/man8/puppet-config.8 +1 -1
  191. data/man/man8/puppet-describe.8 +1 -1
  192. data/man/man8/puppet-device.8 +2 -2
  193. data/man/man8/puppet-doc.8 +1 -1
  194. data/man/man8/puppet-epp.8 +1 -1
  195. data/man/man8/puppet-facts.8 +51 -36
  196. data/man/man8/puppet-filebucket.8 +4 -4
  197. data/man/man8/puppet-generate.8 +1 -1
  198. data/man/man8/puppet-help.8 +1 -1
  199. data/man/man8/puppet-lookup.8 +1 -1
  200. data/man/man8/puppet-module.8 +1 -58
  201. data/man/man8/puppet-node.8 +1 -1
  202. data/man/man8/puppet-parser.8 +1 -1
  203. data/man/man8/puppet-plugin.8 +1 -1
  204. data/man/man8/puppet-report.8 +1 -1
  205. data/man/man8/puppet-resource.8 +1 -1
  206. data/man/man8/puppet-script.8 +2 -2
  207. data/man/man8/puppet-ssl.8 +1 -1
  208. data/man/man8/puppet.8 +2 -2
  209. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  210. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  211. data/spec/integration/application/agent_spec.rb +27 -138
  212. data/spec/integration/application/apply_spec.rb +1 -20
  213. data/spec/integration/application/filebucket_spec.rb +16 -16
  214. data/spec/integration/application/help_spec.rb +2 -0
  215. data/spec/integration/application/plugin_spec.rb +23 -1
  216. data/spec/integration/defaults_spec.rb +14 -3
  217. data/spec/integration/network/http_pool_spec.rb +3 -21
  218. data/spec/integration/parser/catalog_spec.rb +0 -38
  219. data/spec/integration/parser/node_spec.rb +0 -9
  220. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  221. data/spec/integration/resource/type_collection_spec.rb +6 -2
  222. data/spec/integration/transaction_spec.rb +9 -4
  223. data/spec/integration/type/file_spec.rb +5 -4
  224. data/spec/integration/util/windows/adsi_spec.rb +1 -3
  225. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  226. data/spec/integration/util/windows/registry_spec.rb +10 -0
  227. data/spec/integration/util/windows/security_spec.rb +1 -1
  228. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  229. data/spec/lib/puppet_spec/settings.rb +1 -0
  230. data/spec/spec_helper.rb +6 -1
  231. data/spec/unit/agent_spec.rb +6 -10
  232. data/spec/unit/application/agent_spec.rb +1 -0
  233. data/spec/unit/application/facts_spec.rb +35 -0
  234. data/spec/unit/application/filebucket_spec.rb +43 -39
  235. data/spec/unit/application/ssl_spec.rb +2 -2
  236. data/spec/unit/application_spec.rb +9 -51
  237. data/spec/unit/certificate_factory_spec.rb +1 -1
  238. data/spec/unit/configurer/downloader_spec.rb +6 -2
  239. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  240. data/spec/unit/configurer_spec.rb +12 -9
  241. data/spec/unit/confine/feature_spec.rb +1 -1
  242. data/spec/unit/confine_spec.rb +2 -8
  243. data/spec/unit/context/trusted_information_spec.rb +2 -6
  244. data/spec/unit/defaults_spec.rb +72 -42
  245. data/spec/unit/environments_spec.rb +19 -99
  246. data/spec/unit/face/facts_spec.rb +4 -0
  247. data/spec/unit/face/node_spec.rb +11 -0
  248. data/spec/unit/face/plugin_spec.rb +73 -33
  249. data/spec/unit/file_bucket/file_spec.rb +1 -1
  250. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -18
  251. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  252. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  253. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  254. data/spec/unit/forge/module_release_spec.rb +7 -2
  255. data/spec/unit/functions/camelcase_spec.rb +1 -1
  256. data/spec/unit/functions/capitalize_spec.rb +1 -1
  257. data/spec/unit/functions/downcase_spec.rb +1 -1
  258. data/spec/unit/functions/upcase_spec.rb +1 -1
  259. data/spec/unit/http/client_spec.rb +7 -8
  260. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  261. data/spec/unit/http/external_client_spec.rb +4 -4
  262. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  263. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  264. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  265. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  266. data/spec/unit/http/resolver_spec.rb +13 -13
  267. data/spec/unit/http/service/compiler_spec.rb +0 -62
  268. data/spec/unit/http/service/file_server_spec.rb +3 -3
  269. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  270. data/spec/unit/http/service_spec.rb +0 -1
  271. data/spec/unit/http/session_spec.rb +16 -14
  272. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  273. data/spec/unit/indirector/face_spec.rb +1 -0
  274. data/spec/unit/indirector/facts/facter_spec.rb +98 -0
  275. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  276. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  277. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  278. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  279. data/spec/unit/indirector/file_server_spec.rb +1 -15
  280. data/spec/unit/indirector/indirection_spec.rb +12 -8
  281. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  282. data/spec/unit/indirector/request_spec.rb +0 -264
  283. data/spec/unit/indirector/rest_spec.rb +98 -752
  284. data/spec/unit/indirector_spec.rb +2 -2
  285. data/spec/unit/module_tool/applications/installer_spec.rb +0 -66
  286. data/spec/unit/network/authconfig_spec.rb +2 -129
  287. data/spec/unit/network/authorization_spec.rb +2 -55
  288. data/spec/unit/network/formats_spec.rb +4 -4
  289. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  290. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  291. data/spec/unit/network/http/api_spec.rb +10 -0
  292. data/spec/unit/network/http/connection_spec.rb +19 -41
  293. data/spec/unit/network/http/handler_spec.rb +0 -1
  294. data/spec/unit/network/http_pool_spec.rb +0 -4
  295. data/spec/unit/node/environment_spec.rb +33 -21
  296. data/spec/unit/node_spec.rb +2 -54
  297. data/spec/unit/parser/compiler_spec.rb +19 -3
  298. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  299. data/spec/unit/parser/resource_spec.rb +8 -14
  300. data/spec/unit/parser/templatewrapper_spec.rb +3 -4
  301. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  302. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  303. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  304. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  305. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  306. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  307. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  308. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  309. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  310. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  311. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  312. data/spec/unit/pops/visitor_spec.rb +1 -1
  313. data/spec/unit/property_spec.rb +0 -1
  314. data/spec/unit/provider/nameservice_spec.rb +64 -122
  315. data/spec/unit/provider/package/apt_spec.rb +8 -4
  316. data/spec/unit/provider/package/base_spec.rb +5 -6
  317. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  318. data/spec/unit/provider/package/gem_spec.rb +32 -0
  319. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  320. data/spec/unit/provider/package/pip_spec.rb +11 -6
  321. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  322. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  323. data/spec/unit/provider/service/smf_spec.rb +401 -165
  324. data/spec/unit/provider/service/windows_spec.rb +0 -1
  325. data/spec/unit/provider/user/aix_spec.rb +0 -5
  326. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  327. data/spec/unit/provider/user/pw_spec.rb +0 -2
  328. data/spec/unit/provider/user/useradd_spec.rb +0 -1
  329. data/spec/unit/provider_spec.rb +8 -18
  330. data/spec/unit/resource/type_collection_spec.rb +2 -22
  331. data/spec/unit/resource/type_spec.rb +1 -1
  332. data/spec/unit/resource_spec.rb +10 -67
  333. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  334. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  335. data/spec/unit/settings/port_setting_spec.rb +31 -0
  336. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  337. data/spec/unit/settings_spec.rb +23 -13
  338. data/spec/unit/ssl/base_spec.rb +37 -3
  339. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  340. data/spec/unit/ssl/certificate_spec.rb +2 -11
  341. data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
  342. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  343. data/spec/unit/ssl/verifier_spec.rb +0 -21
  344. data/spec/unit/transaction/additional_resource_generator_spec.rb +7 -3
  345. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  346. data/spec/unit/transaction/report_spec.rb +0 -2
  347. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  348. data/spec/unit/transaction_spec.rb +48 -91
  349. data/spec/unit/type/file/checksum_spec.rb +6 -6
  350. data/spec/unit/type/file/content_spec.rb +2 -1
  351. data/spec/unit/type/file/ensure_spec.rb +1 -1
  352. data/spec/unit/type/file/mode_spec.rb +1 -1
  353. data/spec/unit/type/file/selinux_spec.rb +2 -0
  354. data/spec/unit/type/file/source_spec.rb +0 -1
  355. data/spec/unit/type/file_spec.rb +18 -6
  356. data/spec/unit/type/group_spec.rb +6 -13
  357. data/spec/unit/type/package_spec.rb +1 -1
  358. data/spec/unit/type/resources_spec.rb +7 -7
  359. data/spec/unit/type/service_spec.rb +1 -1
  360. data/spec/unit/type/tidy_spec.rb +1 -0
  361. data/spec/unit/type_spec.rb +22 -2
  362. data/spec/unit/util/at_fork_spec.rb +2 -2
  363. data/spec/unit/util/autoload_spec.rb +1 -5
  364. data/spec/unit/util/backups_spec.rb +2 -3
  365. data/spec/unit/util/execution_spec.rb +11 -44
  366. data/spec/unit/util/inifile_spec.rb +14 -6
  367. data/spec/unit/util/log_spec.rb +7 -8
  368. data/spec/unit/util/logging_spec.rb +3 -3
  369. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  370. data/spec/unit/util/posix_spec.rb +15 -363
  371. data/spec/unit/util/run_mode_spec.rb +21 -121
  372. data/spec/unit/util/selinux_spec.rb +52 -76
  373. data/spec/unit/util/storage_spec.rb +1 -3
  374. data/spec/unit/util/suidmanager_spec.rb +41 -44
  375. data/spec/unit/util/windows/string_spec.rb +1 -3
  376. data/spec/unit/util/yaml_spec.rb +0 -54
  377. data/spec/unit/util_spec.rb +6 -31
  378. metadata +40 -233
  379. data/conf/auth.conf +0 -150
  380. data/lib/puppet/application/cert.rb +0 -76
  381. data/lib/puppet/application/key.rb +0 -4
  382. data/lib/puppet/application/man.rb +0 -4
  383. data/lib/puppet/application/status.rb +0 -4
  384. data/lib/puppet/face/key.rb +0 -16
  385. data/lib/puppet/face/man.rb +0 -145
  386. data/lib/puppet/face/module/build.rb +0 -14
  387. data/lib/puppet/face/module/generate.rb +0 -14
  388. data/lib/puppet/face/module/search.rb +0 -103
  389. data/lib/puppet/face/status.rb +0 -51
  390. data/lib/puppet/ffi/posix.rb +0 -10
  391. data/lib/puppet/ffi/posix/constants.rb +0 -14
  392. data/lib/puppet/ffi/posix/functions.rb +0 -24
  393. data/lib/puppet/indirector/certificate/file.rb +0 -9
  394. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  395. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  396. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  397. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  398. data/lib/puppet/indirector/file_content/http.rb +0 -22
  399. data/lib/puppet/indirector/key/file.rb +0 -46
  400. data/lib/puppet/indirector/key/memory.rb +0 -7
  401. data/lib/puppet/indirector/ssl_file.rb +0 -162
  402. data/lib/puppet/indirector/status.rb +0 -3
  403. data/lib/puppet/indirector/status/local.rb +0 -12
  404. data/lib/puppet/indirector/status/rest.rb +0 -27
  405. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  406. data/lib/puppet/network/auth_config_parser.rb +0 -90
  407. data/lib/puppet/network/authstore.rb +0 -283
  408. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  409. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  410. data/lib/puppet/network/http/base_pool.rb +0 -36
  411. data/lib/puppet/network/http/compression.rb +0 -127
  412. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  413. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  414. data/lib/puppet/network/rest_controller.rb +0 -2
  415. data/lib/puppet/network/rights.rb +0 -210
  416. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  417. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  418. data/lib/puppet/parser/environment_compiler.rb +0 -202
  419. data/lib/puppet/pops/types/enumeration.rb +0 -16
  420. data/lib/puppet/resource/capability_finder.rb +0 -154
  421. data/lib/puppet/rest/errors.rb +0 -15
  422. data/lib/puppet/rest/response.rb +0 -35
  423. data/lib/puppet/rest/route.rb +0 -85
  424. data/lib/puppet/rest/routes.rb +0 -135
  425. data/lib/puppet/settings/alias_setting.rb +0 -37
  426. data/lib/puppet/ssl/host.rb +0 -505
  427. data/lib/puppet/ssl/key.rb +0 -61
  428. data/lib/puppet/ssl/validator.rb +0 -61
  429. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  430. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  431. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  432. data/lib/puppet/status.rb +0 -40
  433. data/lib/puppet/util/connection.rb +0 -88
  434. data/lib/puppet/util/fact_dif.rb +0 -62
  435. data/lib/puppet/util/ssl.rb +0 -83
  436. data/lib/puppet/util/windows/api_types.rb +0 -309
  437. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  438. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  439. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  440. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  441. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  442. data/lib/puppet/vendor/pathspec/README.md +0 -53
  443. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  444. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  445. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  446. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  447. data/man/man8/puppet-key.8 +0 -126
  448. data/man/man8/puppet-man.8 +0 -76
  449. data/man/man8/puppet-status.8 +0 -108
  450. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
  451. data/spec/integration/network/authconfig_spec.rb +0 -256
  452. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  453. data/spec/unit/application/man_spec.rb +0 -52
  454. data/spec/unit/capability_spec.rb +0 -414
  455. data/spec/unit/face/key_spec.rb +0 -9
  456. data/spec/unit/face/module/search_spec.rb +0 -231
  457. data/spec/unit/face/status_spec.rb +0 -9
  458. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  459. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  460. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  461. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  462. data/spec/unit/indirector/key/file_spec.rb +0 -78
  463. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  464. data/spec/unit/indirector/status/local_spec.rb +0 -10
  465. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  466. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  467. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  468. data/spec/unit/network/authstore_spec.rb +0 -422
  469. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  470. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  471. data/spec/unit/network/http/compression_spec.rb +0 -240
  472. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  473. data/spec/unit/network/http_spec.rb +0 -9
  474. data/spec/unit/network/rights_spec.rb +0 -439
  475. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  476. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  477. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  478. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  479. data/spec/unit/rest/route_spec.rb +0 -132
  480. data/spec/unit/ssl/host_spec.rb +0 -645
  481. data/spec/unit/ssl/key_spec.rb +0 -173
  482. data/spec/unit/ssl/validator_spec.rb +0 -278
  483. data/spec/unit/status_spec.rb +0 -45
  484. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,12 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Puppet::Util::RunMode do
4
- # Discriminator for tests that attempts to unset HOME since that, for reasons currently unknown,
5
- # doesn't work in Ruby >= 2.4.0
6
- def self.gte_ruby_2_4
7
- @gte_ruby_2_4 ||= SemanticPuppet::Version.parse(RUBY_VERSION) >= SemanticPuppet::Version.parse('2.4.0')
8
- end
9
-
10
4
  before do
11
5
  @run_mode = Puppet::Util::RunMode.new('fake')
12
6
  end
@@ -34,14 +28,6 @@ describe Puppet::Util::RunMode do
34
28
  as_non_root { expect(@run_mode.conf_dir).to eq(File.expand_path('~/.puppetlabs/etc/puppet')) }
35
29
  end
36
30
  end
37
-
38
- it "fails when asking for the conf_dir as non-root and there is no $HOME", :unless => gte_ruby_2_4 || Puppet::Util::Platform.windows? do
39
- as_non_root do
40
- without_home do
41
- expect { @run_mode.conf_dir }.to raise_error ArgumentError, /couldn't find HOME/
42
- end
43
- end
44
- end
45
31
  end
46
32
 
47
33
  describe "#code_dir" do
@@ -62,14 +48,6 @@ describe Puppet::Util::RunMode do
62
48
  as_non_root { expect(@run_mode.code_dir).to eq(File.expand_path('~/.puppetlabs/etc/code')) }
63
49
  end
64
50
  end
65
-
66
- it "fails when asking for the code_dir as non-root and there is no $HOME", :unless => gte_ruby_2_4 || Puppet::Util::Platform.windows? do
67
- as_non_root do
68
- without_home do
69
- expect { @run_mode.code_dir }.to raise_error ArgumentError, /couldn't find HOME/
70
- end
71
- end
72
- end
73
51
  end
74
52
 
75
53
  describe "#var_dir" do
@@ -80,13 +58,15 @@ describe Puppet::Util::RunMode do
80
58
  it "has vardir ~/.puppetlabs/opt/puppet/cache when run as non-root" do
81
59
  as_non_root { expect(@run_mode.var_dir).to eq(File.expand_path('~/.puppetlabs/opt/puppet/cache')) }
82
60
  end
61
+ end
62
+
63
+ describe "#public_dir" do
64
+ it "has publicdir /opt/puppetlabs/puppet/public when run as root" do
65
+ as_root { expect(@run_mode.public_dir).to eq(File.expand_path('/opt/puppetlabs/puppet/public')) }
66
+ end
83
67
 
84
- it "fails when asking for the var_dir as non-root and there is no $HOME", :unless => gte_ruby_2_4 || Puppet::Util::Platform.windows? do
85
- as_non_root do
86
- without_home do
87
- expect { @run_mode.var_dir }.to raise_error ArgumentError, /couldn't find HOME/
88
- end
89
- end
68
+ it "has publicdir ~/.puppetlabs/opt/puppet/public when run as non-root" do
69
+ as_non_root { expect(@run_mode.public_dir).to eq(File.expand_path('~/.puppetlabs/opt/puppet/public')) }
90
70
  end
91
71
  end
92
72
 
@@ -101,14 +81,6 @@ describe Puppet::Util::RunMode do
101
81
  it "has default logdir ~/.puppetlabs/var/log" do
102
82
  as_non_root { expect(@run_mode.log_dir).to eq(File.expand_path('~/.puppetlabs/var/log')) }
103
83
  end
104
-
105
- it "fails when asking for the log_dir and there is no $HOME", :unless => gte_ruby_2_4 || Puppet::Util::Platform.windows? do
106
- as_non_root do
107
- without_home do
108
- expect { @run_mode.log_dir }.to raise_error ArgumentError, /couldn't find HOME/
109
- end
110
- end
111
- end
112
84
  end
113
85
  end
114
86
 
@@ -123,103 +95,59 @@ describe Puppet::Util::RunMode do
123
95
  it "has default rundir ~/.puppetlabs/var/run" do
124
96
  as_non_root { expect(@run_mode.run_dir).to eq(File.expand_path('~/.puppetlabs/var/run')) }
125
97
  end
126
-
127
- it "fails when asking for the run_dir and there is no $HOME", :unless => gte_ruby_2_4 || Puppet::Util::Platform.windows? do
128
- as_non_root do
129
- without_home do
130
- expect { @run_mode.run_dir }.to raise_error ArgumentError, /couldn't find HOME/
131
- end
132
- end
133
- end
134
98
  end
135
99
  end
136
100
  end
137
101
 
138
102
  describe Puppet::Util::WindowsRunMode, :if => Puppet::Util::Platform.windows? do
139
103
  before do
140
- if not Dir.const_defined? :COMMON_APPDATA
141
- Dir.const_set :COMMON_APPDATA, "/CommonFakeBase"
142
- @remove_const = true
143
- end
144
104
  @run_mode = Puppet::Util::WindowsRunMode.new('fake')
145
105
  end
146
106
 
147
- after do
148
- if @remove_const
149
- Dir.send :remove_const, :COMMON_APPDATA
150
- end
151
- end
152
-
153
107
  describe "#conf_dir" do
154
108
  it "has confdir ending in Puppetlabs/puppet/etc when run as root" do
155
- as_root { expect(@run_mode.conf_dir).to eq(File.expand_path(File.join(Dir::COMMON_APPDATA, "PuppetLabs", "puppet", "etc"))) }
109
+ as_root { expect(@run_mode.conf_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "puppet", "etc"))) }
156
110
  end
157
111
 
158
112
  it "has confdir in ~/.puppetlabs/etc/puppet when run as non-root" do
159
113
  as_non_root { expect(@run_mode.conf_dir).to eq(File.expand_path("~/.puppetlabs/etc/puppet")) }
160
114
  end
161
-
162
- it "fails when asking for the conf_dir as non-root and there is no %HOME%, %HOMEDRIVE%, and %USERPROFILE%", :unless => gte_ruby_2_4 do
163
- as_non_root do
164
- without_env('HOME') do
165
- without_env('HOMEDRIVE') do
166
- without_env('USERPROFILE') do
167
- expect { @run_mode.conf_dir }.to raise_error ArgumentError, /couldn't find HOME/
168
- end
169
- end
170
- end
171
- end
172
- end
173
115
  end
174
116
 
175
117
  describe "#code_dir" do
176
118
  it "has codedir ending in PuppetLabs/code when run as root" do
177
- as_root { expect(@run_mode.code_dir).to eq(File.expand_path(File.join(Dir::COMMON_APPDATA, "PuppetLabs", "code"))) }
119
+ as_root { expect(@run_mode.code_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "code"))) }
178
120
  end
179
121
 
180
122
  it "has codedir in ~/.puppetlabs/etc/code when run as non-root" do
181
123
  as_non_root { expect(@run_mode.code_dir).to eq(File.expand_path("~/.puppetlabs/etc/code")) }
182
124
  end
183
-
184
- it "fails when asking for the code_dir as non-root and there is no %HOME%, %HOMEDRIVE%, and %USERPROFILE%", :unless => gte_ruby_2_4 do
185
- as_non_root do
186
- without_env('HOME') do
187
- without_env('HOMEDRIVE') do
188
- without_env('USERPROFILE') do
189
- expect { @run_mode.code_dir }.to raise_error ArgumentError, /couldn't find HOME/
190
- end
191
- end
192
- end
193
- end
194
- end
195
125
  end
196
126
 
197
127
  describe "#var_dir" do
198
128
  it "has vardir ending in PuppetLabs/puppet/cache when run as root" do
199
- as_root { expect(@run_mode.var_dir).to eq(File.expand_path(File.join(Dir::COMMON_APPDATA, "PuppetLabs", "puppet", "cache"))) }
129
+ as_root { expect(@run_mode.var_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "puppet", "cache"))) }
200
130
  end
201
131
 
202
132
  it "has vardir in ~/.puppetlabs/opt/puppet/cache when run as non-root" do
203
133
  as_non_root { expect(@run_mode.var_dir).to eq(File.expand_path("~/.puppetlabs/opt/puppet/cache")) }
204
134
  end
135
+ end
136
+
137
+ describe "#public_dir" do
138
+ it "has publicdir ending in PuppetLabs/puppet/public when run as root" do
139
+ as_root { expect(@run_mode.public_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "puppet", "public"))) }
140
+ end
205
141
 
206
- it "fails when asking for the conf_dir as non-root and there is no %HOME%, %HOMEDRIVE%, and %USERPROFILE%", :unless => gte_ruby_2_4 do
207
- as_non_root do
208
- without_env('HOME') do
209
- without_env('HOMEDRIVE') do
210
- without_env('USERPROFILE') do
211
- expect { @run_mode.var_dir }.to raise_error ArgumentError, /couldn't find HOME/
212
- end
213
- end
214
- end
215
- end
142
+ it "has publicdir in ~/.puppetlabs/opt/puppet/public when run as non-root" do
143
+ as_non_root { expect(@run_mode.public_dir).to eq(File.expand_path("~/.puppetlabs/opt/puppet/public")) }
216
144
  end
217
145
  end
218
146
 
219
147
  describe "#log_dir" do
220
148
  describe "when run as root" do
221
149
  it "has logdir ending in PuppetLabs/puppet/var/log" do
222
- as_root { expect(@run_mode.log_dir).to eq(File.expand_path(File.join(Dir::COMMON_APPDATA, "PuppetLabs", "puppet", "var", "log"))) }
150
+ as_root { expect(@run_mode.log_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "puppet", "var", "log"))) }
223
151
  end
224
152
  end
225
153
 
@@ -227,25 +155,13 @@ describe Puppet::Util::RunMode do
227
155
  it "has default logdir ~/.puppetlabs/var/log" do
228
156
  as_non_root { expect(@run_mode.log_dir).to eq(File.expand_path('~/.puppetlabs/var/log')) }
229
157
  end
230
-
231
- it "fails when asking for the log_dir and there is no $HOME", :unless => gte_ruby_2_4 do
232
- as_non_root do
233
- without_env('HOME') do
234
- without_env('HOMEDRIVE') do
235
- without_env('USERPROFILE') do
236
- expect { @run_mode.log_dir }.to raise_error ArgumentError, /couldn't find HOME/
237
- end
238
- end
239
- end
240
- end
241
- end
242
158
  end
243
159
  end
244
160
 
245
161
  describe "#run_dir" do
246
162
  describe "when run as root" do
247
163
  it "has rundir ending in PuppetLabs/puppet/var/run" do
248
- as_root { expect(@run_mode.run_dir).to eq(File.expand_path(File.join(Dir::COMMON_APPDATA, "PuppetLabs", "puppet", "var", "run"))) }
164
+ as_root { expect(@run_mode.run_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "puppet", "var", "run"))) }
249
165
  end
250
166
  end
251
167
 
@@ -253,18 +169,6 @@ describe Puppet::Util::RunMode do
253
169
  it "has default rundir ~/.puppetlabs/var/run" do
254
170
  as_non_root { expect(@run_mode.run_dir).to eq(File.expand_path('~/.puppetlabs/var/run')) }
255
171
  end
256
-
257
- it "fails when asking for the run_dir and there is no $HOME", :unless => gte_ruby_2_4 do
258
- as_non_root do
259
- without_env('HOME') do
260
- without_env('HOMEDRIVE') do
261
- without_env('USERPROFILE') do
262
- expect { @run_mode.run_dir }.to raise_error ArgumentError, /couldn't find HOME/
263
- end
264
- end
265
- end
266
- end
267
- end
268
172
  end
269
173
  end
270
174
 
@@ -310,8 +214,4 @@ describe Puppet::Util::RunMode do
310
214
  ensure
311
215
  Puppet::Util.set_env(name, saved)
312
216
  end
313
-
314
- def without_home(&block)
315
- without_env('HOME', &block)
316
- end
317
217
  end
@@ -111,19 +111,15 @@ describe Puppet::Util::SELinux do
111
111
  end
112
112
 
113
113
  it "should return a context" do
114
- without_partial_double_verification do
115
- expect(self).to receive(:selinux_support?).and_return(true)
116
- expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:role_r:type_t:s0"])
117
- expect(get_selinux_current_context("/foo")).to eq("user_u:role_r:type_t:s0")
118
- end
114
+ expect(self).to receive(:selinux_support?).and_return(true)
115
+ expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:role_r:type_t:s0"])
116
+ expect(get_selinux_current_context("/foo")).to eq("user_u:role_r:type_t:s0")
119
117
  end
120
118
 
121
119
  it "should return nil if lgetfilecon fails" do
122
- without_partial_double_verification do
123
- expect(self).to receive(:selinux_support?).and_return(true)
124
- expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return(-1)
125
- expect(get_selinux_current_context("/foo")).to be_nil
126
- end
120
+ expect(self).to receive(:selinux_support?).and_return(true)
121
+ expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return(-1)
122
+ expect(get_selinux_current_context("/foo")).to be_nil
127
123
  end
128
124
  end
129
125
 
@@ -134,57 +130,47 @@ describe Puppet::Util::SELinux do
134
130
  end
135
131
 
136
132
  it "should return a context if a default context exists" do
137
- without_partial_double_verification do
138
- expect(self).to receive(:selinux_support?).and_return(true)
139
- fstat = double('File::Stat', :mode => 0)
140
- expect(Puppet::FileSystem).to receive(:lstat).with('/foo').and_return(fstat)
141
- expect(self).to receive(:find_fs).with("/foo").and_return("ext3")
142
- expect(Selinux).to receive(:matchpathcon).with("/foo", 0).and_return([0, "user_u:role_r:type_t:s0"])
143
-
144
- expect(get_selinux_default_context("/foo")).to eq("user_u:role_r:type_t:s0")
145
- end
133
+ expect(self).to receive(:selinux_support?).and_return(true)
134
+ fstat = double('File::Stat', :mode => 0)
135
+ expect(Puppet::FileSystem).to receive(:lstat).with('/foo').and_return(fstat)
136
+ expect(self).to receive(:find_fs).with("/foo").and_return("ext3")
137
+ expect(Selinux).to receive(:matchpathcon).with("/foo", 0).and_return([0, "user_u:role_r:type_t:s0"])
138
+
139
+ expect(get_selinux_default_context("/foo")).to eq("user_u:role_r:type_t:s0")
146
140
  end
147
141
 
148
142
  it "handles permission denied errors by issuing a warning" do
149
- without_partial_double_verification do
150
- allow(self).to receive(:selinux_support?).and_return(true)
151
- allow(self).to receive(:selinux_label_support?).and_return(true)
152
- allow(Selinux).to receive(:matchpathcon).with("/root/chuj", 0).and_return(-1)
153
- allow(self).to receive(:file_lstat).with("/root/chuj").and_raise(Errno::EACCES, "/root/chuj")
143
+ allow(self).to receive(:selinux_support?).and_return(true)
144
+ allow(self).to receive(:selinux_label_support?).and_return(true)
145
+ allow(Selinux).to receive(:matchpathcon).with("/root/chuj", 0).and_return(-1)
146
+ allow(self).to receive(:file_lstat).with("/root/chuj").and_raise(Errno::EACCES, "/root/chuj")
154
147
 
155
- expect(get_selinux_default_context("/root/chuj")).to be_nil
156
- end
148
+ expect(get_selinux_default_context("/root/chuj")).to be_nil
157
149
  end
158
150
 
159
151
  it "handles no such file or directory errors by issuing a warning" do
160
- without_partial_double_verification do
161
- allow(self).to receive(:selinux_support?).and_return(true)
162
- allow(self).to receive(:selinux_label_support?).and_return(true)
163
- allow(Selinux).to receive(:matchpathcon).with("/root/chuj", 0).and_return(-1)
164
- allow(self).to receive(:file_lstat).with("/root/chuj").and_raise(Errno::ENOENT, "/root/chuj")
152
+ allow(self).to receive(:selinux_support?).and_return(true)
153
+ allow(self).to receive(:selinux_label_support?).and_return(true)
154
+ allow(Selinux).to receive(:matchpathcon).with("/root/chuj", 0).and_return(-1)
155
+ allow(self).to receive(:file_lstat).with("/root/chuj").and_raise(Errno::ENOENT, "/root/chuj")
165
156
 
166
- expect(get_selinux_default_context("/root/chuj")).to be_nil
167
- end
157
+ expect(get_selinux_default_context("/root/chuj")).to be_nil
168
158
  end
169
159
 
170
160
  it "should return nil if matchpathcon returns failure" do
171
- without_partial_double_verification do
172
- expect(self).to receive(:selinux_support?).and_return(true)
173
- fstat = double('File::Stat', :mode => 0)
174
- expect(Puppet::FileSystem).to receive(:lstat).with('/foo').and_return(fstat)
175
- expect(self).to receive(:find_fs).with("/foo").and_return("ext3")
176
- expect(Selinux).to receive(:matchpathcon).with("/foo", 0).and_return(-1)
177
-
178
- expect(get_selinux_default_context("/foo")).to be_nil
179
- end
161
+ expect(self).to receive(:selinux_support?).and_return(true)
162
+ fstat = double('File::Stat', :mode => 0)
163
+ expect(Puppet::FileSystem).to receive(:lstat).with('/foo').and_return(fstat)
164
+ expect(self).to receive(:find_fs).with("/foo").and_return("ext3")
165
+ expect(Selinux).to receive(:matchpathcon).with("/foo", 0).and_return(-1)
166
+
167
+ expect(get_selinux_default_context("/foo")).to be_nil
180
168
  end
181
169
 
182
170
  it "should return nil if selinux_label_support returns false" do
183
- without_partial_double_verification do
184
- expect(self).to receive(:selinux_support?).and_return(true)
185
- expect(self).to receive(:find_fs).with("/foo").and_return("nfs")
186
- expect(get_selinux_default_context("/foo")).to be_nil
187
- end
171
+ expect(self).to receive(:selinux_support?).and_return(true)
172
+ expect(self).to receive(:find_fs).with("/foo").and_return("nfs")
173
+ expect(get_selinux_default_context("/foo")).to be_nil
188
174
  end
189
175
  end
190
176
 
@@ -275,47 +261,37 @@ describe Puppet::Util::SELinux do
275
261
  end
276
262
 
277
263
  it "should use lsetfilecon to set a context" do
278
- without_partial_double_verification do
279
- expect(self).to receive(:selinux_support?).and_return(true)
280
- expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
281
- expect(set_selinux_context("/foo", "user_u:role_r:type_t:s0")).to be_truthy
282
- end
264
+ expect(self).to receive(:selinux_support?).and_return(true)
265
+ expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
266
+ expect(set_selinux_context("/foo", "user_u:role_r:type_t:s0")).to be_truthy
283
267
  end
284
268
 
285
269
  it "should use lsetfilecon to set user_u user context" do
286
- without_partial_double_verification do
287
- expect(self).to receive(:selinux_support?).and_return(true)
288
- expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "foo:role_r:type_t:s0"])
289
- expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
290
- expect(set_selinux_context("/foo", "user_u", :seluser)).to be_truthy
291
- end
270
+ expect(self).to receive(:selinux_support?).and_return(true)
271
+ expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "foo:role_r:type_t:s0"])
272
+ expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
273
+ expect(set_selinux_context("/foo", "user_u", :seluser)).to be_truthy
292
274
  end
293
275
 
294
276
  it "should use lsetfilecon to set role_r role context" do
295
- without_partial_double_verification do
296
- expect(self).to receive(:selinux_support?).and_return(true)
297
- expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:foo:type_t:s0"])
298
- expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
299
- expect(set_selinux_context("/foo", "role_r", :selrole)).to be_truthy
300
- end
277
+ expect(self).to receive(:selinux_support?).and_return(true)
278
+ expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:foo:type_t:s0"])
279
+ expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
280
+ expect(set_selinux_context("/foo", "role_r", :selrole)).to be_truthy
301
281
  end
302
282
 
303
283
  it "should use lsetfilecon to set type_t type context" do
304
- without_partial_double_verification do
305
- expect(self).to receive(:selinux_support?).and_return(true)
306
- expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:role_r:foo:s0"])
307
- expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
308
- expect(set_selinux_context("/foo", "type_t", :seltype)).to be_truthy
309
- end
284
+ expect(self).to receive(:selinux_support?).and_return(true)
285
+ expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:role_r:foo:s0"])
286
+ expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
287
+ expect(set_selinux_context("/foo", "type_t", :seltype)).to be_truthy
310
288
  end
311
289
 
312
290
  it "should use lsetfilecon to set s0:c3,c5 range context" do
313
- without_partial_double_verification do
314
- expect(self).to receive(:selinux_support?).and_return(true)
315
- expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:role_r:type_t:s0"])
316
- expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0:c3,c5").and_return(0)
317
- expect(set_selinux_context("/foo", "s0:c3,c5", :selrange)).to be_truthy
318
- end
291
+ expect(self).to receive(:selinux_support?).and_return(true)
292
+ expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:role_r:type_t:s0"])
293
+ expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0:c3,c5").and_return(0)
294
+ expect(set_selinux_context("/foo", "s0:c3,c5", :selrange)).to be_truthy
319
295
  end
320
296
  end
321
297
 
@@ -143,11 +143,9 @@ describe Puppet::Util::Storage do
143
143
  end
144
144
 
145
145
  it "should raise an error if the state file does not contain valid YAML and cannot be renamed" do
146
- allow(File).to receive(:rename).and_call_original
147
-
148
146
  write_state_file('{ invalid')
149
147
 
150
- expect(File).to receive(:rename).with(@state_file, "#{@state_file}.bad").and_raise(SystemCallError)
148
+ expect(File).to receive(:rename).and_raise(SystemCallError)
151
149
 
152
150
  expect { Puppet::Util::Storage.load }.to raise_error(Puppet::Error, /Could not rename/)
153
151
  end
@@ -14,14 +14,12 @@ describe Puppet::Util::SUIDManager do
14
14
  pwent = double('pwent', :name => 'fred', :uid => 42, :gid => 42)
15
15
  allow(Etc).to receive(:getpwuid).with(42).and_return(pwent)
16
16
 
17
- unless Puppet::Util::Platform.windows?
18
- [:euid, :egid, :uid, :gid, :groups].each do |id|
19
- allow(Process).to receive("#{id}=") {|value| xids[id] = value}
20
- end
17
+ [:euid, :egid, :uid, :gid, :groups].each do |id|
18
+ allow(Process).to receive("#{id}=") {|value| xids[id] = value}
21
19
  end
22
20
  end
23
21
 
24
- describe "#initgroups", unless: Puppet::Util::Platform.windows? do
22
+ describe "#initgroups" do
25
23
  it "should use the primary group of the user as the 'basegid'" do
26
24
  expect(Process).to receive(:initgroups).with('fred', 42)
27
25
  described_class.initgroups(42)
@@ -29,7 +27,7 @@ describe Puppet::Util::SUIDManager do
29
27
  end
30
28
 
31
29
  describe "#uid" do
32
- it "should allow setting euid/egid", unless: Puppet::Util::Platform.windows? do
30
+ it "should allow setting euid/egid" do
33
31
  Puppet::Util::SUIDManager.egid = user[:gid]
34
32
  Puppet::Util::SUIDManager.euid = user[:uid]
35
33
 
@@ -39,7 +37,8 @@ describe Puppet::Util::SUIDManager do
39
37
  end
40
38
 
41
39
  describe "#asuser" do
42
- it "should not get or set euid/egid when not root", unless: Puppet::Util::Platform.windows? do
40
+ it "should not get or set euid/egid when not root" do
41
+ allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
43
42
  allow(Process).to receive(:uid).and_return(1)
44
43
 
45
44
  allow(Process).to receive(:egid).and_return(51)
@@ -50,12 +49,13 @@ describe Puppet::Util::SUIDManager do
50
49
  expect(xids).to be_empty
51
50
  end
52
51
 
53
- context "when root and not Windows" do
52
+ context "when root and not windows" do
54
53
  before :each do
55
54
  allow(Process).to receive(:uid).and_return(0)
55
+ allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
56
56
  end
57
57
 
58
- it "should set euid/egid", unless: Puppet::Util::Platform.windows? do
58
+ it "should set euid/egid" do
59
59
  allow(Process).to receive(:egid).and_return(51, 51, user[:gid])
60
60
  allow(Process).to receive(:euid).and_return(50, 50, user[:uid])
61
61
 
@@ -79,23 +79,29 @@ describe Puppet::Util::SUIDManager do
79
79
  end
80
80
 
81
81
  it "should just yield if user and group are nil" do
82
- expect { |b| Puppet::Util::SUIDManager.asuser(nil, nil, &b) }.to yield_control
82
+ yielded = false
83
+ Puppet::Util::SUIDManager.asuser(nil, nil) { yielded = true }
84
+ expect(yielded).to be_truthy
83
85
  expect(xids).to eq({})
84
86
  end
85
87
 
86
- it "should just change group if only group is given", unless: Puppet::Util::Platform.windows? do
87
- expect { |b| Puppet::Util::SUIDManager.asuser(nil, 42, &b) }.to yield_control
88
+ it "should just change group if only group is given" do
89
+ yielded = false
90
+ Puppet::Util::SUIDManager.asuser(nil, 42) { yielded = true }
91
+ expect(yielded).to be_truthy
88
92
  expect(xids).to eq({ :egid => 42 })
89
93
  end
90
94
 
91
- it "should change gid to the primary group of uid by default", unless: Puppet::Util::Platform.windows? do
95
+ it "should change gid to the primary group of uid by default" do
92
96
  allow(Process).to receive(:initgroups)
93
97
 
94
- expect { |b| Puppet::Util::SUIDManager.asuser(42, nil, &b) }.to yield_control
98
+ yielded = false
99
+ Puppet::Util::SUIDManager.asuser(42) { yielded = true }
100
+ expect(yielded).to be_truthy
95
101
  expect(xids).to eq({ :euid => 42, :egid => 42 })
96
102
  end
97
103
 
98
- it "should change both uid and gid if given", unless: Puppet::Util::Platform.windows? do
104
+ it "should change both uid and gid if given" do
99
105
  # I don't like the sequence, but it is the only way to assert on the
100
106
  # internal behaviour in a reliable fashion, given we need multiple
101
107
  # sequenced calls to the same methods. --daniel 2012-02-05
@@ -104,23 +110,21 @@ describe Puppet::Util::SUIDManager do
104
110
  expect(Puppet::Util::SUIDManager).to receive(:change_group).with(Puppet::Util::SUIDManager.egid, false).ordered()
105
111
  expect(Puppet::Util::SUIDManager).to receive(:change_user).with(Puppet::Util::SUIDManager.euid, false).ordered()
106
112
 
107
- expect { |b| Puppet::Util::SUIDManager.asuser(42, 43, &b) }.to yield_control
113
+ yielded = false
114
+ Puppet::Util::SUIDManager.asuser(42, 43) { yielded = true }
115
+ expect(yielded).to be_truthy
108
116
  end
109
117
  end
110
118
 
111
- it "should just yield on Windows", if: Puppet::Util::Platform.windows? do
112
- expect { |b| Puppet::Util::SUIDManager.asuser(1, 2, &b) }.to yield_control
119
+ it "should not get or set euid/egid on Windows", if: Puppet::Util::Platform.windows? do
120
+ Puppet::Util::SUIDManager.asuser(user[:uid], user[:gid]) {}
121
+
122
+ expect(xids).to be_empty
113
123
  end
114
124
  end
115
125
 
116
126
  describe "#change_group" do
117
- it "raises on Windows", if: Puppet::Util::Platform.windows? do
118
- expect {
119
- Puppet::Util::SUIDManager.change_group(42, true)
120
- }.to raise_error(NotImplementedError, /change_privilege\(\) function is unimplemented/)
121
- end
122
-
123
- describe "when changing permanently", unless: Puppet::Util::Platform.windows? do
127
+ describe "when changing permanently" do
124
128
  it "should change_privilege" do
125
129
  expect(Process::GID).to receive(:change_privilege) do |gid|
126
130
  Process.gid = gid
@@ -146,7 +150,7 @@ describe Puppet::Util::SUIDManager do
146
150
  end
147
151
  end
148
152
 
149
- describe "when changing temporarily", unless: Puppet::Util::Platform.windows? do
153
+ describe "when changing temporarily" do
150
154
  it "should change only egid" do
151
155
  Puppet::Util::SUIDManager.change_group(42, false)
152
156
 
@@ -157,13 +161,7 @@ describe Puppet::Util::SUIDManager do
157
161
  end
158
162
 
159
163
  describe "#change_user" do
160
- it "raises on Windows", if: Puppet::Util::Platform.windows? do
161
- expect {
162
- Puppet::Util::SUIDManager.change_user(42, true)
163
- }.to raise_error(NotImplementedError, /initgroups\(\) function is unimplemented/)
164
- end
165
-
166
- describe "when changing permanently", unless: Puppet::Util::Platform.windows? do
164
+ describe "when changing permanently" do
167
165
  it "should change_privilege" do
168
166
  expect(Process::UID).to receive(:change_privilege) do |uid|
169
167
  Process.uid = uid
@@ -193,7 +191,7 @@ describe Puppet::Util::SUIDManager do
193
191
  end
194
192
  end
195
193
 
196
- describe "when changing temporarily", unless: Puppet::Util::Platform.windows? do
194
+ describe "when changing temporarily" do
197
195
  it "should change only euid and groups" do
198
196
  allow(Puppet::Util::SUIDManager).to receive(:initgroups).and_return([])
199
197
  Puppet::Util::SUIDManager.change_user(42, false)
@@ -223,7 +221,12 @@ describe Puppet::Util::SUIDManager do
223
221
  end
224
222
 
225
223
  describe "#root?" do
226
- describe "on POSIX systems", unless: Puppet::Util::Platform.windows? do
224
+ describe "on POSIX systems" do
225
+ before :each do
226
+ allow(Puppet.features).to receive(:posix?).and_return(true)
227
+ allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
228
+ end
229
+
227
230
  it "should be root if uid is 0" do
228
231
  allow(Process).to receive(:uid).and_return(0)
229
232
 
@@ -237,7 +240,7 @@ describe Puppet::Util::SUIDManager do
237
240
  end
238
241
  end
239
242
 
240
- describe "on Windows", :if => Puppet::Util::Platform.windows? do
243
+ describe "on Microsoft Windows", :if => Puppet::Util::Platform.windows? do
241
244
  it "should be root if user is privileged" do
242
245
  allow(Puppet::Util::Windows::User).to receive(:admin?).and_return(true)
243
246
 
@@ -258,19 +261,13 @@ describe 'Puppet::Util::SUIDManager#groups=' do
258
261
  Puppet::Util::SUIDManager
259
262
  end
260
263
 
261
- it "raises on Windows", if: Puppet::Util::Platform.windows? do
262
- expect {
263
- subject.groups = []
264
- }.to raise_error(NotImplementedError, /groups=\(\) function is unimplemented/)
265
- end
266
-
267
- it "(#3419) should rescue Errno::EINVAL on OS X", unless: Puppet::Util::Platform.windows? do
264
+ it "(#3419) should rescue Errno::EINVAL on OS X" do
268
265
  expect(Process).to receive(:groups=).and_raise(Errno::EINVAL, 'blew up')
269
266
  expect(subject).to receive(:osx_maj_ver).and_return('10.7').twice
270
267
  subject.groups = ['list', 'of', 'groups']
271
268
  end
272
269
 
273
- it "(#3419) should fail if an Errno::EINVAL is raised NOT on OS X", unless: Puppet::Util::Platform.windows? do
270
+ it "(#3419) should fail if an Errno::EINVAL is raised NOT on OS X" do
274
271
  expect(Process).to receive(:groups=).and_raise(Errno::EINVAL, 'blew up')
275
272
  expect(subject).to receive(:osx_maj_ver).and_return(false)
276
273
  expect { subject.groups = ['list', 'of', 'groups'] }.to raise_error(Errno::EINVAL)