chef 12.4.0.rc.0-universal-mingw32 → 12.4.0.rc.2-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.
- checksums.yaml +4 -4
- data/Rakefile +12 -1
- data/lib/chef/api_client.rb +130 -26
- data/lib/chef/application.rb +0 -1
- data/lib/chef/application/client.rb +8 -19
- data/lib/chef/audit/audit_reporter.rb +12 -7
- data/lib/chef/audit/logger.rb +36 -0
- data/lib/chef/audit/runner.rb +4 -2
- data/lib/chef/chef_class.rb +62 -11
- data/lib/chef/client.rb +587 -207
- data/lib/chef/config.rb +0 -1
- data/lib/chef/dsl/recipe.rb +45 -56
- data/lib/chef/dsl/resources.rb +3 -2
- data/lib/chef/event_dispatch/base.rb +7 -2
- data/lib/chef/exceptions.rb +4 -1
- data/lib/chef/file_content_management/deploy/mv_windows.rb +16 -6
- data/lib/chef/formatters/doc.rb +15 -7
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +10 -7
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +2 -0
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +4 -1
- data/lib/chef/http/authenticator.rb +7 -2
- data/lib/chef/knife.rb +16 -4
- data/lib/chef/knife/client_create.rb +55 -31
- data/lib/chef/knife/core/generic_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/osc_user_create.rb +97 -0
- data/lib/chef/knife/osc_user_delete.rb +51 -0
- data/lib/chef/knife/osc_user_edit.rb +58 -0
- data/lib/chef/knife/osc_user_list.rb +47 -0
- data/lib/chef/knife/osc_user_reregister.rb +64 -0
- data/lib/chef/knife/osc_user_show.rb +54 -0
- data/lib/chef/knife/user_create.rb +95 -36
- data/lib/chef/knife/user_delete.rb +52 -2
- data/lib/chef/knife/user_edit.rb +37 -7
- data/lib/chef/knife/user_list.rb +3 -0
- data/lib/chef/knife/user_reregister.rb +39 -8
- data/lib/chef/knife/user_show.rb +30 -1
- data/lib/chef/mixin/api_version_request_handling.rb +66 -0
- data/lib/chef/mixin/convert_to_class_name.rb +10 -4
- data/lib/chef/mixin/deprecation.rb +24 -0
- data/lib/chef/mixin/powershell_out.rb +98 -0
- data/lib/chef/mixin/provides.rb +5 -18
- data/lib/chef/mixin/uris.rb +11 -0
- data/lib/chef/mixin/windows_architecture_helper.rb +5 -2
- data/lib/chef/mixin/windows_env_helper.rb +11 -2
- data/lib/chef/node_map.rb +130 -75
- data/lib/chef/osc_user.rb +194 -0
- data/lib/chef/platform/provider_mapping.rb +2 -269
- data/lib/chef/platform/provider_priority_map.rb +6 -69
- data/lib/chef/platform/query_helpers.rb +5 -0
- data/lib/chef/platform/resource_priority_map.rb +12 -15
- data/lib/chef/policy_builder/policyfile.rb +1 -0
- data/lib/chef/provider.rb +19 -0
- data/lib/chef/provider/directory.rb +3 -0
- data/lib/chef/provider/dsc_resource.rb +8 -1
- data/lib/chef/provider/file.rb +1 -0
- data/lib/chef/provider/group/aix.rb +1 -0
- data/lib/chef/provider/group/dscl.rb +1 -1
- data/lib/chef/provider/group/gpasswd.rb +1 -0
- data/lib/chef/provider/group/groupmod.rb +1 -1
- data/lib/chef/provider/group/pw.rb +1 -0
- data/lib/chef/provider/group/suse.rb +2 -0
- data/lib/chef/provider/group/usermod.rb +2 -1
- data/lib/chef/provider/group/windows.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +2 -0
- data/lib/chef/provider/ifconfig/aix.rb +1 -0
- data/lib/chef/provider/ifconfig/debian.rb +2 -0
- data/lib/chef/provider/ifconfig/redhat.rb +1 -0
- data/lib/chef/provider/lwrp_base.rb +4 -0
- data/lib/chef/provider/mount.rb +0 -1
- data/lib/chef/provider/mount/aix.rb +1 -0
- data/lib/chef/provider/mount/mount.rb +2 -0
- data/lib/chef/provider/mount/solaris.rb +2 -0
- data/lib/chef/provider/package.rb +55 -0
- data/lib/chef/provider/package/aix.rb +7 -7
- data/lib/chef/provider/package/apt.rb +3 -3
- data/lib/chef/provider/package/dpkg.rb +4 -4
- data/lib/chef/provider/package/easy_install.rb +5 -5
- data/lib/chef/provider/package/freebsd/base.rb +2 -2
- data/lib/chef/provider/package/freebsd/pkg.rb +6 -6
- data/lib/chef/provider/package/freebsd/pkgng.rb +5 -5
- data/lib/chef/provider/package/freebsd/port.rb +4 -4
- data/lib/chef/provider/package/homebrew.rb +2 -2
- data/lib/chef/provider/package/ips.rb +4 -4
- data/lib/chef/provider/package/macports.rb +5 -6
- data/lib/chef/provider/package/openbsd.rb +4 -5
- data/lib/chef/provider/package/pacman.rb +4 -4
- data/lib/chef/provider/package/portage.rb +2 -0
- data/lib/chef/provider/package/rpm.rb +7 -8
- data/lib/chef/provider/package/rubygems.rb +5 -12
- data/lib/chef/provider/package/smartos.rb +4 -4
- data/lib/chef/provider/package/solaris.rb +7 -7
- data/lib/chef/provider/package/windows/msi.rb +1 -1
- data/lib/chef/provider/package/yum.rb +4 -6
- data/lib/chef/provider/package/zypper.rb +16 -14
- data/lib/chef/provider/powershell_script.rb +129 -47
- data/lib/chef/provider/remote_file/content.rb +4 -1
- data/lib/chef/provider/remote_file/local_file.rb +10 -4
- data/lib/chef/provider/service.rb +44 -0
- data/lib/chef/provider/service/freebsd.rb +1 -1
- data/lib/chef/provider/service/init.rb +1 -0
- data/lib/chef/provider/service/macosx.rb +1 -1
- data/lib/chef/provider/service/windows.rb +0 -1
- data/lib/chef/provider/user.rb +1 -1
- data/lib/chef/provider/user/aix.rb +3 -2
- data/lib/chef/provider/user/pw.rb +1 -0
- data/lib/chef/provider/user/solaris.rb +2 -0
- data/lib/chef/provider/user/useradd.rb +1 -0
- data/lib/chef/provider_resolver.rb +87 -134
- data/lib/chef/resource.rb +274 -68
- data/lib/chef/resource/apt_package.rb +0 -2
- data/lib/chef/resource/bash.rb +0 -2
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +0 -7
- data/lib/chef/resource/breakpoint.rb +3 -6
- data/lib/chef/resource/chef_gem.rb +0 -3
- data/lib/chef/resource/cookbook_file.rb +1 -3
- data/lib/chef/resource/cron.rb +2 -4
- data/lib/chef/resource/csh.rb +0 -2
- data/lib/chef/resource/deploy.rb +9 -6
- data/lib/chef/resource/deploy_revision.rb +0 -14
- data/lib/chef/resource/directory.rb +2 -4
- data/lib/chef/resource/dpkg_package.rb +0 -5
- data/lib/chef/resource/dsc_resource.rb +2 -3
- data/lib/chef/resource/dsc_script.rb +2 -3
- data/lib/chef/resource/easy_install_package.rb +0 -7
- data/lib/chef/resource/env.rb +3 -3
- data/lib/chef/resource/erl_call.rb +2 -5
- data/lib/chef/resource/execute.rb +2 -4
- data/lib/chef/resource/file.rb +2 -4
- data/lib/chef/resource/freebsd_package.rb +0 -5
- data/lib/chef/resource/gem_package.rb +0 -3
- data/lib/chef/resource/git.rb +0 -3
- data/lib/chef/resource/group.rb +2 -4
- data/lib/chef/resource/homebrew_package.rb +0 -2
- data/lib/chef/resource/http_request.rb +3 -4
- data/lib/chef/resource/ifconfig.rb +3 -4
- data/lib/chef/resource/ips_package.rb +2 -2
- data/lib/chef/resource/link.rb +3 -5
- data/lib/chef/resource/log.rb +2 -4
- data/lib/chef/resource/lwrp_base.rb +10 -61
- data/lib/chef/resource/macosx_service.rb +1 -2
- data/lib/chef/resource/macports_package.rb +0 -7
- data/lib/chef/resource/mdadm.rb +2 -5
- data/lib/chef/resource/mount.rb +2 -4
- data/lib/chef/resource/ohai.rb +2 -4
- data/lib/chef/resource/openbsd_package.rb +0 -6
- data/lib/chef/resource/package.rb +9 -6
- data/lib/chef/resource/pacman_package.rb +0 -7
- data/lib/chef/resource/paludis_package.rb +2 -3
- data/lib/chef/resource/perl.rb +0 -3
- data/lib/chef/resource/portage_package.rb +0 -3
- data/lib/chef/resource/powershell_script.rb +1 -2
- data/lib/chef/resource/python.rb +0 -3
- data/lib/chef/resource/reboot.rb +1 -3
- data/lib/chef/resource/registry_key.rb +3 -5
- data/lib/chef/resource/remote_directory.rb +3 -5
- data/lib/chef/resource/remote_file.rb +4 -5
- data/lib/chef/resource/route.rb +3 -5
- data/lib/chef/resource/rpm_package.rb +0 -2
- data/lib/chef/resource/ruby.rb +0 -4
- data/lib/chef/resource/ruby_block.rb +2 -4
- data/lib/chef/resource/scm.rb +3 -5
- data/lib/chef/resource/script.rb +0 -3
- data/lib/chef/resource/service.rb +3 -5
- data/lib/chef/resource/smartos_package.rb +0 -9
- data/lib/chef/resource/solaris_package.rb +0 -10
- data/lib/chef/resource/subversion.rb +1 -3
- data/lib/chef/resource/template.rb +0 -4
- data/lib/chef/resource/timestamped_deploy.rb +0 -4
- data/lib/chef/resource/user.rb +2 -5
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -7
- data/lib/chef/resource/windows_package.rb +3 -3
- data/lib/chef/resource/windows_script.rb +2 -2
- data/lib/chef/resource/windows_service.rb +3 -3
- data/lib/chef/resource/yum_package.rb +0 -3
- data/lib/chef/resource/zypper_package.rb +27 -0
- data/lib/chef/resource_builder.rb +7 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +108 -62
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/rest.rb +1 -0
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/user.rb +193 -42
- data/lib/chef/util/backup.rb +9 -1
- data/lib/chef/util/path_helper.rb +0 -1
- data/lib/chef/version.rb +1 -1
- data/spec/functional/audit/runner_spec.rb +22 -42
- data/spec/functional/mixin/powershell_out_spec.rb +43 -0
- data/spec/functional/resource/execute_spec.rb +9 -2
- data/spec/functional/resource/file_spec.rb +25 -0
- data/spec/functional/resource/group_spec.rb +5 -0
- data/spec/functional/resource/link_spec.rb +5 -11
- data/spec/functional/resource/powershell_spec.rb +40 -5
- data/spec/functional/resource/user/useradd_spec.rb +10 -18
- data/spec/integration/recipes/lwrp_spec.rb +57 -0
- data/spec/integration/recipes/provider_choice.rb +2 -7
- data/spec/integration/recipes/recipe_dsl_spec.rb +517 -19
- data/spec/spec_helper.rb +1 -1
- data/spec/support/lib/chef/provider/openldap_includer.rb +29 -0
- data/spec/support/lib/chef/resource/cat.rb +0 -2
- data/spec/support/lib/chef/resource/one_two_three_four.rb +0 -6
- data/spec/support/lib/chef/resource/openldap_includer.rb +27 -0
- data/spec/support/lib/chef/resource/with_state.rb +0 -9
- data/spec/support/lib/chef/resource/zen_follower.rb +0 -6
- data/spec/support/lib/chef/resource/zen_master.rb +1 -6
- data/spec/support/shared/context/client.rb +277 -0
- data/spec/support/shared/examples/client.rb +53 -0
- data/spec/support/shared/functional/file_resource.rb +0 -4
- data/spec/support/shared/functional/securable_resource.rb +0 -24
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +4 -4
- data/spec/support/shared/functional/windows_script.rb +1 -1
- data/spec/support/shared/unit/api_versioning.rb +77 -0
- data/spec/support/shared/unit/knife_shared.rb +40 -0
- data/spec/support/shared/unit/user_and_client_shared.rb +115 -0
- data/spec/unit/api_client_spec.rb +189 -14
- data/spec/unit/application/client_spec.rb +0 -5
- data/spec/unit/audit/audit_reporter_spec.rb +58 -14
- data/spec/unit/audit/logger_spec.rb +42 -0
- data/spec/unit/audit/runner_spec.rb +2 -2
- data/spec/unit/chef_fs/file_pattern_spec.rb +3 -15
- data/spec/unit/client_spec.rb +58 -374
- data/spec/unit/cookbook_spec.rb +0 -9
- data/spec/unit/cookbook_version_spec.rb +0 -20
- data/spec/unit/deprecation_spec.rb +55 -0
- data/spec/unit/dsl/resources_spec.rb +85 -0
- data/spec/unit/exceptions_spec.rb +2 -2
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +60 -0
- data/spec/unit/formatters/doc_spec.rb +46 -0
- data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +12 -10
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +8 -0
- data/spec/unit/http/authenticator_spec.rb +11 -2
- data/spec/unit/knife/client_create_spec.rb +122 -51
- data/spec/unit/knife/core/subcommand_loader_spec.rb +19 -3
- data/spec/unit/knife/core/ui_spec.rb +14 -0
- data/spec/unit/knife/osc_user_create_spec.rb +93 -0
- data/spec/unit/knife/osc_user_delete_spec.rb +44 -0
- data/spec/unit/knife/osc_user_edit_spec.rb +52 -0
- data/spec/unit/knife/osc_user_list_spec.rb +37 -0
- data/spec/unit/knife/osc_user_reregister_spec.rb +58 -0
- data/spec/unit/knife/osc_user_show_spec.rb +46 -0
- data/spec/unit/knife/user_create_spec.rb +177 -51
- data/spec/unit/knife/user_delete_spec.rb +34 -8
- data/spec/unit/knife/user_edit_spec.rb +31 -12
- data/spec/unit/knife/user_list_spec.rb +7 -3
- data/spec/unit/knife/user_reregister_spec.rb +38 -17
- data/spec/unit/knife/user_show_spec.rb +35 -11
- data/spec/unit/knife_spec.rb +10 -4
- data/spec/unit/lwrp_spec.rb +228 -54
- data/spec/unit/mixin/api_version_request_handling_spec.rb +127 -0
- data/spec/unit/mixin/command_spec.rb +1 -2
- data/spec/unit/mixin/powershell_out_spec.rb +70 -0
- data/spec/unit/mixin/uris_spec.rb +23 -11
- data/spec/unit/node_map_spec.rb +4 -1
- data/spec/unit/osc_user_spec.rb +276 -0
- data/spec/unit/platform_spec.rb +0 -60
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +199 -135
- data/spec/unit/provider/ifconfig/debian_spec.rb +0 -10
- data/spec/unit/provider/package/aix_spec.rb +16 -16
- data/spec/unit/provider/package/dpkg_spec.rb +2 -2
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +13 -13
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +7 -7
- data/spec/unit/provider/package/ips_spec.rb +22 -22
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +4 -26
- data/spec/unit/provider/package/pacman_spec.rb +5 -5
- data/spec/unit/provider/package/rpm_spec.rb +14 -14
- data/spec/unit/provider/package/rubygems_spec.rb +10 -44
- data/spec/unit/provider/package/smartos_spec.rb +4 -4
- data/spec/unit/provider/package/solaris_spec.rb +11 -11
- data/spec/unit/provider/package/zypper_spec.rb +125 -90
- data/spec/unit/provider/package_spec.rb +34 -0
- data/spec/unit/provider/powershell_spec.rb +53 -11
- data/spec/unit/provider/remote_directory_spec.rb +2 -2
- data/spec/unit/provider/remote_file/local_file_spec.rb +25 -6
- data/spec/unit/provider/service/freebsd_service_spec.rb +0 -12
- data/spec/unit/provider/user_spec.rb +3 -3
- data/spec/unit/provider_resolver_spec.rb +463 -327
- data/spec/unit/recipe_spec.rb +42 -15
- data/spec/unit/resource/breakpoint_spec.rb +1 -1
- data/spec/unit/resource/erl_call_spec.rb +1 -1
- data/spec/unit/resource/file_spec.rb +1 -1
- data/spec/unit/resource/ifconfig_spec.rb +10 -6
- data/spec/unit/resource/remote_file_spec.rb +5 -0
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/ruby_block_spec.rb +2 -2
- data/spec/unit/resource/template_spec.rb +1 -1
- data/spec/unit/resource/timestamped_deploy_spec.rb +1 -2
- data/spec/unit/resource/windows_service_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +99 -13
- data/spec/unit/rest_spec.rb +5 -5
- data/spec/unit/run_context_spec.rb +41 -0
- data/spec/unit/runner_spec.rb +2 -2
- data/spec/unit/user_spec.rb +406 -93
- data/tasks/maintainers.rb +69 -0
- metadata +37 -4
@@ -592,10 +592,6 @@ shared_examples_for "a configured file resource" do
|
|
592
592
|
File.open(path, "wb") { |f| f.write(wrong_content) }
|
593
593
|
end
|
594
594
|
|
595
|
-
it "updates the source file content" do
|
596
|
-
skip
|
597
|
-
end
|
598
|
-
|
599
595
|
it "marks the resource as updated" do
|
600
596
|
resource.run_action(:create)
|
601
597
|
expect(resource).to be_updated_by_last_action
|
@@ -163,9 +163,6 @@ shared_examples_for "a securable resource with existing target" do
|
|
163
163
|
let(:desired_gid) { 1337 }
|
164
164
|
let(:expected_gid) { 1337 }
|
165
165
|
|
166
|
-
skip "should set an owner (Rerun specs under root)", :requires_unprivileged_user => true
|
167
|
-
skip "should set a group (Rerun specs under root)", :requires_unprivileged_user => true
|
168
|
-
|
169
166
|
describe "when setting the owner", :requires_root do
|
170
167
|
before do
|
171
168
|
resource.owner expected_user_name
|
@@ -205,11 +202,6 @@ shared_examples_for "a securable resource with existing target" do
|
|
205
202
|
resource.run_action(:create)
|
206
203
|
end
|
207
204
|
|
208
|
-
it "should set permissions as specified" do
|
209
|
-
pending("Linux does not support lchmod")
|
210
|
-
expect{ File.lstat(path).mode & 007777 }.to eq(@mode_string.oct & 007777)
|
211
|
-
end
|
212
|
-
|
213
205
|
it "is marked as updated only if changes are made" do
|
214
206
|
expect(resource.updated_by_last_action?).to eq(expect_updated?)
|
215
207
|
end
|
@@ -222,11 +214,6 @@ shared_examples_for "a securable resource with existing target" do
|
|
222
214
|
resource.run_action(:create)
|
223
215
|
end
|
224
216
|
|
225
|
-
it "should set permissions in numeric form as a ruby-interpreted octal" do
|
226
|
-
pending('Linux does not support lchmod')
|
227
|
-
expect{ File.lstat(path).mode & 007777 }.to eq(@mode_integer & 007777)
|
228
|
-
end
|
229
|
-
|
230
217
|
it "is marked as updated only if changes are made" do
|
231
218
|
expect(resource.updated_by_last_action?).to eq(expect_updated?)
|
232
219
|
end
|
@@ -306,10 +293,6 @@ shared_examples_for "a securable resource without existing target" do
|
|
306
293
|
|
307
294
|
include_context "diff disabled"
|
308
295
|
|
309
|
-
context "on Unix", :unix_only do
|
310
|
-
skip "if we need any securable resource tests on Unix without existing target resource."
|
311
|
-
end
|
312
|
-
|
313
296
|
context "on Windows", :windows_only do
|
314
297
|
include_context "use Windows permissions"
|
315
298
|
|
@@ -366,13 +349,6 @@ shared_examples_for "a securable resource without existing target" do
|
|
366
349
|
expect { resource.group 'Lance "The Nose" Glindenberry III' }.to raise_error(Chef::Exceptions::ValidationFailed)
|
367
350
|
end
|
368
351
|
|
369
|
-
it "sets group when group is specified with a \\" do
|
370
|
-
pending("Need to find a group containing a backslash that is on most peoples' machines")
|
371
|
-
resource.group "#{ENV['COMPUTERNAME']}\\Administrators"
|
372
|
-
resource.run_action(:create)
|
373
|
-
expect{ descriptor.group }.to eq(SID.Everyone)
|
374
|
-
end
|
375
|
-
|
376
352
|
it "leaves group alone if group is not specified and resource already exists" do
|
377
353
|
arbitrary_non_default_group = SID.Everyone
|
378
354
|
expect(arbitrary_non_default_group).not_to eq(SID.default_security_object_group)
|
@@ -279,14 +279,14 @@ shared_examples_for "a securable resource with reporting" do
|
|
279
279
|
end
|
280
280
|
|
281
281
|
it "has empty values for file metadata in 'current_resource'" do
|
282
|
-
|
282
|
+
skip "windows reporting not yet fully supported"
|
283
283
|
expect(current_resource.owner).to be_nil
|
284
284
|
expect(current_resource.expanded_rights).to be_nil
|
285
285
|
end
|
286
286
|
|
287
287
|
context "and no security metadata is specified in new_resource" do
|
288
288
|
before do
|
289
|
-
|
289
|
+
skip "windows reporting not yet fully supported"
|
290
290
|
end
|
291
291
|
|
292
292
|
it "sets the metadata values on the new_resource as strings after creating" do
|
@@ -322,7 +322,7 @@ shared_examples_for "a securable resource with reporting" do
|
|
322
322
|
let(:expected_user_name) { 'domain\user' }
|
323
323
|
|
324
324
|
before do
|
325
|
-
|
325
|
+
skip "windows reporting not yet fully supported"
|
326
326
|
resource.owner(expected_user_name)
|
327
327
|
resource.run_action(:create)
|
328
328
|
end
|
@@ -336,7 +336,7 @@ shared_examples_for "a securable resource with reporting" do
|
|
336
336
|
|
337
337
|
context "when the target file exists" do
|
338
338
|
before do
|
339
|
-
|
339
|
+
skip "windows reporting not yet fully supported"
|
340
340
|
FileUtils.touch(resource.path)
|
341
341
|
resource.action(:create)
|
342
342
|
end
|
@@ -114,7 +114,7 @@ shared_context Chef::Resource::WindowsScript do
|
|
114
114
|
|
115
115
|
describe "when the run action is invoked on Windows" do
|
116
116
|
it "executes the script code" do
|
117
|
-
resource.code("
|
117
|
+
resource.code("whoami > #{script_output_path}")
|
118
118
|
resource.returns(0)
|
119
119
|
resource.run_action(:run)
|
120
120
|
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Tyler Cloke (<tyler@chef.io>)
|
3
|
+
# Copyright:: Copyright (c) 2015 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 "chef/exceptions"
|
20
|
+
|
21
|
+
shared_examples_for "version handling" do
|
22
|
+
let(:response_406) { OpenStruct.new(:code => '406') }
|
23
|
+
let(:exception_406) { Net::HTTPServerException.new("406 Not Acceptable", response_406) }
|
24
|
+
|
25
|
+
before do
|
26
|
+
allow(rest_v1).to receive(http_verb).and_raise(exception_406)
|
27
|
+
end
|
28
|
+
|
29
|
+
context "when the server does not support the min or max server API version that Chef::User supports" do
|
30
|
+
before do
|
31
|
+
allow(object).to receive(:server_client_api_version_intersection).and_return([])
|
32
|
+
end
|
33
|
+
|
34
|
+
it "raises the original exception" do
|
35
|
+
expect{ object.send(method) }.to raise_error(exception_406)
|
36
|
+
end
|
37
|
+
end # when the server does not support the min or max server API version that Chef::User supports
|
38
|
+
end # version handling
|
39
|
+
|
40
|
+
shared_examples_for "user and client reregister" do
|
41
|
+
let(:response_406) { OpenStruct.new(:code => '406') }
|
42
|
+
let(:exception_406) { Net::HTTPServerException.new("406 Not Acceptable", response_406) }
|
43
|
+
let(:generic_exception) { Exception.new }
|
44
|
+
let(:min_version) { "2" }
|
45
|
+
let(:max_version) { "5" }
|
46
|
+
let(:return_hash_406) {
|
47
|
+
{
|
48
|
+
"min_version" => min_version,
|
49
|
+
"max_version" => max_version,
|
50
|
+
"request_version" => "30"
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
context "when V0 is not supported by the server" do
|
55
|
+
context "when the exception is 406 and returns x-ops-server-api-version header" do
|
56
|
+
before do
|
57
|
+
allow(rest_v0).to receive(:put).and_raise(exception_406)
|
58
|
+
allow(response_406).to receive(:[]).with('x-ops-server-api-version').and_return(Chef::JSONCompat.to_json(return_hash_406))
|
59
|
+
end
|
60
|
+
|
61
|
+
it "raises an error about only V0 being supported" do
|
62
|
+
expect(object).to receive(:reregister_only_v0_supported_error_msg).with(max_version, min_version)
|
63
|
+
expect{ object.reregister }.to raise_error(Chef::Exceptions::OnlyApiVersion0SupportedForAction)
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
context "when the exception is not versioning related" do
|
68
|
+
before do
|
69
|
+
allow(rest_v0).to receive(:put).and_raise(generic_exception)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "raises the original error" do
|
73
|
+
expect{ object.reregister }.to raise_error(generic_exception)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Tyler Cloke (<tyler@chef.io>)
|
3
|
+
# Copyright:: Copyright (c) 2015 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
|
+
|
20
|
+
shared_examples_for "mandatory field missing" do
|
21
|
+
context "when field is nil" do
|
22
|
+
before do
|
23
|
+
knife.name_args = name_args
|
24
|
+
end
|
25
|
+
|
26
|
+
it "exits 1" do
|
27
|
+
expect { knife.run }.to raise_error(SystemExit)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "prints the usage" do
|
31
|
+
expect(knife).to receive(:show_usage)
|
32
|
+
expect { knife.run }.to raise_error(SystemExit)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "prints a relevant error message" do
|
36
|
+
expect { knife.run }.to raise_error(SystemExit)
|
37
|
+
expect(stderr.string).to match /You must specify a #{fieldname}/
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Tyler Cloke (<tyler@chef.io>)
|
3
|
+
# Copyright:: Copyright (c) 2015 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
|
+
shared_examples_for "user or client create" do
|
20
|
+
|
21
|
+
context "when server API V1 is valid on the Chef Server receiving the request" do
|
22
|
+
|
23
|
+
it "creates a new object via the API" do
|
24
|
+
expect(rest_v1).to receive(:post).with(url, payload).and_return({})
|
25
|
+
object.create
|
26
|
+
end
|
27
|
+
|
28
|
+
it "creates a new object via the API with a public_key when it exists" do
|
29
|
+
object.public_key "some_public_key"
|
30
|
+
expect(rest_v1).to receive(:post).with(url, payload.merge({:public_key => "some_public_key"})).and_return({})
|
31
|
+
object.create
|
32
|
+
end
|
33
|
+
|
34
|
+
context "raise error when create_key and public_key are both set" do
|
35
|
+
|
36
|
+
before do
|
37
|
+
object.public_key "key"
|
38
|
+
object.create_key true
|
39
|
+
end
|
40
|
+
|
41
|
+
it "rasies the proper error" do
|
42
|
+
expect { object.create }.to raise_error(error)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "when create_key == true" do
|
47
|
+
before do
|
48
|
+
object.create_key true
|
49
|
+
end
|
50
|
+
|
51
|
+
it "creates a new object via the API with create_key" do
|
52
|
+
expect(rest_v1).to receive(:post).with(url, payload.merge({:create_key => true})).and_return({})
|
53
|
+
object.create
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "when chef_key is returned by the server" do
|
58
|
+
let(:chef_key) {
|
59
|
+
{
|
60
|
+
"chef_key" => {
|
61
|
+
"public_key" => "some_public_key"
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
it "puts the public key into the objectr returned by create" do
|
67
|
+
expect(rest_v1).to receive(:post).with(url, payload).and_return(payload.merge(chef_key))
|
68
|
+
new_object = object.create
|
69
|
+
expect(new_object.public_key).to eq("some_public_key")
|
70
|
+
end
|
71
|
+
|
72
|
+
context "when private_key is returned in chef_key" do
|
73
|
+
let(:chef_key) {
|
74
|
+
{
|
75
|
+
"chef_key" => {
|
76
|
+
"public_key" => "some_public_key",
|
77
|
+
"private_key" => "some_private_key"
|
78
|
+
}
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
it "puts the private key into the object returned by create" do
|
83
|
+
expect(rest_v1).to receive(:post).with(url, payload).and_return(payload.merge(chef_key))
|
84
|
+
new_object = object.create
|
85
|
+
expect(new_object.private_key).to eq("some_private_key")
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end # when chef_key is returned by the server
|
89
|
+
|
90
|
+
end # when server API V1 is valid on the Chef Server receiving the request
|
91
|
+
|
92
|
+
context "when server API V1 is not valid on the Chef Server receiving the request" do
|
93
|
+
|
94
|
+
context "when the server supports API V0" do
|
95
|
+
before do
|
96
|
+
allow(object).to receive(:server_client_api_version_intersection).and_return([0])
|
97
|
+
allow(rest_v1).to receive(:post).and_raise(exception_406)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "creates a new object via the API" do
|
101
|
+
expect(rest_v0).to receive(:post).with(url, payload).and_return({})
|
102
|
+
object.create
|
103
|
+
end
|
104
|
+
|
105
|
+
it "creates a new object via the API with a public_key when it exists" do
|
106
|
+
object.public_key "some_public_key"
|
107
|
+
expect(rest_v0).to receive(:post).with(url, payload.merge({:public_key => "some_public_key"})).and_return({})
|
108
|
+
object.create
|
109
|
+
end
|
110
|
+
|
111
|
+
end # when the server supports API V0
|
112
|
+
end # when server API V1 is not valid on the Chef Server receiving the request
|
113
|
+
|
114
|
+
end # user or client create
|
115
|
+
|
@@ -53,6 +53,20 @@ describe Chef::ApiClient do
|
|
53
53
|
expect { @client.admin(Hash.new) }.to raise_error(ArgumentError)
|
54
54
|
end
|
55
55
|
|
56
|
+
it "has an create_key flag attribute" do
|
57
|
+
@client.create_key(true)
|
58
|
+
expect(@client.create_key).to be_truthy
|
59
|
+
end
|
60
|
+
|
61
|
+
it "create_key defaults to false" do
|
62
|
+
expect(@client.create_key).to be_falsey
|
63
|
+
end
|
64
|
+
|
65
|
+
it "allows only boolean values for the create_key flag" do
|
66
|
+
expect { @client.create_key(false) }.not_to raise_error
|
67
|
+
expect { @client.create_key(Hash.new) }.to raise_error(ArgumentError)
|
68
|
+
end
|
69
|
+
|
56
70
|
it "has a 'validator' flag attribute" do
|
57
71
|
@client.validator(true)
|
58
72
|
expect(@client.validator).to be_truthy
|
@@ -115,6 +129,12 @@ describe Chef::ApiClient do
|
|
115
129
|
expect(@json).to include(%q{"validator":false})
|
116
130
|
end
|
117
131
|
|
132
|
+
it "includes the 'create_key' flag when present" do
|
133
|
+
@client.create_key(true)
|
134
|
+
@json = @client.to_json
|
135
|
+
expect(@json).to include(%q{"create_key":true})
|
136
|
+
end
|
137
|
+
|
118
138
|
it "includes the private key when present" do
|
119
139
|
@client.private_key("monkeypants")
|
120
140
|
expect(@client.to_json).to include(%q{"private_key":"monkeypants"})
|
@@ -131,7 +151,7 @@ describe Chef::ApiClient do
|
|
131
151
|
|
132
152
|
describe "when deserializing from JSON (string) using ApiClient#from_json" do
|
133
153
|
let(:client_string) do
|
134
|
-
"{\"name\":\"black\",\"public_key\":\"crowes\",\"private_key\":\"monkeypants\",\"admin\":true,\"validator\":true}"
|
154
|
+
"{\"name\":\"black\",\"public_key\":\"crowes\",\"private_key\":\"monkeypants\",\"admin\":true,\"validator\":true,\"create_key\":true}"
|
135
155
|
end
|
136
156
|
|
137
157
|
let(:client) do
|
@@ -158,6 +178,10 @@ describe Chef::ApiClient do
|
|
158
178
|
expect(client.admin).to be_truthy
|
159
179
|
end
|
160
180
|
|
181
|
+
it "preserves the create_key status" do
|
182
|
+
expect(client.create_key).to be_truthy
|
183
|
+
end
|
184
|
+
|
161
185
|
it "preserves the 'validator' status" do
|
162
186
|
expect(client.validator).to be_truthy
|
163
187
|
end
|
@@ -175,6 +199,7 @@ describe Chef::ApiClient do
|
|
175
199
|
"private_key" => "monkeypants",
|
176
200
|
"admin" => true,
|
177
201
|
"validator" => true,
|
202
|
+
"create_key" => true,
|
178
203
|
"json_class" => "Chef::ApiClient"
|
179
204
|
}
|
180
205
|
end
|
@@ -199,6 +224,10 @@ describe Chef::ApiClient do
|
|
199
224
|
expect(client.admin).to be_truthy
|
200
225
|
end
|
201
226
|
|
227
|
+
it "preserves the create_key status" do
|
228
|
+
expect(client.create_key).to be_truthy
|
229
|
+
end
|
230
|
+
|
202
231
|
it "preserves the 'validator' status" do
|
203
232
|
expect(client.validator).to be_truthy
|
204
233
|
end
|
@@ -214,14 +243,16 @@ describe Chef::ApiClient do
|
|
214
243
|
|
215
244
|
before(:each) do
|
216
245
|
client = {
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
246
|
+
"name" => "black",
|
247
|
+
"clientname" => "black",
|
248
|
+
"public_key" => "crowes",
|
249
|
+
"private_key" => "monkeypants",
|
250
|
+
"admin" => true,
|
251
|
+
"create_key" => true,
|
252
|
+
"validator" => true,
|
253
|
+
"json_class" => "Chef::ApiClient"
|
224
254
|
}
|
255
|
+
|
225
256
|
@http_client = double("Chef::REST mock")
|
226
257
|
allow(Chef::REST).to receive(:new).and_return(@http_client)
|
227
258
|
expect(@http_client).to receive(:get).with("clients/black").and_return(client)
|
@@ -244,6 +275,10 @@ describe Chef::ApiClient do
|
|
244
275
|
expect(@client.admin).to be_a_kind_of(TrueClass)
|
245
276
|
end
|
246
277
|
|
278
|
+
it "preserves the create_key status" do
|
279
|
+
expect(@client.create_key).to be_a_kind_of(TrueClass)
|
280
|
+
end
|
281
|
+
|
247
282
|
it "preserves the 'validator' status" do
|
248
283
|
expect(@client.validator).to be_a_kind_of(TrueClass)
|
249
284
|
end
|
@@ -297,24 +332,34 @@ describe Chef::ApiClient do
|
|
297
332
|
end
|
298
333
|
|
299
334
|
context "and the client exists" do
|
335
|
+
let(:chef_rest_v0_mock) { double('chef rest root v0 object') }
|
336
|
+
let(:payload) {
|
337
|
+
{:name => "lost-my-key", :admin => false, :validator => false, :private_key => true}
|
338
|
+
}
|
339
|
+
|
300
340
|
before do
|
301
341
|
@api_client_without_key = Chef::ApiClient.new
|
302
342
|
@api_client_without_key.name("lost-my-key")
|
303
|
-
|
304
|
-
|
343
|
+
allow(@api_client_without_key).to receive(:chef_rest_v0).and_return(chef_rest_v0_mock)
|
344
|
+
#allow(@api_client_with_key).to receive(:http_api).and_return(_api_mock)
|
305
345
|
|
346
|
+
allow(chef_rest_v0_mock).to receive(:put).with("clients/lost-my-key", payload).and_return(@api_client_with_key)
|
347
|
+
allow(chef_rest_v0_mock).to receive(:get).with("clients/lost-my-key").and_return(@api_client_without_key)
|
348
|
+
allow(@http_client).to receive(:get).with("clients/lost-my-key").and_return(@api_client_without_key)
|
349
|
+
end
|
306
350
|
|
307
351
|
context "and the client exists on a Chef 11-like server" do
|
308
352
|
before do
|
309
353
|
@api_client_with_key = Chef::ApiClient.new
|
310
354
|
@api_client_with_key.name("lost-my-key")
|
311
355
|
@api_client_with_key.private_key("the new private key")
|
312
|
-
|
313
|
-
with("clients/lost-my-key", :name => "lost-my-key", :admin => false, :validator => false, :private_key => true).
|
314
|
-
and_return(@api_client_with_key)
|
356
|
+
allow(@api_client_with_key).to receive(:chef_rest_v0).and_return(chef_rest_v0_mock)
|
315
357
|
end
|
316
358
|
|
317
359
|
it "returns an ApiClient with a private key" do
|
360
|
+
expect(chef_rest_v0_mock).to receive(:put).with("clients/lost-my-key", payload).
|
361
|
+
and_return(@api_client_with_key)
|
362
|
+
|
318
363
|
response = Chef::ApiClient.reregister("lost-my-key")
|
319
364
|
# no sane == method for ApiClient :'(
|
320
365
|
expect(response).to eq(@api_client_without_key)
|
@@ -327,7 +372,7 @@ describe Chef::ApiClient do
|
|
327
372
|
context "and the client exists on a Chef 10-like server" do
|
328
373
|
before do
|
329
374
|
@api_client_with_key = {"name" => "lost-my-key", "private_key" => "the new private key"}
|
330
|
-
expect(
|
375
|
+
expect(chef_rest_v0_mock).to receive(:put).
|
331
376
|
with("clients/lost-my-key", :name => "lost-my-key", :admin => false, :validator => false, :private_key => true).
|
332
377
|
and_return(@api_client_with_key)
|
333
378
|
end
|
@@ -345,4 +390,134 @@ describe Chef::ApiClient do
|
|
345
390
|
|
346
391
|
end
|
347
392
|
end
|
393
|
+
|
394
|
+
describe "Versioned API Interactions" do
|
395
|
+
let(:response_406) { OpenStruct.new(:code => '406') }
|
396
|
+
let(:exception_406) { Net::HTTPServerException.new("406 Not Acceptable", response_406) }
|
397
|
+
let(:payload) {
|
398
|
+
{
|
399
|
+
:name => "some_name",
|
400
|
+
:validator => true,
|
401
|
+
:admin => true
|
402
|
+
}
|
403
|
+
}
|
404
|
+
|
405
|
+
before do
|
406
|
+
@client = Chef::ApiClient.new
|
407
|
+
allow(@client).to receive(:chef_rest_v0).and_return(double('chef rest root v0 object'))
|
408
|
+
allow(@client).to receive(:chef_rest_v1).and_return(double('chef rest root v1 object'))
|
409
|
+
@client.name "some_name"
|
410
|
+
@client.validator true
|
411
|
+
@client.admin true
|
412
|
+
end
|
413
|
+
|
414
|
+
describe "create" do
|
415
|
+
|
416
|
+
# from spec/support/shared/unit/user_and_client_shared.rb
|
417
|
+
it_should_behave_like "user or client create" do
|
418
|
+
let(:object) { @client }
|
419
|
+
let(:error) { Chef::Exceptions::InvalidClientAttribute }
|
420
|
+
let(:rest_v0) { @client.chef_rest_v0 }
|
421
|
+
let(:rest_v1) { @client.chef_rest_v1 }
|
422
|
+
let(:url) { "clients" }
|
423
|
+
end
|
424
|
+
|
425
|
+
context "when API V1 is not supported by the server" do
|
426
|
+
# from spec/support/shared/unit/api_versioning.rb
|
427
|
+
it_should_behave_like "version handling" do
|
428
|
+
let(:object) { @client }
|
429
|
+
let(:method) { :create }
|
430
|
+
let(:http_verb) { :post }
|
431
|
+
let(:rest_v1) { @client.chef_rest_v1 }
|
432
|
+
end
|
433
|
+
end
|
434
|
+
|
435
|
+
end # create
|
436
|
+
|
437
|
+
describe "update" do
|
438
|
+
context "when a valid client is defined" do
|
439
|
+
|
440
|
+
shared_examples_for "client updating" do
|
441
|
+
it "updates the client" do
|
442
|
+
expect(rest). to receive(:put).with("clients/some_name", payload)
|
443
|
+
@client.update
|
444
|
+
end
|
445
|
+
|
446
|
+
context "when only the name field exists" do
|
447
|
+
|
448
|
+
before do
|
449
|
+
# needed since there is no way to set to nil via code
|
450
|
+
@client.instance_variable_set(:@validator, nil)
|
451
|
+
@client.instance_variable_set(:@admin, nil)
|
452
|
+
end
|
453
|
+
|
454
|
+
after do
|
455
|
+
@client.validator true
|
456
|
+
@client.admin true
|
457
|
+
end
|
458
|
+
|
459
|
+
it "updates the client with only the name" do
|
460
|
+
expect(rest). to receive(:put).with("clients/some_name", {:name => "some_name"})
|
461
|
+
@client.update
|
462
|
+
end
|
463
|
+
end
|
464
|
+
|
465
|
+
end
|
466
|
+
|
467
|
+
context "when API V1 is supported by the server" do
|
468
|
+
|
469
|
+
it_should_behave_like "client updating" do
|
470
|
+
let(:rest) { @client.chef_rest_v1 }
|
471
|
+
end
|
472
|
+
|
473
|
+
end # when API V1 is supported by the server
|
474
|
+
|
475
|
+
context "when API V1 is not supported by the server" do
|
476
|
+
context "when no version is supported" do
|
477
|
+
# from spec/support/shared/unit/api_versioning.rb
|
478
|
+
it_should_behave_like "version handling" do
|
479
|
+
let(:object) { @client }
|
480
|
+
let(:method) { :create }
|
481
|
+
let(:http_verb) { :post }
|
482
|
+
let(:rest_v1) { @client.chef_rest_v1 }
|
483
|
+
end
|
484
|
+
end # when no version is supported
|
485
|
+
|
486
|
+
context "when API V0 is supported" do
|
487
|
+
|
488
|
+
before do
|
489
|
+
allow(@client.chef_rest_v1).to receive(:put).and_raise(exception_406)
|
490
|
+
allow(@client).to receive(:server_client_api_version_intersection).and_return([0])
|
491
|
+
end
|
492
|
+
|
493
|
+
it_should_behave_like "client updating" do
|
494
|
+
let(:rest) { @client.chef_rest_v0 }
|
495
|
+
end
|
496
|
+
|
497
|
+
end
|
498
|
+
|
499
|
+
end # when API V1 is not supported by the server
|
500
|
+
end # when a valid client is defined
|
501
|
+
end # update
|
502
|
+
|
503
|
+
# DEPRECATION
|
504
|
+
# This can be removed after API V0 support is gone
|
505
|
+
describe "reregister" do
|
506
|
+
context "when server API V0 is valid on the Chef Server receiving the request" do
|
507
|
+
it "creates a new object via the API" do
|
508
|
+
expect(@client.chef_rest_v0).to receive(:put).with("clients/#{@client.name}", payload.merge({:private_key => true})).and_return({})
|
509
|
+
@client.reregister
|
510
|
+
end
|
511
|
+
end # when server API V0 is valid on the Chef Server receiving the request
|
512
|
+
|
513
|
+
context "when server API V0 is not supported by the Chef Server" do
|
514
|
+
# from spec/support/shared/unit/api_versioning.rb
|
515
|
+
it_should_behave_like "user and client reregister" do
|
516
|
+
let(:object) { @client }
|
517
|
+
let(:rest_v0) { @client.chef_rest_v0 }
|
518
|
+
end
|
519
|
+
end # when server API V0 is not supported by the Chef Server
|
520
|
+
end # reregister
|
521
|
+
|
522
|
+
end
|
348
523
|
end
|