puppet 6.15.0-x86-mingw32 → 6.19.1-x86-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 (418) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -7
  3. data/Gemfile +4 -2
  4. data/Gemfile.lock +29 -27
  5. data/README.md +3 -4
  6. data/Rakefile +4 -12
  7. data/lib/puppet.rb +32 -8
  8. data/lib/puppet/agent.rb +18 -4
  9. data/lib/puppet/agent/locker.rb +0 -7
  10. data/lib/puppet/application/agent.rb +23 -8
  11. data/lib/puppet/application/apply.rb +18 -20
  12. data/lib/puppet/application/device.rb +1 -1
  13. data/lib/puppet/application/doc.rb +1 -1
  14. data/lib/puppet/application/lookup.rb +16 -4
  15. data/lib/puppet/application/plugin.rb +1 -0
  16. data/lib/puppet/application/ssl.rb +1 -1
  17. data/lib/puppet/configurer.rb +61 -21
  18. data/lib/puppet/configurer/downloader.rb +31 -10
  19. data/lib/puppet/confine.rb +2 -2
  20. data/lib/puppet/confine/any.rb +1 -1
  21. data/lib/puppet/context/trusted_information.rb +14 -8
  22. data/lib/puppet/daemon.rb +13 -27
  23. data/lib/puppet/defaults.rb +119 -39
  24. data/lib/puppet/environments.rb +51 -10
  25. data/lib/puppet/face/catalog.rb +1 -1
  26. data/lib/puppet/face/config.rb +46 -16
  27. data/lib/puppet/face/facts.rb +1 -1
  28. data/lib/puppet/face/help.rb +29 -3
  29. data/lib/puppet/face/module/search.rb +5 -0
  30. data/lib/puppet/face/node.rb +3 -3
  31. data/lib/puppet/face/node/clean.rb +2 -2
  32. data/lib/puppet/face/plugin.rb +1 -1
  33. data/lib/puppet/face/status.rb +1 -1
  34. data/lib/puppet/feature/base.rb +1 -1
  35. data/lib/puppet/file_bucket/dipper.rb +1 -1
  36. data/lib/puppet/file_serving/http_metadata.rb +14 -2
  37. data/lib/puppet/file_serving/metadata.rb +4 -1
  38. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  39. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  40. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  41. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  42. data/lib/puppet/file_system/file_impl.rb +4 -4
  43. data/lib/puppet/file_system/uniquefile.rb +12 -16
  44. data/lib/puppet/forge.rb +1 -1
  45. data/lib/puppet/forge/cache.rb +1 -1
  46. data/lib/puppet/forge/repository.rb +4 -7
  47. data/lib/puppet/functions/filter.rb +1 -0
  48. data/lib/puppet/functions/lstrip.rb +4 -4
  49. data/lib/puppet/functions/new.rb +8 -3
  50. data/lib/puppet/functions/reverse_each.rb +1 -1
  51. data/lib/puppet/functions/rstrip.rb +4 -4
  52. data/lib/puppet/functions/step.rb +1 -1
  53. data/lib/puppet/functions/strip.rb +4 -4
  54. data/lib/puppet/gettext/config.rb +5 -5
  55. data/lib/puppet/gettext/module_translations.rb +4 -4
  56. data/lib/puppet/http.rb +1 -0
  57. data/lib/puppet/http/client.rb +28 -12
  58. data/lib/puppet/http/external_client.rb +0 -6
  59. data/lib/puppet/http/redirector.rb +9 -7
  60. data/lib/puppet/http/resolver.rb +5 -8
  61. data/lib/puppet/http/resolver/server_list.rb +18 -36
  62. data/lib/puppet/http/resolver/settings.rb +4 -4
  63. data/lib/puppet/http/resolver/srv.rb +5 -5
  64. data/lib/puppet/http/response.rb +19 -0
  65. data/lib/puppet/http/service.rb +3 -1
  66. data/lib/puppet/http/service/compiler.rb +1 -1
  67. data/lib/puppet/http/service/file_server.rb +1 -1
  68. data/lib/puppet/http/service/puppetserver.rb +39 -0
  69. data/lib/puppet/http/session.rb +5 -4
  70. data/lib/puppet/indirector.rb +1 -1
  71. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  72. data/lib/puppet/indirector/exec.rb +1 -1
  73. data/lib/puppet/indirector/facts/facter.rb +3 -3
  74. data/lib/puppet/indirector/facts/yaml.rb +1 -1
  75. data/lib/puppet/indirector/file_content/http.rb +5 -0
  76. data/lib/puppet/indirector/file_content/rest.rb +1 -1
  77. data/lib/puppet/indirector/file_metadata/http.rb +28 -8
  78. data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
  79. data/lib/puppet/indirector/hiera.rb +4 -0
  80. data/lib/puppet/indirector/indirection.rb +1 -1
  81. data/lib/puppet/indirector/json.rb +1 -1
  82. data/lib/puppet/indirector/msgpack.rb +1 -1
  83. data/lib/puppet/indirector/report/processor.rb +2 -2
  84. data/lib/puppet/indirector/request.rb +5 -5
  85. data/lib/puppet/indirector/rest.rb +7 -1
  86. data/lib/puppet/indirector/yaml.rb +1 -1
  87. data/lib/puppet/module.rb +1 -2
  88. data/lib/puppet/network/format_support.rb +2 -2
  89. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  90. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  91. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  92. data/lib/puppet/network/http/compression.rb +7 -0
  93. data/lib/puppet/network/http/connection.rb +2 -0
  94. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  95. data/lib/puppet/network/http/nocache_pool.rb +1 -0
  96. data/lib/puppet/network/http/route.rb +2 -2
  97. data/lib/puppet/network/http_pool.rb +2 -2
  98. data/lib/puppet/node/environment.rb +12 -5
  99. data/lib/puppet/node/facts.rb +17 -0
  100. data/lib/puppet/pal/catalog_compiler.rb +5 -0
  101. data/lib/puppet/pal/pal_impl.rb +31 -4
  102. data/lib/puppet/parameter.rb +1 -1
  103. data/lib/puppet/parser/ast/leaf.rb +5 -5
  104. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  105. data/lib/puppet/parser/compiler.rb +29 -26
  106. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  107. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  108. data/lib/puppet/parser/environment_compiler.rb +4 -1
  109. data/lib/puppet/parser/functions.rb +21 -17
  110. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  111. data/lib/puppet/parser/functions/filter.rb +1 -0
  112. data/lib/puppet/parser/resource.rb +3 -2
  113. data/lib/puppet/parser/resource/param.rb +6 -0
  114. data/lib/puppet/parser/type_loader.rb +2 -2
  115. data/lib/puppet/pops/adaptable.rb +7 -13
  116. data/lib/puppet/pops/adapters.rb +8 -4
  117. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  118. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  119. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  120. data/lib/puppet/pops/issues.rb +5 -0
  121. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  122. data/lib/puppet/pops/loaders.rb +18 -11
  123. data/lib/puppet/pops/lookup/context.rb +1 -1
  124. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  125. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  126. data/lib/puppet/pops/types/iterable.rb +34 -8
  127. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  128. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  129. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  130. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  131. data/lib/puppet/provider/file/windows.rb +1 -1
  132. data/lib/puppet/provider/package/aix.rb +17 -2
  133. data/lib/puppet/provider/package/apt.rb +38 -1
  134. data/lib/puppet/provider/package/aptitude.rb +1 -1
  135. data/lib/puppet/provider/package/dnfmodule.rb +24 -4
  136. data/lib/puppet/provider/package/dpkg.rb +1 -1
  137. data/lib/puppet/provider/package/gem.rb +4 -2
  138. data/lib/puppet/provider/package/pip.rb +60 -37
  139. data/lib/puppet/provider/package/pip2.rb +17 -0
  140. data/lib/puppet/provider/package/portage.rb +2 -2
  141. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  142. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  143. data/lib/puppet/provider/package/yum.rb +9 -1
  144. data/lib/puppet/provider/package/zypper.rb +62 -1
  145. data/lib/puppet/provider/service/systemd.rb +21 -4
  146. data/lib/puppet/provider/service/windows.rb +23 -7
  147. data/lib/puppet/provider/user/aix.rb +1 -1
  148. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  149. data/lib/puppet/provider/user/useradd.rb +16 -5
  150. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  151. data/lib/puppet/reports/http.rb +7 -3
  152. data/lib/puppet/resource.rb +2 -1
  153. data/lib/puppet/resource/type.rb +10 -1
  154. data/lib/puppet/rest/route.rb +2 -2
  155. data/lib/puppet/runtime.rb +25 -2
  156. data/lib/puppet/settings.rb +43 -6
  157. data/lib/puppet/ssl/ssl_context.rb +2 -2
  158. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  159. data/lib/puppet/ssl/state_machine.rb +33 -8
  160. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  161. data/lib/puppet/ssl/verifier_adapter.rb +9 -1
  162. data/lib/puppet/test/test_helper.rb +19 -14
  163. data/lib/puppet/transaction.rb +2 -2
  164. data/lib/puppet/transaction/persistence.rb +1 -1
  165. data/lib/puppet/transaction/report.rb +12 -8
  166. data/lib/puppet/trusted_external.rb +29 -1
  167. data/lib/puppet/type.rb +15 -7
  168. data/lib/puppet/type/file.rb +40 -15
  169. data/lib/puppet/type/file/checksum.rb +4 -4
  170. data/lib/puppet/type/file/source.rb +33 -13
  171. data/lib/puppet/type/filebucket.rb +1 -1
  172. data/lib/puppet/type/notify.rb +2 -2
  173. data/lib/puppet/type/package.rb +16 -1
  174. data/lib/puppet/type/service.rb +59 -8
  175. data/lib/puppet/type/user.rb +19 -10
  176. data/lib/puppet/util.rb +41 -3
  177. data/lib/puppet/util/autoload.rb +10 -25
  178. data/lib/puppet/util/character_encoding.rb +9 -5
  179. data/lib/puppet/util/checksums.rb +19 -4
  180. data/lib/puppet/util/connection.rb +8 -8
  181. data/lib/puppet/util/execution.rb +2 -2
  182. data/lib/puppet/util/fileparsing.rb +2 -2
  183. data/lib/puppet/util/log/destinations.rb +1 -10
  184. data/lib/puppet/util/package/version/range.rb +4 -1
  185. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  186. data/lib/puppet/util/provider_features.rb +1 -1
  187. data/lib/puppet/util/reference.rb +1 -1
  188. data/lib/puppet/util/run_mode.rb +5 -1
  189. data/lib/puppet/util/windows.rb +1 -0
  190. data/lib/puppet/util/windows/api_types.rb +60 -33
  191. data/lib/puppet/util/windows/eventlog.rb +1 -6
  192. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  193. data/lib/puppet/util/windows/principal.rb +8 -6
  194. data/lib/puppet/util/windows/registry.rb +11 -11
  195. data/lib/puppet/util/windows/security.rb +4 -4
  196. data/lib/puppet/util/windows/service.rb +43 -26
  197. data/lib/puppet/util/windows/user.rb +242 -8
  198. data/lib/puppet/version.rb +1 -1
  199. data/locales/puppet.pot +541 -427
  200. data/man/man5/puppet.conf.5 +84 -19
  201. data/man/man8/puppet-agent.8 +7 -4
  202. data/man/man8/puppet-apply.8 +1 -1
  203. data/man/man8/puppet-catalog.8 +1 -1
  204. data/man/man8/puppet-config.8 +6 -6
  205. data/man/man8/puppet-describe.8 +1 -1
  206. data/man/man8/puppet-device.8 +1 -1
  207. data/man/man8/puppet-doc.8 +1 -1
  208. data/man/man8/puppet-epp.8 +1 -1
  209. data/man/man8/puppet-facts.8 +1 -1
  210. data/man/man8/puppet-filebucket.8 +1 -1
  211. data/man/man8/puppet-generate.8 +1 -1
  212. data/man/man8/puppet-help.8 +6 -3
  213. data/man/man8/puppet-key.8 +1 -1
  214. data/man/man8/puppet-lookup.8 +2 -2
  215. data/man/man8/puppet-man.8 +1 -1
  216. data/man/man8/puppet-module.8 +4 -1
  217. data/man/man8/puppet-node.8 +4 -4
  218. data/man/man8/puppet-parser.8 +1 -1
  219. data/man/man8/puppet-plugin.8 +1 -1
  220. data/man/man8/puppet-report.8 +1 -1
  221. data/man/man8/puppet-resource.8 +1 -1
  222. data/man/man8/puppet-script.8 +1 -1
  223. data/man/man8/puppet-ssl.8 +1 -1
  224. data/man/man8/puppet-status.8 +2 -2
  225. data/man/man8/puppet.8 +2 -2
  226. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  227. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  228. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  229. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  230. data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-enabled.txt → dnf-module-list.txt} +6 -0
  231. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  232. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  233. data/spec/integration/application/agent_spec.rb +202 -52
  234. data/spec/integration/application/apply_spec.rb +149 -149
  235. data/spec/integration/application/config_spec.rb +74 -0
  236. data/spec/integration/application/doc_spec.rb +16 -6
  237. data/spec/integration/application/filebucket_spec.rb +70 -21
  238. data/spec/integration/application/help_spec.rb +42 -0
  239. data/spec/integration/application/lookup_spec.rb +13 -0
  240. data/spec/integration/application/module_spec.rb +68 -0
  241. data/spec/integration/application/plugin_spec.rb +75 -2
  242. data/spec/integration/configurer_spec.rb +14 -0
  243. data/spec/integration/data_binding_spec.rb +82 -0
  244. data/spec/integration/defaults_spec.rb +27 -3
  245. data/spec/integration/directory_environments_spec.rb +17 -17
  246. data/spec/integration/http/client_spec.rb +6 -1
  247. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  248. data/spec/integration/network/http_pool_spec.rb +73 -0
  249. data/spec/integration/node/environment_spec.rb +1 -1
  250. data/spec/integration/parser/compiler_spec.rb +11 -0
  251. data/spec/integration/type/file_spec.rb +1 -1
  252. data/spec/integration/util/execution_spec.rb +22 -0
  253. data/spec/integration/util/windows/adsi_spec.rb +7 -2
  254. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  255. data/spec/integration/util/windows/process_spec.rb +26 -32
  256. data/spec/integration/util/windows/registry_spec.rb +7 -7
  257. data/spec/integration/util/windows/user_spec.rb +47 -5
  258. data/spec/integration/util_spec.rb +7 -33
  259. data/spec/lib/puppet_spec/https.rb +6 -0
  260. data/spec/lib/puppet_spec/matchers.rb +0 -80
  261. data/spec/lib/puppet_spec/puppetserver.rb +8 -0
  262. data/spec/shared_contexts/types_setup.rb +2 -0
  263. data/spec/unit/agent_spec.rb +47 -1
  264. data/spec/unit/application/agent_spec.rb +7 -8
  265. data/spec/unit/application/doc_spec.rb +2 -2
  266. data/spec/unit/application/face_base_spec.rb +6 -4
  267. data/spec/unit/application/facts_spec.rb +41 -10
  268. data/spec/unit/application/man_spec.rb +52 -0
  269. data/spec/unit/application/resource_spec.rb +3 -1
  270. data/spec/unit/application/ssl_spec.rb +15 -2
  271. data/spec/unit/application_spec.rb +9 -4
  272. data/spec/unit/configurer/downloader_spec.rb +10 -0
  273. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  274. data/spec/unit/configurer_spec.rb +86 -37
  275. data/spec/unit/confine_spec.rb +2 -1
  276. data/spec/unit/context/trusted_information_spec.rb +25 -2
  277. data/spec/unit/daemon_spec.rb +5 -64
  278. data/spec/unit/environments_spec.rb +99 -32
  279. data/spec/unit/face/config_spec.rb +59 -1
  280. data/spec/unit/face/module/search_spec.rb +17 -0
  281. data/spec/unit/face/node_spec.rb +2 -2
  282. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  283. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  284. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  285. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  286. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  287. data/spec/unit/file_system/uniquefile_spec.rb +29 -0
  288. data/spec/unit/file_system_spec.rb +1 -2
  289. data/spec/unit/http/client_spec.rb +74 -19
  290. data/spec/unit/http/external_client_spec.rb +9 -9
  291. data/spec/unit/http/resolver_spec.rb +24 -5
  292. data/spec/unit/http/response_spec.rb +6 -0
  293. data/spec/unit/http/service/ca_spec.rb +2 -3
  294. data/spec/unit/http/service/compiler_spec.rb +2 -3
  295. data/spec/unit/http/service/file_server_spec.rb +2 -3
  296. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  297. data/spec/unit/http/service/report_spec.rb +2 -3
  298. data/spec/unit/http/service_spec.rb +0 -1
  299. data/spec/unit/http/session_spec.rb +8 -21
  300. data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
  301. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  302. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  303. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  304. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  305. data/spec/unit/indirector/file_metadata/rest_spec.rb +15 -14
  306. data/spec/unit/indirector/json_spec.rb +8 -8
  307. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  308. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  309. data/spec/unit/indirector/request_spec.rb +5 -5
  310. data/spec/unit/indirector/rest_spec.rb +14 -1
  311. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  312. data/spec/unit/indirector/yaml_spec.rb +7 -7
  313. data/spec/unit/interface_spec.rb +3 -3
  314. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  315. data/spec/unit/network/format_support_spec.rb +3 -2
  316. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  317. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  318. data/spec/unit/network/http/connection_spec.rb +552 -190
  319. data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
  320. data/spec/unit/network/http_pool_spec.rb +63 -57
  321. data/spec/unit/network/http_spec.rb +1 -1
  322. data/spec/unit/node/environment_spec.rb +18 -1
  323. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  324. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  325. data/spec/unit/parser/scope_spec.rb +1 -1
  326. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  327. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  328. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  329. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  330. data/spec/unit/provider/exec_spec.rb +4 -3
  331. data/spec/unit/provider/package/aix_spec.rb +29 -0
  332. data/spec/unit/provider/package/apt_spec.rb +77 -0
  333. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  334. data/spec/unit/provider/package/dnfmodule_spec.rb +25 -5
  335. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  336. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  337. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  338. data/spec/unit/provider/package/pip_spec.rb +42 -16
  339. data/spec/unit/provider/package/portage_spec.rb +5 -0
  340. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  341. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  342. data/spec/unit/provider/package/yum_spec.rb +47 -8
  343. data/spec/unit/provider/package/zypper_spec.rb +98 -0
  344. data/spec/unit/provider/service/base_spec.rb +2 -4
  345. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  346. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  347. data/spec/unit/provider/service/debian_spec.rb +3 -5
  348. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  349. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  350. data/spec/unit/provider/service/init_spec.rb +46 -5
  351. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  352. data/spec/unit/provider/service/openbsd_spec.rb +9 -0
  353. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  354. data/spec/unit/provider/service/openwrt_spec.rb +2 -1
  355. data/spec/unit/provider/service/redhat_spec.rb +10 -1
  356. data/spec/unit/provider/service/runit_spec.rb +2 -1
  357. data/spec/unit/provider/service/smf_spec.rb +1 -1
  358. data/spec/unit/provider/service/src_spec.rb +3 -5
  359. data/spec/unit/provider/service/systemd_spec.rb +87 -19
  360. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  361. data/spec/unit/provider/service/windows_spec.rb +50 -14
  362. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  363. data/spec/unit/provider/user/useradd_spec.rb +30 -16
  364. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  365. data/spec/unit/puppet_pal_2pec.rb +40 -0
  366. data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
  367. data/spec/unit/puppet_spec.rb +33 -0
  368. data/spec/unit/reports/http_spec.rb +1 -1
  369. data/spec/unit/reports/store_spec.rb +17 -13
  370. data/spec/unit/resource_spec.rb +3 -3
  371. data/spec/unit/rest/route_spec.rb +4 -4
  372. data/spec/unit/settings_spec.rb +182 -22
  373. data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
  374. data/spec/unit/ssl/state_machine_spec.rb +52 -8
  375. data/spec/unit/test/test_helper_spec.rb +17 -0
  376. data/spec/unit/transaction/persistence_spec.rb +15 -0
  377. data/spec/unit/transaction/report_spec.rb +3 -1
  378. data/spec/unit/type/file/source_spec.rb +4 -4
  379. data/spec/unit/type/file_spec.rb +122 -96
  380. data/spec/unit/type/filebucket_spec.rb +1 -1
  381. data/spec/unit/type/service_spec.rb +218 -8
  382. data/spec/unit/type/user_spec.rb +32 -3
  383. data/spec/unit/type_spec.rb +50 -0
  384. data/spec/unit/util/autoload_spec.rb +2 -1
  385. data/spec/unit/util/character_encoding_spec.rb +4 -4
  386. data/spec/unit/util/checksums_spec.rb +16 -0
  387. data/spec/unit/util/command_line_spec.rb +11 -6
  388. data/spec/unit/util/log/destinations_spec.rb +1 -29
  389. data/spec/unit/util/package/version/range_spec.rb +22 -1
  390. data/spec/unit/util/run_mode_spec.rb +6 -6
  391. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  392. data/spec/unit/util/windows/service_spec.rb +4 -4
  393. data/spec/unit/util_spec.rb +3 -3
  394. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  395. data/tasks/manpages.rake +5 -35
  396. metadata +43 -49
  397. data/spec/integration/faces/config_spec.rb +0 -91
  398. data/spec/integration/faces/documentation_spec.rb +0 -57
  399. data/spec/integration/file_bucket/file_spec.rb +0 -50
  400. data/spec/integration/file_serving/content_spec.rb +0 -7
  401. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  402. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  403. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  404. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  405. data/spec/integration/module_tool/forge_spec.rb +0 -51
  406. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  407. data/spec/integration/provider/service/init_spec.rb +0 -48
  408. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  409. data/spec/integration/provider/service/windows_spec.rb +0 -50
  410. data/spec/integration/reference/providers_spec.rb +0 -21
  411. data/spec/integration/reports_spec.rb +0 -13
  412. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  413. data/spec/integration/ssl/host_spec.rb +0 -72
  414. data/spec/integration/ssl/key_spec.rb +0 -99
  415. data/spec/integration/test/test_helper_spec.rb +0 -31
  416. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  417. data/spec/unit/face/man_spec.rb +0 -25
  418. data/spec/unit/man_spec.rb +0 -31
@@ -1,20 +1,19 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'Puppet::Type::Service::Provider::Launchd', unless: Puppet::Util::Platform.jruby? do
3
+ describe 'Puppet::Type::Service::Provider::Launchd',
4
+ unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
4
5
  let(:provider_class) { Puppet::Type.type(:service).provider(:launchd) }
5
-
6
6
  let (:plistlib) { Puppet::Util::Plist }
7
7
  let (:joblabel) { "com.foo.food" }
8
8
  let (:provider) { subject.class }
9
9
  let (:resource) { Puppet::Type.type(:service).new(:name => joblabel, :provider => :launchd) }
10
10
  let (:launchd_overrides_6_9) { '/var/db/launchd.db/com.apple.launchd/overrides.plist' }
11
11
  let (:launchd_overrides_10_) { '/var/db/com.apple.xpc.launchd/disabled.plist' }
12
+
12
13
  subject { resource.provider }
13
14
 
14
- if Puppet::Util::Platform.windows?
15
- # Get a pid for $CHILD_STATUS to latch on to
16
- command = "cmd.exe /c \"exit 0\""
17
- Puppet::Util::Execution.execute(command, {:failonfail => false})
15
+ before :all do
16
+ `exit 0`
18
17
  end
19
18
 
20
19
  describe "the type interface" do
@@ -12,6 +12,15 @@ describe 'Puppet::Type::Service::Provider::Openbsd',
12
12
  allow(FileTest).to receive(:executable?).with('/usr/sbin/rcctl').and_return(true)
13
13
  end
14
14
 
15
+ # `execute` and `texecute` start a new process, consequently setting $CHILD_STATUS to a Process::Status instance,
16
+ # but because they are mocked, an external process is never executed and $CHILD_STATUS remain nil.
17
+ # In order to execute some parts of the code under test and to mock $CHILD_STATUS, we need this variable to be a
18
+ # Process::Status instance. We can achieve this by starting a process that does nothing (exit 0). By doing this,
19
+ # $CHILD_STATUS will be initialised with a instance of Process::Status and we will be able to mock it.
20
+ before(:all) do
21
+ `exit 0`
22
+ end
23
+
15
24
  context "#instances" do
16
25
  it "should have an instances method" do
17
26
  expect(provider_class).to respond_to :instances
@@ -1,12 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'Puppet::Type::Service::Provider::Openrc', unless: Puppet::Util::Platform.jruby? do
3
+ describe 'Puppet::Type::Service::Provider::Openrc',
4
+ unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
4
5
  let(:provider_class) { Puppet::Type.type(:service).provider(:openrc) }
5
6
 
6
- if Puppet::Util::Platform.windows?
7
- # Get a pid for $CHILD_STATUS to latch on to
8
- cmd = "cmd.exe /c \"exit 0\""
9
- Puppet::Util::Execution.execute(cmd, {:failonfail => false})
7
+ before :all do
8
+ `exit 0`
10
9
  end
11
10
 
12
11
  before :each do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'Puppet::Type::Service::Provider::Openwrt',
4
- :if => Puppet.features.posix? && !Puppet::Util::Platform.jruby? do
4
+ unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
5
5
  let(:provider_class) { Puppet::Type.type(:service).provider(:openwrt) }
6
6
 
7
7
  let(:resource) do
@@ -28,6 +28,7 @@ describe 'Puppet::Type::Service::Provider::Openwrt',
28
28
  allow(FileTest).to receive(:executable?).with('/etc/rc.common').and_return(true)
29
29
 
30
30
  # All OpenWrt tests operate on the init script directly. It must exist.
31
+ allow(File).to receive(:directory?).and_call_original
31
32
  allow(File).to receive(:directory?).with('/etc/init.d').and_return(true)
32
33
 
33
34
  allow(Puppet::FileSystem).to receive(:exist?).with('/etc/init.d/myservice').and_return(true)
@@ -1,9 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'Puppet::Type::Service::Provider::Redhat',
4
- if: Puppet.features.posix? && !Puppet::Util::Platform.jruby?do
4
+ unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
5
5
  let(:provider_class) { Puppet::Type.type(:service).provider(:redhat) }
6
6
 
7
+ # `execute` and `texecute` start a new process, consequently setting $CHILD_STATUS to a Process::Status instance,
8
+ # but because they are mocked, an external process is never executed and $CHILD_STATUS remain nil.
9
+ # In order to execute some parts of the code under test and to mock $CHILD_STATUS, we need this variable to be a
10
+ # Process::Status instance. We can achieve this by starting a process that does nothing (exit 0). By doing this,
11
+ # $CHILD_STATUS will be initialised with a instance of Process::Status and we will be able to mock it.
12
+ before(:all) do
13
+ `exit 0`
14
+ end
15
+
7
16
  before :each do
8
17
  @class = Puppet::Type.type(:service).provider(:redhat)
9
18
  @resource = double('resource')
@@ -1,6 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'Puppet::Type::Service::Provider::Runit', unless: Puppet::Util::Platform.jruby? do
3
+ describe 'Puppet::Type::Service::Provider::Runit',
4
+ unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
4
5
  let(:provider_class) { Puppet::Type.type(:service).provider(:runit) }
5
6
 
6
7
  before(:each) do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'Puppet::Type::Service::Provider::Smf',
4
- if: Puppet.features.posix? && !Puppet::Util::Platform.jruby? do
4
+ unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
5
5
  let(:provider_class) { Puppet::Type.type(:service).provider(:smf) }
6
6
 
7
7
  before(:each) do
@@ -1,13 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'Puppet::Type::Service::Provider::Src',
4
- unless: Puppet::Util::Platform.jruby? do
4
+ unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
5
5
  let(:provider_class) { Puppet::Type.type(:service).provider(:src) }
6
6
 
7
- if Puppet::Util::Platform.windows?
8
- # Get a pid for $CHILD_STATUS to latch on to
9
- command = "cmd.exe /c \"exit 0\""
10
- Puppet::Util::Execution.execute(command, {:failonfail => false})
7
+ before :all do
8
+ `exit 0`
11
9
  end
12
10
 
13
11
  before :each do
@@ -1,18 +1,24 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'Puppet::Type::Service::Provider::Systemd', unless: Puppet::Util::Platform.jruby? do
3
+ describe 'Puppet::Type::Service::Provider::Systemd',
4
+ unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
5
+
4
6
  let(:provider_class) { Puppet::Type.type(:service).provider(:systemd) }
5
- if Puppet::Util::Platform.windows?
6
- # Get a pid for $CHILD_STATUS to latch on to
7
- command = "cmd.exe /c \"exit 0\""
8
- Puppet::Util::Execution.execute(command, {:failonfail => false})
9
- end
10
7
 
11
8
  before :each do
12
9
  allow(Puppet::Type.type(:service)).to receive(:defaultprovider).and_return(provider_class)
13
10
  allow(provider_class).to receive(:which).with('systemctl').and_return('/bin/systemctl')
14
11
  end
15
12
 
13
+ # `execute` and `texecute` start a new process, consequently setting $CHILD_STATUS to a Process::Status instance,
14
+ # but because they are mocked, an external process is never executed and $CHILD_STATUS remain nil.
15
+ # In order to execute some parts of the code under test and to mock $CHILD_STATUS, we need this variable to be a
16
+ # Process::Status instance. We can achieve this by starting a process that does nothing (exit 0). By doing this,
17
+ # $CHILD_STATUS will be initialised with a instance of Process::Status and we will be able to mock it.
18
+ before(:all) do
19
+ `exit 0`
20
+ end
21
+
16
22
  let :provider do
17
23
  provider_class.new(:name => 'sshd.service')
18
24
  end
@@ -190,6 +196,7 @@ describe 'Puppet::Type::Service::Provider::Systemd', unless: Puppet::Util::Platf
190
196
  apparmor.service
191
197
  umountnfs.service
192
198
  urandom.service
199
+ brandbot.service
193
200
  })
194
201
  end
195
202
 
@@ -198,7 +205,7 @@ describe 'Puppet::Type::Service::Provider::Systemd', unless: Puppet::Util::Platf
198
205
  expect(Puppet).to receive(:debug).with("apparmor.service marked as bad by `systemctl`. It is recommended to be further checked.")
199
206
  provider_class.instances
200
207
  end
201
- end
208
+ end
202
209
 
203
210
  describe "#start" do
204
211
  it "should use the supplied start command if specified" do
@@ -278,43 +285,43 @@ Jun 14 21:43:23 foo.example.com systemd[1]: sshd.service lacks both ExecStart= a
278
285
  describe "#enabled?" do
279
286
  it "should return :true if the service is enabled" do
280
287
  provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
281
- expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).and_return("enabled\n")
282
- allow($CHILD_STATUS).to receive(:exitstatus).and_return(0)
288
+ expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
289
+ and_return(Puppet::Util::Execution::ProcessOutput.new("enabled\n", 0))
283
290
  expect(provider.enabled?).to eq(:true)
284
291
  end
285
292
 
286
293
  it "should return :true if the service is static" do
287
294
  provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
288
- expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled','--', 'sshd.service'], :failonfail => false).and_return("static\n")
289
- allow($CHILD_STATUS).to receive(:exitstatus).and_return(0)
295
+ expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled','--', 'sshd.service'], :failonfail => false).
296
+ and_return(Puppet::Util::Execution::ProcessOutput.new("static\n", 0))
290
297
  expect(provider.enabled?).to eq(:true)
291
298
  end
292
299
 
293
300
  it "should return :false if the service is disabled" do
294
301
  provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
295
- expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).and_return("disabled\n")
296
- allow($CHILD_STATUS).to receive(:exitstatus).and_return(1)
302
+ expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
303
+ and_return(Puppet::Util::Execution::ProcessOutput.new("disabled\n", 1))
297
304
  expect(provider.enabled?).to eq(:false)
298
305
  end
299
306
 
300
307
  it "should return :false if the service is indirect" do
301
308
  provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
302
- expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).and_return("indirect\n")
303
- allow($CHILD_STATUS).to receive(:exitstatus).and_return(0)
309
+ expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
310
+ and_return(Puppet::Util::Execution::ProcessOutput.new("indirect\n", 0))
304
311
  expect(provider.enabled?).to eq(:false)
305
312
  end
306
313
 
307
314
  it "should return :false if the service is masked and the resource is attempting to be disabled" do
308
315
  provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service', :enable => false))
309
- expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).and_return("masked\n")
310
- allow($CHILD_STATUS).to receive(:exitstatus).and_return(1)
316
+ expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
317
+ and_return(Puppet::Util::Execution::ProcessOutput.new("masked\n", 1))
311
318
  expect(provider.enabled?).to eq(:false)
312
319
  end
313
320
 
314
321
  it "should return :mask if the service is masked and the resource is attempting to be masked" do
315
322
  provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service', :enable => 'mask'))
316
- expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).and_return("masked\n")
317
- allow($CHILD_STATUS).to receive(:exitstatus).and_return(1)
323
+ expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'sshd.service'], :failonfail => false).
324
+ and_return(Puppet::Util::Execution::ProcessOutput.new("masked\n", 1))
318
325
  expect(provider.enabled?).to eq(:mask)
319
326
  end
320
327
  end
@@ -437,6 +444,67 @@ Jun 14 21:43:23 foo.example.com systemd[1]: sshd.service lacks both ExecStart= a
437
444
  end
438
445
  end
439
446
 
447
+ describe "#insync_enabled?" do
448
+ let(:provider) do
449
+ provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service', :enable => false))
450
+ end
451
+
452
+ before do
453
+ allow(provider).to receive(:cached_enabled?).and_return({ output: service_state, exitcode: 0 })
454
+ end
455
+
456
+ context 'when service state is static' do
457
+ let(:service_state) { 'static' }
458
+
459
+ it 'is always enabled_insync even if current value is the same as expected' do
460
+ expect(provider).to be_enabled_insync(:false)
461
+ end
462
+
463
+ it 'is always enabled_insync even if current value is not the same as expected' do
464
+ expect(provider).to be_enabled_insync(:true)
465
+ end
466
+
467
+ it 'logs a debug messsage' do
468
+ expect(Puppet).to receive(:debug).with("Unable to enable or disable static service sshd.service")
469
+ provider.enabled_insync?(:true)
470
+ end
471
+ end
472
+
473
+ context 'when service state is indirect' do
474
+ let(:service_state) { 'indirect' }
475
+
476
+ it 'is always enabled_insync even if current value is the same as expected' do
477
+ expect(provider).to be_enabled_insync(:false)
478
+ end
479
+
480
+ it 'is always enabled_insync even if current value is not the same as expected' do
481
+ expect(provider).to be_enabled_insync(:true)
482
+ end
483
+
484
+ it 'logs a debug messsage' do
485
+ expect(Puppet).to receive(:debug).with("Service sshd.service is in 'indirect' state and cannot be enabled/disabled")
486
+ provider.enabled_insync?(:true)
487
+ end
488
+ end
489
+
490
+ context 'when service state is enabled' do
491
+ let(:service_state) { 'enabled' }
492
+
493
+ it 'is enabled_insync if current value is the same as expected' do
494
+ expect(provider).to be_enabled_insync(:false)
495
+ end
496
+
497
+ it 'is not enabled_insync if current value is not the same as expected' do
498
+ expect(provider).not_to be_enabled_insync(:true)
499
+ end
500
+
501
+ it 'logs no debug messsage' do
502
+ expect(Puppet).not_to receive(:debug)
503
+ provider.enabled_insync?(:true)
504
+ end
505
+ end
506
+ end
507
+
440
508
  describe "#get_start_link_count" do
441
509
  it "should strip the '.service' from the search if present in the resource name" do
442
510
  provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
@@ -1,14 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'Puppet::Type::Service::Provider::Upstart', unless: Puppet::Util::Platform.jruby? do
3
+ describe 'Puppet::Type::Service::Provider::Upstart',
4
+ unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
4
5
  let(:manual) { "\nmanual" }
5
6
  let(:start_on_default_runlevels) { "\nstart on runlevel [2,3,4,5]" }
6
7
  let!(:provider_class) { Puppet::Type.type(:service).provider(:upstart) }
7
8
 
8
- if Puppet::Util::Platform.windows?
9
- # Get a pid for $CHILD_STATUS to latch on to
10
- command = "cmd.exe /c \"exit 0\""
11
- Puppet::Util::Execution.execute(command, {:failonfail => false})
9
+ before :each do
10
+ `exit 0`
12
11
  end
13
12
 
14
13
  def given_contents_of(file, content)
@@ -58,7 +58,7 @@ describe 'Puppet::Type::Service::Provider::Windows',
58
58
  it "should enable if managing enable and enable is true" do
59
59
  resource[:enable] = :true
60
60
  expect(service_util).to receive(:start)
61
- expect(service_util).to receive(:set_startup_mode).with(name, :SERVICE_AUTO_START)
61
+ expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_AUTO_START})
62
62
 
63
63
  provider.start
64
64
  end
@@ -66,7 +66,7 @@ describe 'Puppet::Type::Service::Provider::Windows',
66
66
  it "should manual start if managing enable and enable is false" do
67
67
  resource[:enable] = :false
68
68
  expect(service_util).to receive(:start)
69
- expect(service_util).to receive(:set_startup_mode).with(name, :SERVICE_DEMAND_START)
69
+ expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_DEMAND_START})
70
70
 
71
71
  provider.start
72
72
  end
@@ -88,6 +88,14 @@ describe 'Puppet::Type::Service::Provider::Windows',
88
88
  expect(provider.status).to eql(:stopped)
89
89
  end
90
90
 
91
+ it "should report service as stopped when status cannot be retrieved" do
92
+ allow(service_util).to receive(:exists?).with(resource[:name]).and_return(true)
93
+ allow(service_util).to receive(:service_state).with(name).and_raise(Puppet::Error.new('Service query failed: The specified path is invalid.'))
94
+
95
+ expect(Puppet).to receive(:warning).with("Status for service #{resource[:name]} could not be retrieved: Service query failed: The specified path is invalid.")
96
+ expect(provider.status).to eql(:stopped)
97
+ end
98
+
91
99
  [
92
100
  :SERVICE_PAUSED,
93
101
  :SERVICE_PAUSE_PENDING
@@ -119,6 +127,34 @@ describe 'Puppet::Type::Service::Provider::Windows',
119
127
  expect(provider.status).to eq(:running)
120
128
  end
121
129
  end
130
+
131
+ context 'when querying lmhosts', if: Puppet::Util::Platform.windows? do
132
+ # This service should be ubiquitous across all supported Windows platforms
133
+ let(:service) { Puppet::Type.type(:service).new(:name => 'lmhosts') }
134
+
135
+ before :each do
136
+ allow(service_util).to receive(:exists?).with(service.name).and_call_original
137
+ end
138
+
139
+ it "reports if the service is enabled" do
140
+ expect([:true, :false, :manual]).to include(service.provider.enabled?)
141
+ end
142
+
143
+ it "reports on the service status" do
144
+ expect(
145
+ [
146
+ :running,
147
+ :'continue pending',
148
+ :'pause pending',
149
+ :paused,
150
+ :running,
151
+ :'start pending',
152
+ :'stop pending',
153
+ :stopped
154
+ ]
155
+ ).to include(service.provider.status)
156
+ end
157
+ end
122
158
  end
123
159
 
124
160
  describe "#restart" do
@@ -178,12 +214,12 @@ describe 'Puppet::Type::Service::Provider::Windows',
178
214
 
179
215
  describe "#enable" do
180
216
  it "should set service start type to Service_Auto_Start when enabled" do
181
- expect(service_util).to receive(:set_startup_mode).with(name, :SERVICE_AUTO_START)
217
+ expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_AUTO_START})
182
218
  provider.enable
183
219
  end
184
220
 
185
- it "raises an error if set_startup_mode fails" do
186
- expect(service_util).to receive(:set_startup_mode).with(name, :SERVICE_AUTO_START).and_raise(Puppet::Error.new('foobar'))
221
+ it "raises an error if set_startup_configuration fails" do
222
+ expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_AUTO_START}).and_raise(Puppet::Error.new('foobar'))
187
223
 
188
224
  expect {
189
225
  provider.enable
@@ -193,12 +229,12 @@ describe 'Puppet::Type::Service::Provider::Windows',
193
229
 
194
230
  describe "#disable" do
195
231
  it "should set service start type to Service_Disabled when disabled" do
196
- expect(service_util).to receive(:set_startup_mode).with(name, :SERVICE_DISABLED)
232
+ expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_DISABLED})
197
233
  provider.disable
198
234
  end
199
235
 
200
- it "raises an error if set_startup_mode fails" do
201
- expect(service_util).to receive(:set_startup_mode).with(name, :SERVICE_DISABLED).and_raise(Puppet::Error.new('foobar'))
236
+ it "raises an error if set_startup_configuration fails" do
237
+ expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_DISABLED}).and_raise(Puppet::Error.new('foobar'))
202
238
 
203
239
  expect {
204
240
  provider.disable
@@ -208,12 +244,12 @@ describe 'Puppet::Type::Service::Provider::Windows',
208
244
 
209
245
  describe "#manual_start" do
210
246
  it "should set service start type to Service_Demand_Start (manual) when manual" do
211
- expect(service_util).to receive(:set_startup_mode).with(name, :SERVICE_DEMAND_START)
247
+ expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_DEMAND_START})
212
248
  provider.manual_start
213
249
  end
214
250
 
215
- it "raises an error if set_startup_mode fails" do
216
- expect(service_util).to receive(:set_startup_mode).with(name, :SERVICE_DEMAND_START).and_raise(Puppet::Error.new('foobar'))
251
+ it "raises an error if set_startup_configuration fails" do
252
+ expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_DEMAND_START}).and_raise(Puppet::Error.new('foobar'))
217
253
 
218
254
  expect {
219
255
  provider.manual_start
@@ -223,12 +259,12 @@ describe 'Puppet::Type::Service::Provider::Windows',
223
259
 
224
260
  describe "#delayed_start" do
225
261
  it "should set service start type to Service_Config_Delayed_Auto_Start (delayed) when delayed" do
226
- expect(service_util).to receive(:set_startup_mode).with(name, :SERVICE_AUTO_START, true)
262
+ expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_AUTO_START, delayed: true})
227
263
  provider.delayed_start
228
264
  end
229
265
 
230
- it "raises an error if set_startup_mode fails" do
231
- expect(service_util).to receive(:set_startup_mode).with(name, :SERVICE_AUTO_START, true).and_raise(Puppet::Error.new('foobar'))
266
+ it "raises an error if set_startup_configuration fails" do
267
+ expect(service_util).to receive(:set_startup_configuration).with(name, options: {startup_type: :SERVICE_AUTO_START, delayed: true}).and_raise(Puppet::Error.new('foobar'))
232
268
 
233
269
  expect {
234
270
  provider.delayed_start