chef 16.4.41-universal-mingw32 → 16.5.64-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Rakefile +2 -2
  4. data/bin/knife +1 -1
  5. data/chef.gemspec +2 -1
  6. data/distro/templates/powershell/chef/chef.psm1.erb +18 -18
  7. data/ext/win32-eventlog/Rakefile +2 -2
  8. data/ext/win32-eventlog/chef-log.man.erb +4 -4
  9. data/lib/chef/application.rb +18 -16
  10. data/lib/chef/application/apply.rb +12 -7
  11. data/lib/chef/application/base.rb +26 -23
  12. data/lib/chef/application/client.rb +10 -4
  13. data/lib/chef/application/exit_code.rb +13 -4
  14. data/lib/chef/application/knife.rb +22 -11
  15. data/lib/chef/application/solo.rb +2 -1
  16. data/lib/chef/application/windows_service.rb +14 -14
  17. data/lib/chef/application/windows_service_manager.rb +6 -6
  18. data/lib/chef/chef_fs/knife.rb +2 -2
  19. data/lib/chef/chef_fs/parallelizer.rb +0 -1
  20. data/lib/chef/client.rb +10 -11
  21. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  22. data/lib/chef/cookbook/synchronizer.rb +2 -2
  23. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  24. data/lib/chef/cookbook_uploader.rb +1 -1
  25. data/lib/chef/data_collector.rb +6 -5
  26. data/lib/chef/data_collector/config_validation.rb +22 -13
  27. data/lib/chef/data_collector/run_end_message.rb +2 -2
  28. data/lib/chef/data_collector/run_start_message.rb +1 -1
  29. data/lib/chef/deprecated.rb +1 -1
  30. data/lib/chef/deprecation/warnings.rb +2 -2
  31. data/lib/chef/digester.rb +2 -2
  32. data/lib/chef/dsl/chef_vault.rb +1 -1
  33. data/lib/chef/dsl/data_query.rb +2 -2
  34. data/lib/chef/dsl/platform_introspection.rb +1 -1
  35. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  36. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  37. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  38. data/lib/chef/environment.rb +2 -2
  39. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  40. data/lib/chef/exceptions.rb +4 -4
  41. data/lib/chef/file_access_control/windows.rb +5 -1
  42. data/lib/chef/formatters/doc.rb +7 -6
  43. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  44. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  45. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  46. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  47. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  48. data/lib/chef/formatters/minimal.rb +5 -4
  49. data/lib/chef/http.rb +6 -4
  50. data/lib/chef/http/auth_credentials.rb +5 -1
  51. data/lib/chef/http/authenticator.rb +1 -1
  52. data/lib/chef/http/basic_client.rb +4 -2
  53. data/lib/chef/http/decompressor.rb +1 -1
  54. data/lib/chef/http/http_request.rb +7 -5
  55. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  56. data/lib/chef/http/ssl_policies.rb +1 -1
  57. data/lib/chef/json_compat.rb +1 -1
  58. data/lib/chef/knife.rb +4 -4
  59. data/lib/chef/knife/bootstrap.rb +16 -14
  60. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  61. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  62. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
  63. data/lib/chef/knife/client_create.rb +3 -3
  64. data/lib/chef/knife/config_get.rb +8 -97
  65. data/lib/chef/knife/config_get_profile.rb +9 -9
  66. data/lib/chef/knife/config_list.rb +139 -0
  67. data/lib/chef/knife/config_list_profiles.rb +8 -98
  68. data/lib/chef/knife/config_show.rb +127 -0
  69. data/lib/chef/knife/config_use.rb +61 -0
  70. data/lib/chef/knife/config_use_profile.rb +9 -24
  71. data/lib/chef/knife/configure.rb +2 -2
  72. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  73. data/lib/chef/knife/core/object_loader.rb +1 -1
  74. data/lib/chef/knife/core/windows_bootstrap_context.rb +11 -11
  75. data/lib/chef/knife/exec.rb +2 -2
  76. data/lib/chef/knife/node_show.rb +2 -2
  77. data/lib/chef/knife/serve.rb +3 -3
  78. data/lib/chef/knife/ssh.rb +16 -1
  79. data/lib/chef/knife/ssl_check.rb +3 -3
  80. data/lib/chef/knife/status.rb +2 -2
  81. data/lib/chef/knife/user_create.rb +2 -2
  82. data/lib/chef/knife/yaml_convert.rb +1 -1
  83. data/lib/chef/local_mode.rb +2 -2
  84. data/lib/chef/log/syslog.rb +2 -2
  85. data/lib/chef/log/winevt.rb +2 -2
  86. data/lib/chef/mixin/deep_merge.rb +0 -12
  87. data/lib/chef/mixin/openssl_helper.rb +1 -4
  88. data/lib/chef/mixin/template.rb +2 -2
  89. data/lib/chef/mixin/uris.rb +2 -2
  90. data/lib/chef/mixin/versioned_api.rb +1 -2
  91. data/lib/chef/monkey_patches/net_http.rb +4 -4
  92. data/lib/chef/node_map.rb +2 -2
  93. data/lib/chef/policy_builder/policyfile.rb +2 -2
  94. data/lib/chef/provider.rb +0 -4
  95. data/lib/chef/provider/file.rb +2 -2
  96. data/lib/chef/provider/ifconfig.rb +1 -1
  97. data/lib/chef/provider/launchd.rb +2 -2
  98. data/lib/chef/provider/mount/linux.rb +63 -0
  99. data/lib/chef/provider/package/rubygems.rb +21 -18
  100. data/lib/chef/provider/package/snap.rb +0 -1
  101. data/lib/chef/provider/package/windows.rb +2 -2
  102. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
  103. data/lib/chef/provider/package/zypper.rb +1 -1
  104. data/lib/chef/provider/remote_file/content.rb +3 -0
  105. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  106. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  107. data/lib/chef/provider/route.rb +2 -6
  108. data/lib/chef/provider/service/macosx.rb +2 -2
  109. data/lib/chef/provider/template_finder.rb +2 -10
  110. data/lib/chef/provider/user/dscl.rb +3 -3
  111. data/lib/chef/provider/user/mac.rb +1 -1
  112. data/lib/chef/provider/windows_task.rb +1 -2
  113. data/lib/chef/provider/zypper_repository.rb +2 -2
  114. data/lib/chef/provider_resolver.rb +1 -1
  115. data/lib/chef/providers.rb +1 -0
  116. data/lib/chef/recipe.rb +2 -2
  117. data/lib/chef/resource.rb +1 -1
  118. data/lib/chef/resource/apt_repository.rb +1 -1
  119. data/lib/chef/resource/bff_package.rb +22 -0
  120. data/lib/chef/resource/breakpoint.rb +57 -2
  121. data/lib/chef/resource/build_essential.rb +1 -1
  122. data/lib/chef/resource/cab_package.rb +29 -0
  123. data/lib/chef/resource/chef_client_cron.rb +32 -25
  124. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  125. data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
  126. data/lib/chef/resource/chef_client_systemd_timer.rb +24 -17
  127. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  128. data/lib/chef/resource/chef_gem.rb +10 -10
  129. data/lib/chef/resource/chef_handler.rb +148 -4
  130. data/lib/chef/resource/chef_sleep.rb +2 -2
  131. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  132. data/lib/chef/resource/cookbook_file.rb +2 -2
  133. data/lib/chef/resource/cron/cron_d.rb +0 -1
  134. data/lib/chef/resource/dnf_package.rb +2 -2
  135. data/lib/chef/resource/dsc_resource.rb +0 -1
  136. data/lib/chef/resource/dsc_script.rb +2 -2
  137. data/lib/chef/resource/execute.rb +6 -6
  138. data/lib/chef/resource/file.rb +4 -4
  139. data/lib/chef/resource/gem_package.rb +5 -5
  140. data/lib/chef/resource/homebrew_package.rb +3 -3
  141. data/lib/chef/resource/homebrew_update.rb +5 -5
  142. data/lib/chef/resource/hostname.rb +2 -2
  143. data/lib/chef/resource/launchd.rb +2 -1
  144. data/lib/chef/resource/locale.rb +2 -2
  145. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  146. data/lib/chef/resource/notify_group.rb +0 -1
  147. data/lib/chef/resource/ohai.rb +46 -3
  148. data/lib/chef/resource/ohai_hint.rb +33 -0
  149. data/lib/chef/resource/openssl_dhparam.rb +27 -5
  150. data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
  151. data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
  152. data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
  153. data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
  154. data/lib/chef/resource/openssl_x509_crl.rb +19 -10
  155. data/lib/chef/resource/openssl_x509_request.rb +14 -16
  156. data/lib/chef/resource/osx_profile.rb +77 -13
  157. data/lib/chef/resource/plist.rb +1 -1
  158. data/lib/chef/resource/powershell_package_source.rb +5 -5
  159. data/lib/chef/resource/reboot.rb +2 -2
  160. data/lib/chef/resource/remote_file.rb +3 -3
  161. data/lib/chef/resource/rhsm_register.rb +22 -10
  162. data/lib/chef/resource/ruby_block.rb +2 -2
  163. data/lib/chef/resource/scm/subversion.rb +2 -2
  164. data/lib/chef/resource/service.rb +3 -3
  165. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  166. data/lib/chef/resource/support/cron.d.erb +1 -1
  167. data/lib/chef/resource/support/cron_access.erb +1 -1
  168. data/lib/chef/resource/support/sudoer.erb +1 -1
  169. data/lib/chef/resource/support/ulimit.erb +1 -1
  170. data/lib/chef/resource/sysctl.rb +1 -5
  171. data/lib/chef/resource/systemd_unit.rb +2 -2
  172. data/lib/chef/resource/template.rb +2 -2
  173. data/lib/chef/resource/windows_ad_join.rb +10 -3
  174. data/lib/chef/resource/windows_certificate.rb +6 -4
  175. data/lib/chef/resource/windows_firewall_profile.rb +22 -20
  176. data/lib/chef/resource/windows_package.rb +28 -5
  177. data/lib/chef/resource/windows_printer.rb +5 -3
  178. data/lib/chef/resource/windows_printer_port.rb +6 -4
  179. data/lib/chef/resource/windows_user_privilege.rb +53 -54
  180. data/lib/chef/resource/windows_workgroup.rb +3 -3
  181. data/lib/chef/resource/yum_package.rb +2 -2
  182. data/lib/chef/resources.rb +3 -1
  183. data/lib/chef/run_context.rb +2 -2
  184. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  185. data/lib/chef/run_lock.rb +2 -2
  186. data/lib/chef/search/query.rb +4 -5
  187. data/lib/chef/shell.rb +31 -26
  188. data/lib/chef/shell/ext.rb +11 -11
  189. data/lib/chef/shell/shell_session.rb +2 -2
  190. data/lib/chef/train_transport.rb +5 -104
  191. data/lib/chef/util/diff.rb +3 -3
  192. data/lib/chef/util/powershell/cmdlet.rb +3 -1
  193. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  194. data/lib/chef/util/threaded_job_queue.rb +0 -2
  195. data/lib/chef/version.rb +1 -1
  196. data/lib/chef/win32/crypto.rb +1 -1
  197. data/lib/chef/win32/registry.rb +1 -2
  198. data/spec/data/shef-config.rb +1 -1
  199. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  200. data/spec/functional/resource/aix_service_spec.rb +2 -2
  201. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  202. data/spec/functional/resource/insserv_spec.rb +1 -1
  203. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  204. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  205. data/spec/functional/resource/windows_task_spec.rb +13 -13
  206. data/spec/functional/version_spec.rb +3 -3
  207. data/spec/integration/client/client_spec.rb +4 -4
  208. data/spec/integration/client/exit_code_spec.rb +3 -2
  209. data/spec/integration/client/ipv6_spec.rb +1 -1
  210. data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
  211. data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
  212. data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
  213. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  214. data/spec/integration/ohai/ohai_spec.rb +61 -0
  215. data/spec/integration/recipes/remote_directory.rb +1 -1
  216. data/spec/integration/solo/solo_spec.rb +5 -5
  217. data/spec/spec_helper.rb +6 -3
  218. data/spec/stress/win32/file_spec.rb +1 -1
  219. data/spec/support/chef_helpers.rb +2 -2
  220. data/spec/support/matchers/leak.rb +2 -2
  221. data/spec/support/platform_helpers.rb +16 -34
  222. data/spec/support/shared/functional/securable_resource.rb +108 -27
  223. data/spec/support/shared/functional/win32_service.rb +1 -1
  224. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  225. data/spec/tiny_server.rb +0 -1
  226. data/spec/unit/application/client_spec.rb +2 -2
  227. data/spec/unit/application/exit_code_spec.rb +10 -0
  228. data/spec/unit/application_spec.rb +4 -6
  229. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  230. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  231. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  232. data/spec/unit/cookbook_spec.rb +2 -2
  233. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  234. data/spec/unit/data_collector_spec.rb +0 -113
  235. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  236. data/spec/unit/file_access_control_spec.rb +1 -1
  237. data/spec/unit/knife/bootstrap_spec.rb +6 -6
  238. data/spec/unit/knife/core/ui_spec.rb +1 -0
  239. data/spec/unit/knife/ssh_spec.rb +2 -2
  240. data/spec/unit/lwrp_spec.rb +3 -3
  241. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  242. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  243. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  244. data/spec/unit/mixin/securable_spec.rb +2 -2
  245. data/spec/unit/node/immutable_collections_spec.rb +2 -2
  246. data/spec/unit/provider/mount/linux_spec.rb +97 -0
  247. data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
  248. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  249. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  250. data/spec/unit/provider/route_spec.rb +0 -2
  251. data/spec/unit/recipe_spec.rb +1 -1
  252. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  253. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  254. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  255. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  256. data/spec/unit/resource/launchd_spec.rb +8 -0
  257. data/spec/unit/resource/osx_profile_spec.rb +67 -1
  258. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  259. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  260. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  261. data/spec/unit/run_lock_spec.rb +5 -1
  262. data/spec/unit/runner_spec.rb +1 -2
  263. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  264. data/spec/unit/shell/shell_session_spec.rb +35 -64
  265. data/spec/unit/shell_spec.rb +16 -19
  266. data/spec/unit/train_transport_spec.rb +14 -13
  267. data/spec/unit/util/selinux_spec.rb +2 -0
  268. data/tasks/rspec.rb +0 -2
  269. metadata +41 -17
  270. data/lib/chef/dist.rb +0 -68
  271. data/spec/integration/knife/config_get_profile_spec.rb +0 -114
@@ -0,0 +1,127 @@
1
+ #
2
+ # Author:: Tim Smith (<tsmith@chef.io>)
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "spec_helper"
20
+
21
+ describe Chef::Resource::ChefClientLaunchd do
22
+ let(:node) { Chef::Node.new }
23
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
24
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
25
+ let(:resource) { Chef::Resource::ChefClientLaunchd.new("fakey_fakerton", run_context) }
26
+ let(:provider) { resource.provider_for_action(:enable) }
27
+
28
+ it "sets the default action as :enable" do
29
+ expect(resource.action).to eql([:enable])
30
+ end
31
+
32
+ it "supports :enable and :disable actions" do
33
+ expect { resource.action :enable }.not_to raise_error
34
+ expect { resource.action :disable }.not_to raise_error
35
+ end
36
+
37
+ it "coerces splay to an Integer" do
38
+ resource.splay "10"
39
+ expect(resource.splay).to eql(10)
40
+ end
41
+
42
+ it "raises an error if splay is not a positive number" do
43
+ expect { resource.splay("-10") }.to raise_error(Chef::Exceptions::ValidationFailed)
44
+ end
45
+
46
+ it "builds a default value for chef_binary_path dist values" do
47
+ expect(resource.chef_binary_path).to eql("/opt/chef/bin/chef-client")
48
+ end
49
+
50
+ it "raises an error if interval is not a positive number" do
51
+ expect { resource.interval("-10") }.to raise_error(Chef::Exceptions::ValidationFailed)
52
+ end
53
+
54
+ it "coerces interval to an Integer" do
55
+ resource.interval "10"
56
+ expect(resource.interval).to eql(10)
57
+ end
58
+
59
+ it "raises an error if nice is less than -20" do
60
+ expect { resource.nice(-21) }.to raise_error(Chef::Exceptions::ValidationFailed)
61
+ end
62
+
63
+ it "raises an error if nice is greater than 19" do
64
+ expect { resource.nice(20) }.to raise_error(Chef::Exceptions::ValidationFailed)
65
+ end
66
+
67
+ it "coerces nice to an Integer" do
68
+ resource.nice "10"
69
+ expect(resource.nice).to eql(10)
70
+ end
71
+
72
+ describe "#splay_sleep_time" do
73
+ it "uses shard_seed attribute if present" do
74
+ node.automatic_attrs[:shard_seed] = "73399073"
75
+ expect(provider.splay_sleep_time(300)).to satisfy { |v| v >= 0 && v <= 300 }
76
+ end
77
+
78
+ it "uses a hex conversion of a md5 hash of the splay if present" do
79
+ node.automatic_attrs[:shard_seed] = nil
80
+ allow(node).to receive(:name).and_return("test_node")
81
+ expect(provider.splay_sleep_time(300)).to satisfy { |v| v >= 0 && v <= 300 }
82
+ end
83
+ end
84
+
85
+ describe "#client_command" do
86
+ before do
87
+ allow(provider).to receive(:splay_sleep_time).and_return("123")
88
+ end
89
+
90
+ let(:root_path) { windows? ? "C:\\chef/client.rb" : "/etc/chef/client.rb" }
91
+
92
+ it "creates a valid command if using all default properties" do
93
+ expect(provider.client_command).to eql(
94
+ "/bin/sleep 123; /opt/chef/bin/chef-client -c #{root_path} -L /Library/Logs/Chef/client.log"
95
+ )
96
+ end
97
+
98
+ it "adds custom daemon options from daemon_options property" do
99
+ resource.daemon_options %w{foo bar}
100
+ expect(provider.client_command).to eql(
101
+ "/bin/sleep 123; /opt/chef/bin/chef-client foo bar -c #{root_path} -L /Library/Logs/Chef/client.log"
102
+ )
103
+ end
104
+
105
+ it "adds license acceptance flags if the property is set" do
106
+ resource.accept_chef_license true
107
+ expect(provider.client_command).to eql(
108
+ "/bin/sleep 123; /opt/chef/bin/chef-client -c #{root_path} -L /Library/Logs/Chef/client.log --chef-license accept"
109
+ )
110
+ end
111
+
112
+ it "uses custom config dir if set" do
113
+ resource.config_directory "/etc/some_other_dir"
114
+ expect(provider.client_command).to eql(
115
+ "/bin/sleep 123; /opt/chef/bin/chef-client -c /etc/some_other_dir/client.rb -L /Library/Logs/Chef/client.log"
116
+ )
117
+ end
118
+
119
+ it "uses custom log files / paths if set" do
120
+ resource.log_file_name "my-client.log"
121
+ resource.log_directory "/var/log/my-chef/"
122
+ expect(provider.client_command).to eql(
123
+ "/bin/sleep 123; /opt/chef/bin/chef-client -c #{root_path} -L /var/log/my-chef/my-client.log"
124
+ )
125
+ end
126
+ end
127
+ end
@@ -33,6 +33,12 @@ describe Chef::Resource::ChefClientSystemdTimer do
33
33
  expect(resource.user).to eql("root")
34
34
  end
35
35
 
36
+ it "validates the cpu_quota property input" do
37
+ expect { resource.cpu_quota(0) }.to raise_error(Chef::Exceptions::ValidationFailed)
38
+ expect { resource.cpu_quota(50) }.not_to raise_error
39
+ expect { resource.cpu_quota(101) }.not_to raise_error
40
+ end
41
+
36
42
  it "builds a default value for chef_binary_path dist values" do
37
43
  expect(resource.chef_binary_path).to eql("/opt/chef/bin/chef-client")
38
44
  end
@@ -70,4 +76,33 @@ describe Chef::Resource::ChefClientSystemdTimer do
70
76
  expect(provider.chef_client_cmd).to eql("/opt/chef/bin/chef-client --chef-license accept -c #{root_path}")
71
77
  end
72
78
  end
73
- end
79
+
80
+ describe "#service_content" do
81
+ it "does not set ConditionACPower if run_on_battery property is set to true (the default)" do
82
+ expect(provider.service_content["Service"]).not_to have_key("ConditionACPower")
83
+ end
84
+
85
+ it "sets ConditionACPower if run_on_battery property is set to false" do
86
+ resource.run_on_battery false
87
+ expect(provider.service_content["Service"]["ConditionACPower"]).to eq("true")
88
+ end
89
+
90
+ it "does not set Environment if environment property is empty" do
91
+ expect(provider.service_content["Service"]).not_to have_key("Environment")
92
+ end
93
+
94
+ it "sets Environment if environment property is set" do
95
+ resource.environment({ "foo" => "bar" })
96
+ expect(provider.service_content["Service"]["Environment"]).to eq(["\"foo=bar\""])
97
+ end
98
+
99
+ it "does not set CPUQuota if cpu_quota property is not set" do
100
+ expect(provider.service_content["Service"]).not_to have_key("CPUQuota")
101
+ end
102
+
103
+ it "sets CPUQuota if cpu_quota property is set" do
104
+ resource.cpu_quota 50
105
+ expect(provider.service_content["Service"]["CPUQuota"]).to eq(50)
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,54 @@
1
+ #
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require "spec_helper"
19
+
20
+ describe Chef::Resource::ChefClientTrustedCertificate do
21
+ let(:node) { Chef::Node.new }
22
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
23
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
24
+ let(:resource) { Chef::Resource::ChefClientTrustedCertificate.new("foo", run_context) }
25
+ let(:provider) { resource.provider_for_action(:add) }
26
+
27
+ it "has a resource name of :chef_client_trusted_certificate" do
28
+ expect(resource.resource_name).to eql(:chef_client_trusted_certificate)
29
+ end
30
+
31
+ it "has a name property of cert_name" do
32
+ expect(resource.cert_name).to eql("foo")
33
+ end
34
+
35
+ it "sets the default action as :add" do
36
+ expect(resource.action).to eql([:add])
37
+ end
38
+
39
+ it "supports :remove action" do
40
+ expect { resource.action :remove }.not_to raise_error
41
+ end
42
+
43
+ describe "#cert_path" do
44
+ it "appends .pem to new_resource.cert_name value" do
45
+ resource.cert_name "something"
46
+ expect(provider.cert_path).to match(%r{trusted_certs/something.pem$})
47
+ end
48
+
49
+ it "does not append .pem if cert_name already ends in .pem" do
50
+ resource.cert_name "something.pem"
51
+ expect(provider.cert_path).to match(%r{trusted_certs/something.pem$})
52
+ end
53
+ end
54
+ end
@@ -37,4 +37,12 @@ describe Chef::Resource::Launchd do
37
37
  expect { resource.action :enable }.not_to raise_error
38
38
  expect { resource.action :restart }.not_to raise_error
39
39
  end
40
+
41
+ it "raises an error if nice is less than -20" do
42
+ expect { resource.nice(-21) }.to raise_error(Chef::Exceptions::ValidationFailed)
43
+ end
44
+
45
+ it "raises an error if nice is greater than 19" do
46
+ expect { resource.nice(20) }.to raise_error(Chef::Exceptions::ValidationFailed)
47
+ end
40
48
  end
@@ -102,6 +102,72 @@ describe Chef::Resource::OsxProfile do
102
102
  "ProfileVersion" => 1 }],
103
103
  }
104
104
  end
105
+ let(:profile_raw_xml) do
106
+ <<~OUT
107
+ <?xml version="1.0" encoding="UTF-8"?>
108
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
109
+ <plist version="1.0">
110
+ <dict>
111
+ <key>tsmith</key>
112
+ <array>
113
+ <dict>
114
+ <key>ProfileDisplayName</key>
115
+ <string>Screensaver Settings</string>
116
+ <key>ProfileIdentifier</key>
117
+ <string>com.company.screensaver</string>
118
+ <key>ProfileInstallDate</key>
119
+ <string>2020-09-17 17:20:49 +0000</string>
120
+ <key>ProfileItems</key>
121
+ <array>
122
+ <dict>
123
+ <key>PayloadContent</key>
124
+ <dict>
125
+ <key>PayloadContentManagedPreferences</key>
126
+ <dict>
127
+ <key>com.apple.screensaver</key>
128
+ <dict>
129
+ <key>Forced</key>
130
+ <array>
131
+ <dict>
132
+ <key>mcx_preference_settings</key>
133
+ <dict>
134
+ <key>idleTime</key>
135
+ <integer>0</integer>
136
+ </dict>
137
+ </dict>
138
+ </array>
139
+ </dict>
140
+ </dict>
141
+ </dict>
142
+ <key>PayloadDisplayName</key>
143
+ <string>com.apple.screensaver</string>
144
+ <key>PayloadIdentifier</key>
145
+ <string>com.company.screensaver</string>
146
+ <key>PayloadType</key>
147
+ <string>com.apple.ManagedClient.preferences</string>
148
+ <key>PayloadUUID</key>
149
+ <string>73fc30e0-1e57-0131-c32d-000c2944c108</string>
150
+ <key>PayloadVersion</key>
151
+ <integer>1</integer>
152
+ </dict>
153
+ </array>
154
+ <key>ProfileOrganization</key>
155
+ <string>Chef</string>
156
+ <key>ProfileType</key>
157
+ <string>Configuration</string>
158
+ <key>ProfileUUID</key>
159
+ <string>ed5e36c8-ea0b-5960-8f49-3c7d9121687e</string>
160
+ <key>ProfileVersion</key>
161
+ <integer>1</integer>
162
+ </dict>
163
+ </array>
164
+ </dict>
165
+ </plist>
166
+ OUT
167
+ end
168
+ let(:shell_out_profiles) do
169
+ double("shell_out", exitstatus: 0, error?: false, stdout: profile_raw_xml)
170
+ end
105
171
  # If anything is changed within this profile, be sure to update the
106
172
  # ProfileUUID in all_profiles to match the new config specific UUID
107
173
  let(:test_profile) do
@@ -155,7 +221,7 @@ describe Chef::Resource::OsxProfile do
155
221
  resource.profile_name profile_name
156
222
  allow(provider).to receive(:get_installed_profiles).and_call_original
157
223
  allow(provider).to receive(:read_plist).and_return(all_profiles)
158
- expect(provider).to receive(:shell_out_compacted).with("/usr/bin/profiles", "-P", "-o", kind_of(String))
224
+ expect(provider).to receive(:shell_out_compacted).with("/usr/bin/profiles", "-P", "-o", "stdout-xml").and_return(shell_out_profiles)
159
225
  provider.load_current_resource
160
226
  end
161
227
 
@@ -41,23 +41,34 @@ describe Chef::Resource::RhsmRegister do
41
41
  end
42
42
 
43
43
  describe "#katello_cert_rpm_installed?" do
44
- let(:cmd) { double("cmd") }
45
-
46
- before do
47
- allow(Mixlib::ShellOut).to receive(:new).and_return(cmd)
48
- allow(cmd).to receive(:run_command)
49
- end
50
-
51
44
  context "when the output contains katello-ca-consumer" do
45
+ let(:with_katello) { double("shell_out", stdout: <<~RPM) }
46
+ libevent-2.0.21-4.el7.x86_64
47
+ gettext-libs-0.19.8.1-3.el7.x86_64
48
+ yum-metadata-parser-1.1.4-10.el7.x86_64
49
+ pyliblzma-0.5.3-11.el7.x86_64
50
+ python-IPy-0.75-6.el7.noarch
51
+ grubby-8.28-26.el7.x86_64
52
+ fipscheck-lib-1.4.1-6.el7.x86_64
53
+ centos-logos-70.0.6-3.el7.centos.noarch
54
+ nss-tools-3.44.0-7.el7_7.x86_64
55
+ katello-ca-consumer-somehostname-1.0-1.el7.x86_64
56
+ rpm-4.11.3-43.el7.x86_64
57
+ gpgme-1.3.2-5.el7.x86_64
58
+ libnfsidmap-0.25-19.el7.x86_64
59
+ RPM
60
+
52
61
  it "returns true" do
53
- allow(cmd).to receive(:stdout).and_return("katello-ca-consumer-somehostname-1.0-1")
62
+ allow(provider).to receive(:shell_out).and_return(with_katello)
54
63
  expect(provider.katello_cert_rpm_installed?).to eq(true)
55
64
  end
56
65
  end
57
66
 
58
67
  context "when the output does not contain katello-ca-consumer" do
68
+ let(:without_katello) { double("shell_out", stdout: "") }
69
+
59
70
  it "returns false" do
60
- allow(cmd).to receive(:stdout).and_return("katello-agent-but-not-the-ca")
71
+ allow(provider).to receive(:shell_out).and_return(without_katello)
61
72
  expect(provider.katello_cert_rpm_installed?).to eq(false)
62
73
  end
63
74
  end
@@ -89,6 +100,22 @@ describe Chef::Resource::RhsmRegister do
89
100
  end
90
101
  end
91
102
 
103
+ context "when a system_name is provided" do
104
+ it "returns a command containing the system name" do
105
+ allow(resource).to receive(:organization).and_return("myorg")
106
+ allow(resource).to receive(:system_name).and_return("myname")
107
+ expect(provider.register_command).to match("--name=myname")
108
+ end
109
+ end
110
+
111
+ context "when a system_name is not provided" do
112
+ it "returns a command containing the system name" do
113
+ allow(resource).to receive(:organization).and_return("myorg")
114
+ allow(resource).to receive(:system_name).and_return(nil)
115
+ expect(provider.register_command).not_to match("--name")
116
+ end
117
+ end
118
+
92
119
  context "when auto_attach is true" do
93
120
  it "does not return a command with --auto-attach since it is not supported with activation keys" do
94
121
  allow(resource).to receive(:organization).and_return("myorg")
@@ -124,6 +151,20 @@ describe Chef::Resource::RhsmRegister do
124
151
  end
125
152
  end
126
153
 
154
+ context "when a system_name is provided" do
155
+ it "returns a command containing the system name" do
156
+ allow(resource).to receive(:system_name).and_return("myname")
157
+ expect(provider.register_command).to match("--name=myname")
158
+ end
159
+ end
160
+
161
+ context "when a system_name is not provided" do
162
+ it "returns a command containing the system name" do
163
+ allow(resource).to receive(:system_name).and_return(nil)
164
+ expect(provider.register_command).not_to match("--name")
165
+ end
166
+ end
167
+
127
168
  context "when auto_attach is nil" do
128
169
  it "returns a command that does not contain --auto-attach" do
129
170
  allow(resource).to receive(:auto_attach).and_return(nil)
@@ -204,23 +245,20 @@ describe Chef::Resource::RhsmRegister do
204
245
  end
205
246
 
206
247
  describe "#registered_with_rhsm?" do
207
- let(:cmd) { double("cmd") }
208
-
209
- before do
210
- allow(Mixlib::ShellOut).to receive(:new).and_return(cmd)
211
- allow(cmd).to receive(:run_command)
212
- end
213
-
214
248
  context "when the status is Unknown" do
249
+ let(:unknown_status) { double("shell_out", stdout: "Overall Status: Unknown") }
250
+
215
251
  it "returns false" do
216
- allow(cmd).to receive(:stdout).and_return("Overall Status: Unknown")
252
+ allow(provider).to receive(:shell_out).and_return(unknown_status)
217
253
  expect(provider.registered_with_rhsm?).to eq(false)
218
254
  end
219
255
  end
220
256
 
221
257
  context "when the status is anything else" do
258
+ let(:known_status) { double("shell_out", stdout: "Overall Status: Insufficient") }
259
+
222
260
  it "returns true" do
223
- allow(cmd).to receive(:stdout).and_return("Overall Status: Insufficient")
261
+ allow(provider).to receive(:shell_out).and_return(known_status)
224
262
  expect(provider.registered_with_rhsm?).to eq(true)
225
263
  end
226
264
  end
@@ -44,7 +44,7 @@ describe Chef::Resource::WindowsUac do
44
44
  expect { resource.consent_behavior_users :bogus }.to raise_error(ArgumentError)
45
45
  end
46
46
 
47
- it "sets the default action as :create" do
47
+ it "sets the default action as :configure" do
48
48
  expect(resource.action).to eql([:configure])
49
49
  end
50
50
  end