chef 12.0.0.alpha.2-x86-mingw32 → 12.0.0.rc.0-x86-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.
- data/CONTRIBUTING.md +9 -0
- data/README.md +1 -1
- data/Rakefile +12 -0
- data/bin/chef-service-manager +1 -1
- data/bin/chef-windows-service +35 -0
- data/distro/common/html/_sources/ctl_chef_server.txt +307 -10
- data/distro/common/html/ctl_chef_client.html +3 -7
- data/distro/common/html/ctl_chef_server.html +609 -41
- data/distro/common/html/ctl_chef_shell.html +2 -2
- data/distro/common/html/ctl_chef_solo.html +1 -1
- data/distro/common/html/index.html +13 -13
- data/distro/common/html/knife.html +10 -10
- data/distro/common/html/knife_bootstrap.html +8 -8
- data/distro/common/html/knife_client.html +12 -12
- data/distro/common/html/knife_common_options.html +7 -7
- data/distro/common/html/knife_configure.html +3 -3
- data/distro/common/html/knife_cookbook.html +19 -19
- data/distro/common/html/knife_cookbook_site.html +28 -28
- data/distro/common/html/knife_data_bag.html +28 -13
- data/distro/common/html/knife_delete.html +2 -2
- data/distro/common/html/knife_deps.html +3 -3
- data/distro/common/html/knife_diff.html +4 -4
- data/distro/common/html/knife_download.html +3 -3
- data/distro/common/html/knife_edit.html +2 -2
- data/distro/common/html/knife_environment.html +14 -14
- data/distro/common/html/knife_exec.html +11 -11
- data/distro/common/html/knife_index_rebuild.html +2 -2
- data/distro/common/html/knife_list.html +3 -3
- data/distro/common/html/knife_node.html +23 -23
- data/distro/common/html/knife_raw.html +4 -4
- data/distro/common/html/knife_recipe_list.html +3 -3
- data/distro/common/html/knife_role.html +11 -11
- data/distro/common/html/knife_search.html +4 -4
- data/distro/common/html/knife_serve.html +3 -3
- data/distro/common/html/knife_show.html +3 -3
- data/distro/common/html/knife_ssh.html +7 -7
- data/distro/common/html/knife_ssl_check.html +7 -7
- data/distro/common/html/knife_ssl_fetch.html +9 -9
- data/distro/common/html/knife_status.html +3 -3
- data/distro/common/html/knife_tag.html +9 -9
- data/distro/common/html/knife_upload.html +3 -3
- data/distro/common/html/knife_user.html +9 -9
- data/distro/common/html/knife_using.html +11 -11
- data/distro/common/html/knife_xargs.html +14 -5
- data/distro/common/html/search.html +2 -2
- data/distro/common/html/searchindex.js +1 -1
- data/distro/common/man/man1/chef-shell.1 +2 -2
- data/distro/common/man/man1/knife-bootstrap.1 +7 -7
- data/distro/common/man/man1/knife-client.1 +10 -10
- data/distro/common/man/man1/knife-configure.1 +5 -5
- data/distro/common/man/man1/knife-cookbook-site.1 +24 -24
- data/distro/common/man/man1/knife-cookbook.1 +12 -12
- data/distro/common/man/man1/knife-data-bag.1 +34 -10
- data/distro/common/man/man1/knife-delete.1 +5 -5
- data/distro/common/man/man1/knife-deps.1 +5 -5
- data/distro/common/man/man1/knife-diff.1 +7 -7
- data/distro/common/man/man1/knife-download.1 +5 -5
- data/distro/common/man/man1/knife-edit.1 +5 -5
- data/distro/common/man/man1/knife-environment.1 +11 -11
- data/distro/common/man/man1/knife-exec.1 +11 -11
- data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
- data/distro/common/man/man1/knife-list.1 +5 -5
- data/distro/common/man/man1/knife-node.1 +16 -16
- data/distro/common/man/man1/knife-raw.1 +6 -6
- data/distro/common/man/man1/knife-recipe-list.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +7 -7
- data/distro/common/man/man1/knife-search.1 +6 -6
- data/distro/common/man/man1/knife-serve.1 +6 -6
- data/distro/common/man/man1/knife-show.1 +5 -5
- data/distro/common/man/man1/knife-ssh.1 +9 -9
- data/distro/common/man/man1/knife-ssl-check.1 +7 -7
- data/distro/common/man/man1/knife-ssl-fetch.1 +9 -9
- data/distro/common/man/man1/knife-status.1 +5 -5
- data/distro/common/man/man1/knife-tag.1 +8 -8
- data/distro/common/man/man1/knife-upload.1 +5 -5
- data/distro/common/man/man1/knife-user.1 +8 -8
- data/distro/common/man/man1/knife-xargs.1 +36 -10
- data/distro/common/man/man1/knife.1 +14 -14
- data/distro/common/man/man8/chef-client.8 +3 -10
- data/distro/common/man/man8/chef-solo.8 +1 -1
- data/ext/win32-eventlog/Rakefile +50 -0
- data/ext/win32-eventlog/chef-log.man +26 -0
- data/lib/chef/application.rb +313 -241
- data/lib/chef/application/apply.rb +10 -8
- data/lib/chef/application/client.rb +58 -33
- data/lib/chef/application/solo.rb +33 -12
- data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
- data/lib/chef/chef_fs/command_line.rb +1 -1
- data/lib/chef/chef_fs/file_system/organization_invites_entry.rb +2 -1
- data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -1
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +2 -1
- data/lib/chef/client.rb +18 -48
- data/lib/chef/config.rb +43 -11
- data/lib/chef/cookbook/cookbook_version_loader.rb +14 -7
- data/lib/chef/cookbook/metadata.rb +81 -38
- data/lib/chef/cookbook/syntax_check.rb +18 -52
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_version.rb +58 -39
- data/lib/chef/data_bag.rb +2 -2
- data/lib/chef/deprecation/provider/file.rb +2 -1
- data/lib/chef/dsl/data_query.rb +2 -29
- data/lib/chef/dsl/recipe.rb +8 -22
- data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -0
- data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +1 -1
- data/lib/chef/event_loggers/base.rb +62 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +104 -0
- data/lib/chef/exceptions.rb +18 -1
- data/lib/chef/file_cache.rb +3 -2
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +15 -6
- data/lib/chef/http.rb +20 -13
- data/lib/chef/http/ssl_policies.rb +2 -1
- data/lib/chef/json_compat.rb +9 -3
- data/lib/chef/knife.rb +2 -1
- data/lib/chef/knife/bootstrap.rb +12 -18
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-aix.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-full.erb +2 -2
- data/lib/chef/knife/cookbook_create.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +43 -8
- data/lib/chef/knife/core/bootstrap_context.rb +6 -11
- data/lib/chef/knife/core/object_loader.rb +5 -5
- data/lib/chef/knife/core/status_presenter.rb +156 -0
- data/lib/chef/knife/core/subcommand_loader.rb +6 -5
- data/lib/chef/knife/core/ui.rb +4 -4
- data/lib/chef/knife/data_bag_create.rb +7 -32
- data/lib/chef/knife/data_bag_edit.rb +24 -43
- data/lib/chef/knife/data_bag_from_file.rb +6 -31
- data/lib/chef/knife/data_bag_secret_options.rb +142 -0
- data/lib/chef/knife/data_bag_show.rb +19 -33
- data/lib/chef/knife/node_from_file.rb +9 -8
- data/lib/chef/knife/ssh.rb +0 -7
- data/lib/chef/knife/ssl_check.rb +70 -6
- data/lib/chef/knife/status.rb +11 -58
- data/lib/chef/mixin/command/unix.rb +2 -2
- data/lib/chef/mixin/convert_to_class_name.rb +54 -0
- data/lib/chef/mixin/descendants_tracker.rb +82 -0
- data/lib/chef/mixin/homebrew_user.rb +68 -0
- data/lib/chef/mixin/shell_out.rb +0 -4
- data/lib/chef/mixin/windows_architecture_helper.rb +16 -0
- data/lib/chef/mixin/windows_env_helper.rb +56 -0
- data/lib/chef/node.rb +2 -2
- data/lib/chef/node_map.rb +146 -0
- data/lib/chef/platform/provider_mapping.rb +11 -39
- data/lib/chef/platform/provider_priority_map.rb +80 -0
- data/lib/chef/platform/query_helpers.rb +5 -1
- data/lib/chef/platform/service_helpers.rb +113 -0
- data/lib/chef/provider.rb +24 -0
- data/lib/chef/provider/breakpoint.rb +2 -0
- data/lib/chef/provider/cookbook_file.rb +2 -0
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/cron/unix.rb +13 -9
- data/lib/chef/provider/deploy.rb +3 -2
- data/lib/chef/provider/deploy/revision.rb +4 -2
- data/lib/chef/provider/deploy/timestamped.rb +2 -0
- data/lib/chef/provider/directory.rb +2 -0
- data/lib/chef/provider/dsc_script.rb +179 -0
- data/lib/chef/provider/env.rb +25 -10
- data/lib/chef/provider/env/windows.rb +9 -16
- data/lib/chef/provider/erl_call.rb +2 -0
- data/lib/chef/provider/execute.rb +5 -2
- data/lib/chef/provider/file.rb +2 -0
- data/lib/chef/provider/git.rb +51 -23
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/pw.rb +9 -13
- data/lib/chef/provider/http_request.rb +2 -0
- data/lib/chef/provider/link.rb +3 -0
- data/lib/chef/provider/log.rb +2 -0
- data/lib/chef/provider/lwrp_base.rb +11 -9
- data/lib/chef/provider/mount/mount.rb +1 -1
- data/lib/chef/provider/package/aix.rb +2 -0
- data/lib/chef/provider/package/apt.rb +2 -0
- data/lib/chef/provider/package/dpkg.rb +2 -0
- data/lib/chef/provider/package/easy_install.rb +2 -0
- data/lib/chef/provider/package/freebsd/pkg.rb +2 -1
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
- data/lib/chef/provider/package/freebsd/port.rb +1 -9
- data/lib/chef/provider/package/homebrew.rb +127 -0
- data/lib/chef/provider/package/ips.rb +2 -0
- data/lib/chef/provider/package/macports.rb +3 -0
- data/lib/chef/provider/package/pacman.rb +5 -4
- data/lib/chef/provider/package/paludis.rb +4 -2
- data/lib/chef/provider/package/portage.rb +4 -1
- data/lib/chef/provider/package/rpm.rb +2 -0
- data/lib/chef/provider/package/rubygems.rb +4 -0
- data/lib/chef/provider/package/smartos.rb +2 -0
- data/lib/chef/provider/package/solaris.rb +2 -0
- data/lib/chef/provider/package/windows.rb +5 -2
- data/lib/chef/provider/package/yum.rb +2 -0
- data/lib/chef/provider/powershell_script.rb +3 -1
- data/lib/chef/provider/remote_directory.rb +25 -10
- data/lib/chef/provider/route.rb +2 -0
- data/lib/chef/provider/ruby_block.rb +2 -0
- data/lib/chef/provider/script.rb +6 -0
- data/lib/chef/provider/service/aix.rb +128 -0
- data/lib/chef/provider/service/aixinit.rb +117 -0
- data/lib/chef/provider/service/arch.rb +6 -0
- data/lib/chef/provider/service/debian.rb +35 -29
- data/lib/chef/provider/service/freebsd.rb +7 -1
- data/lib/chef/provider/service/gentoo.rb +5 -1
- data/lib/chef/provider/service/init.rb +2 -0
- data/lib/chef/provider/service/insserv.rb +15 -8
- data/lib/chef/provider/service/invokercd.rb +6 -0
- data/lib/chef/provider/service/macosx.rb +4 -1
- data/lib/chef/provider/service/redhat.rb +9 -3
- data/lib/chef/provider/service/simple.rb +2 -0
- data/lib/chef/provider/service/solaris.rb +2 -0
- data/lib/chef/provider/service/systemd.rb +7 -0
- data/lib/chef/provider/service/upstart.rb +7 -0
- data/lib/chef/provider/service/windows.rb +5 -0
- data/lib/chef/provider/subversion.rb +2 -0
- data/lib/chef/provider/template.rb +1 -0
- data/lib/chef/provider/user/dscl.rb +3 -2
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +2 -0
- data/lib/chef/provider_resolver.rb +103 -0
- data/lib/chef/providers.rb +6 -2
- data/lib/chef/recipe.rb +2 -0
- data/lib/chef/resource.rb +69 -78
- data/lib/chef/resource/apt_package.rb +3 -1
- data/lib/chef/resource/bash.rb +1 -0
- data/lib/chef/resource/bff_package.rb +0 -1
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/chef_gem.rb +1 -2
- data/lib/chef/resource/conditional.rb +26 -6
- data/lib/chef/resource/cookbook_file.rb +2 -3
- data/lib/chef/resource/csh.rb +1 -0
- data/lib/chef/resource/deploy.rb +0 -1
- data/lib/chef/resource/deploy_revision.rb +6 -1
- data/lib/chef/resource/directory.rb +1 -2
- data/lib/chef/resource/dpkg_package.rb +2 -1
- data/lib/chef/resource/dsc_script.rb +125 -0
- data/lib/chef/resource/easy_install_package.rb +2 -1
- data/lib/chef/resource/erl_call.rb +1 -0
- data/lib/chef/resource/execute.rb +26 -9
- data/lib/chef/resource/file.rb +1 -3
- data/lib/chef/resource/freebsd_package.rb +10 -23
- data/lib/chef/resource/gem_package.rb +2 -1
- data/lib/chef/resource/git.rb +2 -1
- data/lib/chef/resource/homebrew_package.rb +46 -0
- data/lib/chef/resource/http_request.rb +1 -0
- data/lib/chef/resource/ips_package.rb +3 -1
- data/lib/chef/resource/link.rb +1 -2
- data/lib/chef/resource/log.rb +4 -0
- data/lib/chef/resource/lwrp_base.rb +24 -15
- data/lib/chef/resource/macports_package.rb +3 -1
- data/lib/chef/resource/pacman_package.rb +2 -1
- data/lib/chef/resource/paludis_package.rb +3 -1
- data/lib/chef/resource/perl.rb +1 -0
- data/lib/chef/resource/powershell_script.rb +0 -2
- data/lib/chef/resource/python.rb +1 -1
- data/lib/chef/resource/remote_directory.rb +1 -2
- data/lib/chef/resource/remote_file.rb +1 -1
- data/lib/chef/resource/rpm_package.rb +2 -1
- data/lib/chef/resource/ruby.rb +1 -0
- data/lib/chef/resource/ruby_block.rb +3 -0
- data/lib/chef/resource/script.rb +2 -25
- data/lib/chef/resource/service.rb +0 -4
- data/lib/chef/resource/smartos_package.rb +3 -4
- data/lib/chef/resource/solaris_package.rb +7 -1
- data/lib/chef/resource/subversion.rb +0 -1
- data/lib/chef/resource/template.rb +2 -3
- data/lib/chef/resource/timestamped_deploy.rb +1 -2
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -1
- data/lib/chef/resource/windows_package.rb +3 -4
- data/lib/chef/resource/windows_script.rb +3 -0
- data/lib/chef/resource/windows_service.rb +2 -2
- data/lib/chef/resource/yum_package.rb +3 -1
- data/lib/chef/resource_collection.rb +50 -227
- data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -0
- data/lib/chef/resource_collection/resource_list.rb +89 -0
- data/lib/chef/resource_collection/resource_set.rb +170 -0
- data/lib/chef/resources.rb +2 -0
- data/lib/chef/role.rb +1 -1
- data/lib/chef/run_context.rb +5 -1
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/util/backup.rb +3 -2
- data/lib/chef/util/dsc/configuration_generator.rb +115 -0
- data/lib/chef/util/dsc/lcm_output_parser.rb +133 -0
- data/lib/chef/util/dsc/local_configuration_manager.rb +141 -0
- data/lib/chef/util/dsc/resource_info.rb +26 -0
- data/lib/chef/util/path_helper.rb +12 -0
- data/lib/chef/util/powershell/cmdlet.rb +136 -0
- data/lib/chef/util/powershell/cmdlet_result.rb +46 -0
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/system.rb +9 -0
- data/lib/chef/win32/version.rb +2 -0
- data/spec/.DS_Store +0 -0
- data/spec/data/.DS_Store +0 -0
- data/spec/data/bootstrap/test-hints.erb +1 -1
- data/spec/data/bootstrap/test.erb +1 -1
- data/spec/data/cb_version_cookbooks/cookbook2/files/test.txt +0 -0
- data/spec/data/cb_version_cookbooks/cookbook2/templates/test.erb +0 -0
- data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -0
- data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -0
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -0
- data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -0
- data/spec/data/lwrp/.DS_Store +0 -0
- data/spec/data/lwrp/providers/.DS_Store +0 -0
- data/spec/data/lwrp/providers/buck_passer.rb +9 -2
- data/spec/data/lwrp/resources/.DS_Store +0 -0
- data/spec/data/lwrp/resources/foo.rb +3 -2
- data/spec/data/lwrp_override/.DS_Store +0 -0
- data/spec/data/lwrp_override/providers/.DS_Store +0 -0
- data/spec/data/lwrp_override/providers/buck_passer.rb +5 -10
- data/spec/data/lwrp_override/resources/.DS_Store +0 -0
- data/spec/data/lwrp_override/resources/foo.rb +4 -3
- data/spec/functional/assets/chefinittest +34 -0
- data/spec/functional/assets/testchefsubsys +11 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +19 -16
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +82 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +3 -3
- data/spec/functional/knife/exec_spec.rb +1 -1
- data/spec/functional/resource/aix_service_spec.rb +136 -0
- data/spec/functional/resource/aixinit_service_spec.rb +211 -0
- data/spec/functional/resource/base.rb +1 -0
- data/spec/functional/resource/batch_spec.rb +4 -11
- data/spec/functional/resource/cron_spec.rb +7 -1
- data/spec/functional/resource/dsc_script_spec.rb +382 -0
- data/spec/functional/resource/env_spec.rb +54 -0
- data/spec/functional/resource/execute_spec.rb +113 -0
- data/spec/functional/resource/file_spec.rb +2 -0
- data/spec/functional/resource/group_spec.rb +7 -4
- data/spec/functional/resource/powershell_spec.rb +198 -185
- data/spec/functional/resource/rpm_spec.rb +5 -4
- data/spec/functional/resource/user/dscl_spec.rb +2 -1
- data/spec/functional/util/path_helper_spec.rb +37 -0
- data/spec/functional/util/powershell/cmdlet_spec.rb +114 -0
- data/spec/integration/client/client_spec.rb +1 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/chef_fs_data_store_spec.rb +1 -1
- data/spec/integration/knife/chef_repo_path_spec.rb +1 -1
- data/spec/integration/knife/chef_repository_file_system_spec.rb +1 -1
- data/spec/integration/knife/chefignore_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +1 -1
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
- data/spec/integration/knife/delete_spec.rb +1 -1
- data/spec/integration/knife/deps_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +1 -1
- data/spec/integration/knife/download_spec.rb +1 -1
- data/spec/integration/knife/list_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +1 -1
- data/spec/integration/knife/redirection_spec.rb +1 -1
- data/spec/integration/knife/serve_spec.rb +1 -1
- data/spec/integration/knife/show_spec.rb +1 -1
- data/spec/integration/knife/upload_spec.rb +4 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/spec_helper.rb +15 -0
- data/spec/support/chef_helpers.rb +1 -0
- data/spec/support/lib/chef/provider/snakeoil.rb +1 -0
- data/spec/support/lib/chef/resource/zen_follower.rb +1 -7
- data/spec/support/platform_helpers.rb +28 -0
- data/spec/support/shared/functional/file_resource.rb +6 -0
- data/spec/support/shared/functional/windows_script.rb +118 -0
- data/spec/support/shared/integration/integration_helper.rb +5 -2
- data/spec/support/shared/matchers/exit_with_code.rb +28 -0
- data/spec/support/shared/matchers/match_environment_variable.rb +17 -0
- data/spec/support/shared/shared_examples.rb +14 -0
- data/spec/support/shared/unit/execute_resource.rb +0 -7
- data/spec/support/shared/unit/resource/static_provider_resolution.rb +71 -0
- data/spec/support/shared/unit/script_resource.rb +1 -1
- data/spec/support/shared/unit/windows_script_resource.rb +35 -2
- data/spec/tiny_server.rb +1 -2
- data/spec/unit/api_client_spec.rb +5 -1
- data/spec/unit/application/{apply.rb → apply_spec.rb} +13 -5
- data/spec/unit/application/client_spec.rb +106 -13
- data/spec/unit/application/solo_spec.rb +25 -1
- data/spec/unit/client_spec.rb +1 -26
- data/spec/unit/config_fetcher_spec.rb +2 -1
- data/spec/unit/config_spec.rb +91 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +8 -0
- data/spec/unit/cookbook/metadata_spec.rb +43 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +8 -2
- data/spec/unit/cookbook_loader_spec.rb +4 -2
- data/spec/unit/cookbook_version_spec.rb +83 -2
- data/spec/unit/data_bag_item_spec.rb +5 -1
- data/spec/unit/data_bag_spec.rb +6 -1
- data/spec/unit/dsl/data_query_spec.rb +8 -110
- data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +95 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +16 -23
- data/spec/unit/environment_spec.rb +6 -2
- data/spec/unit/exceptions_spec.rb +6 -0
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +16 -15
- data/spec/unit/json_compat_spec.rb +12 -2
- data/spec/unit/knife/bootstrap_spec.rb +16 -63
- data/spec/unit/knife/cookbook_site_share_spec.rb +59 -6
- data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -37
- data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
- data/spec/unit/knife/core/ui_spec.rb +28 -0
- data/spec/unit/knife/data_bag_create_spec.rb +63 -71
- data/spec/unit/knife/data_bag_edit_spec.rb +83 -49
- data/spec/unit/knife/data_bag_from_file_spec.rb +104 -126
- data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -0
- data/spec/unit/knife/data_bag_show_spec.rb +74 -72
- data/spec/unit/knife/environment_from_file_spec.rb +3 -2
- data/spec/unit/knife/ssl_check_spec.rb +46 -1
- data/spec/unit/knife/status_spec.rb +1 -2
- data/spec/unit/knife_spec.rb +18 -1
- data/spec/unit/lwrp_spec.rb +29 -8
- data/spec/unit/mixin/homebrew_user_spec.rb +100 -0
- data/spec/unit/node_map_spec.rb +155 -0
- data/spec/unit/node_spec.rb +11 -0
- data/spec/unit/platform/query_helpers_spec.rb +23 -0
- data/spec/unit/platform_spec.rb +23 -0
- data/spec/unit/provider/breakpoint_spec.rb +9 -9
- data/spec/unit/provider/cookbook_file/content_spec.rb +3 -3
- data/spec/unit/provider/cookbook_file_spec.rb +1 -1
- data/spec/unit/provider/cron/unix_spec.rb +78 -60
- data/spec/unit/provider/cron_spec.rb +175 -175
- data/spec/unit/provider/deploy/revision_spec.rb +22 -21
- data/spec/unit/provider/deploy/timestamped_spec.rb +3 -3
- data/spec/unit/provider/deploy_spec.rb +231 -230
- data/spec/unit/provider/directory_spec.rb +55 -55
- data/spec/unit/provider/dsc_script_spec.rb +174 -0
- data/spec/unit/provider/env/windows_spec.rb +70 -34
- data/spec/unit/provider/env_spec.rb +95 -49
- data/spec/unit/provider/erl_call_spec.rb +9 -9
- data/spec/unit/provider/execute_spec.rb +43 -27
- data/spec/unit/provider/file/content_spec.rb +9 -9
- data/spec/unit/provider/file_spec.rb +1 -1
- data/spec/unit/provider/git_spec.rb +221 -159
- data/spec/unit/provider/group/dscl_spec.rb +64 -63
- data/spec/unit/provider/group/gpasswd_spec.rb +14 -14
- data/spec/unit/provider/group/groupadd_spec.rb +33 -33
- data/spec/unit/provider/group/groupmod_spec.rb +23 -23
- data/spec/unit/provider/group/pw_spec.rb +21 -21
- data/spec/unit/provider/group/usermod_spec.rb +20 -20
- data/spec/unit/provider/group/windows_spec.rb +15 -15
- data/spec/unit/provider/group_spec.rb +76 -76
- data/spec/unit/provider/http_request_spec.rb +30 -30
- data/spec/unit/provider/ifconfig/aix_spec.rb +20 -20
- data/spec/unit/provider/ifconfig/debian_spec.rb +25 -9
- data/spec/unit/provider/ifconfig/redhat_spec.rb +13 -13
- data/spec/unit/provider/ifconfig_spec.rb +43 -43
- data/spec/unit/provider/link_spec.rb +60 -60
- data/spec/unit/provider/log_spec.rb +0 -4
- data/spec/unit/provider/mdadm_spec.rb +23 -23
- data/spec/unit/provider/mount/aix_spec.rb +17 -17
- data/spec/unit/provider/mount/mount_spec.rb +115 -119
- data/spec/unit/provider/mount/solaris_spec.rb +72 -72
- data/spec/unit/provider/mount/windows_spec.rb +24 -24
- data/spec/unit/provider/ohai_spec.rb +11 -11
- data/spec/unit/provider/package/aix_spec.rb +34 -34
- data/spec/unit/provider/package/apt_spec.rb +36 -36
- data/spec/unit/provider/package/dpkg_spec.rb +27 -27
- data/spec/unit/provider/package/easy_install_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +53 -53
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +24 -24
- data/spec/unit/provider/package/freebsd/port_spec.rb +45 -35
- data/spec/unit/provider/package/homebrew_spec.rb +266 -0
- data/spec/unit/provider/package/ips_spec.rb +34 -34
- data/spec/unit/provider/package/macports_spec.rb +49 -49
- data/spec/unit/provider/package/pacman_spec.rb +35 -39
- data/spec/unit/provider/package/paludis_spec.rb +20 -20
- data/spec/unit/provider/package/portage_spec.rb +38 -38
- data/spec/unit/provider/package/rpm_spec.rb +29 -29
- data/spec/unit/provider/package/rubygems_spec.rb +284 -270
- data/spec/unit/provider/package/smartos_spec.rb +15 -15
- data/spec/unit/provider/package/solaris_spec.rb +35 -35
- data/spec/unit/provider/package/windows/msi_spec.rb +3 -3
- data/spec/unit/provider/package/windows_spec.rb +6 -6
- data/spec/unit/provider/package/yum_spec.rb +416 -416
- data/spec/unit/provider/package/zypper_spec.rb +47 -47
- data/spec/unit/provider/package_spec.rb +107 -107
- data/spec/unit/provider/powershell_spec.rb +1 -1
- data/spec/unit/provider/registry_key_spec.rb +61 -61
- data/spec/unit/provider/remote_directory_spec.rb +36 -36
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +24 -24
- data/spec/unit/provider/remote_file/content_spec.rb +45 -45
- data/spec/unit/provider/remote_file/fetcher_spec.rb +9 -9
- data/spec/unit/provider/remote_file/ftp_spec.rb +32 -32
- data/spec/unit/provider/remote_file/http_spec.rb +44 -44
- data/spec/unit/provider/remote_file/local_file_spec.rb +9 -9
- data/spec/unit/provider/remote_file_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +63 -63
- data/spec/unit/provider/ruby_block_spec.rb +4 -4
- data/spec/unit/provider/script_spec.rb +12 -12
- data/spec/unit/provider/service/aix_service_spec.rb +181 -0
- data/spec/unit/provider/service/aixinit_service_spec.rb +269 -0
- data/spec/unit/provider/service/arch_service_spec.rb +48 -48
- data/spec/unit/provider/service/debian_service_spec.rb +40 -40
- data/spec/unit/provider/service/gentoo_service_spec.rb +28 -28
- data/spec/unit/provider/service/init_service_spec.rb +39 -39
- data/spec/unit/provider/service/insserv_service_spec.rb +8 -8
- data/spec/unit/provider/service/invokercd_service_spec.rb +35 -35
- data/spec/unit/provider/service/macosx_spec.rb +49 -49
- data/spec/unit/provider/service/redhat_spec.rb +27 -27
- data/spec/unit/provider/service/simple_service_spec.rb +28 -28
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +43 -46
- data/spec/unit/provider/service/systemd_service_spec.rb +63 -63
- data/spec/unit/provider/service/upstart_service_spec.rb +78 -78
- data/spec/unit/provider/service/windows_spec.rb +92 -92
- data/spec/unit/provider/service_spec.rb +40 -40
- data/spec/unit/provider/subversion_spec.rb +80 -80
- data/spec/unit/provider/template/content_spec.rb +9 -9
- data/spec/unit/provider/template_spec.rb +6 -6
- data/spec/unit/provider/user/dscl_spec.rb +170 -167
- data/spec/unit/provider/user/pw_spec.rb +48 -48
- data/spec/unit/provider/user/solaris_spec.rb +8 -8
- data/spec/unit/provider/user/useradd_spec.rb +1 -1
- data/spec/unit/provider/user/windows_spec.rb +26 -26
- data/spec/unit/provider/user_spec.rb +72 -72
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +4 -4
- data/spec/unit/provider_resolver_spec.rb +387 -0
- data/spec/unit/recipe_spec.rb +33 -12
- data/spec/unit/resource/apt_package_spec.rb +10 -13
- data/spec/unit/resource/bash_spec.rb +4 -4
- data/spec/unit/resource/batch_spec.rb +1 -1
- data/spec/unit/resource/breakpoint_spec.rb +11 -7
- data/spec/unit/resource/chef_gem_spec.rb +8 -15
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
- data/spec/unit/resource/conditional_spec.rb +35 -16
- data/spec/unit/resource/cookbook_file_spec.rb +13 -13
- data/spec/unit/resource/cron_spec.rb +37 -37
- data/spec/unit/resource/csh_spec.rb +4 -4
- data/spec/unit/resource/deploy_revision_spec.rb +13 -18
- data/spec/unit/resource/deploy_spec.rb +60 -55
- data/spec/unit/resource/directory_spec.rb +18 -18
- data/spec/unit/resource/dpkg_package_spec.rb +8 -14
- data/spec/unit/resource/dsc_script_spec.rb +98 -0
- data/spec/unit/resource/easy_install_package_spec.rb +9 -18
- data/spec/unit/resource/env_spec.rb +12 -12
- data/spec/unit/resource/erl_call_spec.rb +11 -11
- data/spec/unit/resource/execute_spec.rb +5 -0
- data/spec/unit/resource/file_spec.rb +29 -29
- data/spec/unit/resource/freebsd_package_spec.rb +11 -12
- data/spec/unit/resource/gem_package_spec.rb +8 -15
- data/spec/unit/resource/git_spec.rb +12 -8
- data/spec/unit/resource/group_spec.rb +27 -27
- data/spec/unit/resource/homebrew_package_spec.rb +50 -0
- data/spec/unit/resource/http_request_spec.rb +6 -6
- data/spec/unit/resource/ifconfig_spec.rb +8 -8
- data/spec/unit/resource/ips_package_spec.rb +10 -13
- data/spec/unit/resource/link_spec.rb +25 -25
- data/spec/unit/resource/log_spec.rb +9 -9
- data/spec/unit/resource/macports_package_spec.rb +8 -13
- data/spec/unit/resource/mdadm_spec.rb +18 -18
- data/spec/unit/resource/mount_spec.rb +45 -45
- data/spec/unit/resource/ohai_spec.rb +7 -7
- data/spec/unit/resource/package_spec.rb +12 -12
- data/spec/unit/resource/pacman_package_spec.rb +8 -14
- data/spec/unit/resource/perl_spec.rb +4 -4
- data/spec/unit/resource/portage_package_spec.rb +3 -3
- data/spec/unit/resource/powershell_spec.rb +7 -7
- data/spec/unit/resource/python_spec.rb +4 -4
- data/spec/unit/resource/registry_key_spec.rb +32 -32
- data/spec/unit/resource/remote_directory_spec.rb +17 -17
- data/spec/unit/resource/remote_file_spec.rb +41 -41
- data/spec/unit/resource/route_spec.rb +19 -19
- data/spec/unit/resource/rpm_package_spec.rb +9 -13
- data/spec/unit/resource/ruby_block_spec.rb +8 -8
- data/spec/unit/resource/ruby_spec.rb +4 -4
- data/spec/unit/resource/scm_spec.rb +40 -40
- data/spec/unit/resource/script_spec.rb +2 -2
- data/spec/unit/resource/service_spec.rb +37 -47
- data/spec/unit/resource/smartos_package_spec.rb +10 -15
- data/spec/unit/resource/solaris_package_spec.rb +13 -28
- data/spec/unit/resource/subversion_spec.rb +16 -12
- data/spec/unit/resource/template_spec.rb +35 -35
- data/spec/unit/resource/timestamped_deploy_spec.rb +30 -4
- data/spec/unit/resource/user_spec.rb +23 -23
- data/spec/unit/resource/windows_package_spec.rb +17 -10
- data/spec/unit/resource/windows_service_spec.rb +9 -6
- data/spec/unit/resource/yum_package_spec.rb +16 -21
- data/spec/unit/resource_collection/resource_list_spec.rb +137 -0
- data/spec/unit/resource_collection/resource_set_spec.rb +199 -0
- data/spec/unit/resource_collection_spec.rb +73 -92
- data/spec/unit/resource_definition_spec.rb +38 -40
- data/spec/unit/resource_reporter_spec.rb +3 -3
- data/spec/unit/resource_spec.rb +68 -33
- data/spec/unit/rest_spec.rb +83 -76
- data/spec/unit/role_spec.rb +5 -0
- data/spec/unit/run_list_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +245 -238
- data/spec/unit/shell/shell_ext_spec.rb +1 -1
- data/spec/unit/user_spec.rb +5 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +171 -0
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +169 -0
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +139 -0
- data/spec/unit/util/path_helper_spec.rb +23 -1
- data/spec/unit/util/powershell/cmdlet_spec.rb +106 -0
- data/spec/unit/workstation_config_loader_spec.rb +1 -1
- metadata +303 -196
- checksums.yaml +0 -7
- data/distro/README +0 -2
- data/distro/arch/etc/conf.d/chef-client.conf +0 -5
- data/distro/arch/etc/conf.d/chef-expander.conf +0 -8
- data/distro/arch/etc/conf.d/chef-server-webui.conf +0 -10
- data/distro/arch/etc/conf.d/chef-server.conf +0 -10
- data/distro/arch/etc/conf.d/chef-solr.conf +0 -8
- data/distro/arch/etc/rc.d/chef-client +0 -90
- data/distro/arch/etc/rc.d/chef-expander +0 -78
- data/distro/arch/etc/rc.d/chef-server +0 -78
- data/distro/arch/etc/rc.d/chef-server-webui +0 -78
- data/distro/arch/etc/rc.d/chef-solr +0 -78
- data/distro/debian/etc/default/chef-client +0 -4
- data/distro/debian/etc/default/chef-expander +0 -8
- data/distro/debian/etc/default/chef-server +0 -9
- data/distro/debian/etc/default/chef-server-webui +0 -9
- data/distro/debian/etc/default/chef-solr +0 -8
- data/distro/debian/etc/init.d/chef-client +0 -212
- data/distro/debian/etc/init.d/chef-expander +0 -176
- data/distro/debian/etc/init.d/chef-server +0 -122
- data/distro/debian/etc/init.d/chef-server-webui +0 -123
- data/distro/debian/etc/init.d/chef-solr +0 -176
- data/distro/debian/etc/init/chef-client.conf +0 -17
- data/distro/debian/etc/init/chef-expander.conf +0 -17
- data/distro/debian/etc/init/chef-server-webui.conf +0 -17
- data/distro/debian/etc/init/chef-server.conf +0 -17
- data/distro/debian/etc/init/chef-solr.conf +0 -17
- data/distro/redhat/etc/init.d/chef-client +0 -121
- data/distro/redhat/etc/init.d/chef-expander +0 -104
- data/distro/redhat/etc/init.d/chef-server +0 -112
- data/distro/redhat/etc/init.d/chef-server-webui +0 -112
- data/distro/redhat/etc/init.d/chef-solr +0 -104
- data/distro/redhat/etc/logrotate.d/chef-client +0 -8
- data/distro/redhat/etc/logrotate.d/chef-expander +0 -8
- data/distro/redhat/etc/logrotate.d/chef-server +0 -8
- data/distro/redhat/etc/logrotate.d/chef-server-webui +0 -8
- data/distro/redhat/etc/logrotate.d/chef-solr +0 -8
- data/distro/redhat/etc/sysconfig/chef-client +0 -15
- data/distro/redhat/etc/sysconfig/chef-expander +0 -7
- data/distro/redhat/etc/sysconfig/chef-server +0 -14
- data/distro/redhat/etc/sysconfig/chef-server-webui +0 -14
- data/distro/redhat/etc/sysconfig/chef-solr +0 -8
- data/distro/windows/service_manager.rb +0 -20
- data/lib/chef/resource_platform_map.rb +0 -151
- data/spec/support/shared/matchers.rb +0 -17
- data/spec/unit/resource_platform_map_spec.rb +0 -164
@@ -0,0 +1,95 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Tyler Ball (<tball@getchef.com>)
|
3
|
+
# Copyright:: Copyright (c) 2010-2014 Opscode, 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
|
+
require 'chef/encrypted_data_bag_item/check_encrypted'
|
21
|
+
|
22
|
+
class CheckEncryptedTester
|
23
|
+
include Chef::EncryptedDataBagItem::CheckEncrypted
|
24
|
+
end
|
25
|
+
|
26
|
+
describe Chef::EncryptedDataBagItem::CheckEncrypted do
|
27
|
+
|
28
|
+
let(:tester) { CheckEncryptedTester.new }
|
29
|
+
|
30
|
+
it "detects the item is not encrypted when the data is empty" do
|
31
|
+
expect(tester.encrypted?({})).to eq(false)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "detects the item is not encrypted when the data only contains an id" do
|
35
|
+
expect(tester.encrypted?({id: "foo"})).to eq(false)
|
36
|
+
end
|
37
|
+
|
38
|
+
context "when the item is encrypted" do
|
39
|
+
|
40
|
+
let(:default_secret) { "abc123SECRET" }
|
41
|
+
let(:item_name) { "item_name" }
|
42
|
+
let(:raw_data) {{
|
43
|
+
"id" => item_name,
|
44
|
+
"greeting" => "hello",
|
45
|
+
"nested" => {
|
46
|
+
"a1" => [1, 2, 3],
|
47
|
+
"a2" => { "b1" => true }
|
48
|
+
}
|
49
|
+
}}
|
50
|
+
|
51
|
+
let(:version) { 1 }
|
52
|
+
let(:encoded_data) do
|
53
|
+
Chef::Config[:data_bag_encrypt_version] = version
|
54
|
+
Chef::EncryptedDataBagItem.encrypt_data_bag_item(raw_data, default_secret)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "does not detect encryption when the item version is unknown" do
|
58
|
+
# It shouldn't be possible for someone to normally encrypt an item with an unknown version - they would have to
|
59
|
+
# do something funky like encrypting it and then manually changing the version
|
60
|
+
modified_encoded_data = encoded_data
|
61
|
+
modified_encoded_data["greeting"]["version"] = 4
|
62
|
+
expect(tester.encrypted?(modified_encoded_data)).to eq(false)
|
63
|
+
end
|
64
|
+
|
65
|
+
shared_examples_for "encryption detected" do
|
66
|
+
it "detects encrypted data bag" do
|
67
|
+
expect( encryptor ).to receive(:encryptor_keys).at_least(:once).and_call_original
|
68
|
+
expect(tester.encrypted?(encoded_data)).to eq(true)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context "when encryption version is 1" do
|
73
|
+
include_examples "encryption detected" do
|
74
|
+
let(:version) { 1 }
|
75
|
+
let(:encryptor) { Chef::EncryptedDataBagItem::Encryptor::Version1Encryptor }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context "when encryption version is 2" do
|
80
|
+
include_examples "encryption detected" do
|
81
|
+
let(:version) { 2 }
|
82
|
+
let(:encryptor) { Chef::EncryptedDataBagItem::Encryptor::Version2Encryptor }
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context "when encryption version is 3", :aes_256_gcm_only, :ruby_20_only do
|
87
|
+
include_examples "encryption detected" do
|
88
|
+
let(:version) { 3 }
|
89
|
+
let(:encryptor) { Chef::EncryptedDataBagItem::Encryptor::Version3Encryptor }
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
@@ -97,7 +97,7 @@ describe Chef::EncryptedDataBagItem::Encryptor do
|
|
97
97
|
Chef::Config[:data_bag_encrypt_version] = 3
|
98
98
|
end
|
99
99
|
|
100
|
-
context "on supported platforms", :
|
100
|
+
context "on supported platforms", :aes_256_gcm_only, :ruby_20_only do
|
101
101
|
|
102
102
|
it "creates a version 3 encryptor" do
|
103
103
|
encryptor.should be_a_instance_of(Chef::EncryptedDataBagItem::Encryptor::Version3Encryptor)
|
@@ -168,10 +168,21 @@ describe Chef::EncryptedDataBagItem::Decryptor do
|
|
168
168
|
let(:plaintext_data) { {"foo" => "bar"} }
|
169
169
|
let(:encryption_key) { "passwd" }
|
170
170
|
let(:decryption_key) { encryption_key }
|
171
|
+
let(:json_wrapped_data) { Chef::JSONCompat.to_json({"json_wrapper" => plaintext_data}) }
|
172
|
+
|
173
|
+
shared_examples "decryption examples" do
|
174
|
+
it "decrypts the encrypted value" do
|
175
|
+
decryptor.decrypted_data.should eq(json_wrapped_data)
|
176
|
+
end
|
177
|
+
|
178
|
+
it "unwraps the encrypted data and returns it" do
|
179
|
+
decryptor.for_decrypted_item.should eq plaintext_data
|
180
|
+
end
|
181
|
+
end
|
171
182
|
|
172
183
|
context "when decrypting a version 3 (JSON+aes-256-gcm+random iv+auth tag) encrypted value" do
|
173
184
|
|
174
|
-
context "on supported platforms", :
|
185
|
+
context "on supported platforms", :aes_256_gcm_only, :ruby_20_only do
|
175
186
|
|
176
187
|
let(:encrypted_value) do
|
177
188
|
Chef::EncryptedDataBagItem::Encryptor::Version3Encryptor.new(plaintext_data, encryption_key).for_encrypted_item
|
@@ -179,13 +190,7 @@ describe Chef::EncryptedDataBagItem::Decryptor do
|
|
179
190
|
|
180
191
|
let(:bogus_auth_tag) { "bogus_auth_tag" }
|
181
192
|
|
182
|
-
|
183
|
-
decryptor.decrypted_data.should eq({"json_wrapper" => plaintext_data}.to_json)
|
184
|
-
end
|
185
|
-
|
186
|
-
it "unwraps the encrypted data and returns it" do
|
187
|
-
decryptor.for_decrypted_item.should eq plaintext_data
|
188
|
-
end
|
193
|
+
include_examples "decryption examples"
|
189
194
|
|
190
195
|
it "rejects the data if the authentication tag is wrong" do
|
191
196
|
encrypted_value["auth_tag"] = bogus_auth_tag
|
@@ -240,13 +245,7 @@ describe Chef::EncryptedDataBagItem::Decryptor do
|
|
240
245
|
Base64.encode64(raw_hmac)
|
241
246
|
end
|
242
247
|
|
243
|
-
|
244
|
-
decryptor.decrypted_data.should eq({"json_wrapper" => plaintext_data}.to_json)
|
245
|
-
end
|
246
|
-
|
247
|
-
it "unwraps the encrypted data and returns it" do
|
248
|
-
decryptor.for_decrypted_item.should eq plaintext_data
|
249
|
-
end
|
248
|
+
include_examples "decryption examples"
|
250
249
|
|
251
250
|
it "rejects the data if the hmac is wrong" do
|
252
251
|
encrypted_value["hmac"] = bogus_hmac
|
@@ -270,13 +269,7 @@ describe Chef::EncryptedDataBagItem::Decryptor do
|
|
270
269
|
decryptor.should be_a_instance_of Chef::EncryptedDataBagItem::Decryptor::Version1Decryptor
|
271
270
|
end
|
272
271
|
|
273
|
-
|
274
|
-
decryptor.decrypted_data.should eq({"json_wrapper" => plaintext_data}.to_json)
|
275
|
-
end
|
276
|
-
|
277
|
-
it "unwraps the encrypted data and returns it" do
|
278
|
-
decryptor.for_decrypted_item.should eq plaintext_data
|
279
|
-
end
|
272
|
+
include_examples "decryption examples"
|
280
273
|
|
281
274
|
describe "and the decryption step returns invalid data" do
|
282
275
|
it "raises a decryption failure error" do
|
@@ -196,7 +196,7 @@ describe Chef::Environment do
|
|
196
196
|
|
197
197
|
%w{name description cookbook_versions}.each do |t|
|
198
198
|
it "should include '#{t}'" do
|
199
|
-
@json.should =~ /"#{t}":#{Regexp.escape(@environment.send(t.to_sym)
|
199
|
+
@json.should =~ /"#{t}":#{Regexp.escape(Chef::JSONCompat.to_json(@environment.send(t.to_sym)))}/
|
200
200
|
end
|
201
201
|
end
|
202
202
|
|
@@ -207,6 +207,10 @@ describe Chef::Environment do
|
|
207
207
|
it "should include 'chef_type'" do
|
208
208
|
@json.should =~ /"chef_type":"environment"/
|
209
209
|
end
|
210
|
+
|
211
|
+
include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
|
212
|
+
let(:jsonable) { @environment }
|
213
|
+
end
|
210
214
|
end
|
211
215
|
|
212
216
|
describe "from_json" do
|
@@ -222,7 +226,7 @@ describe Chef::Environment do
|
|
222
226
|
"json_class" => "Chef::Environment",
|
223
227
|
"chef_type" => "environment"
|
224
228
|
}
|
225
|
-
@environment = Chef::JSONCompat.from_json(@data
|
229
|
+
@environment = Chef::JSONCompat.from_json(Chef::JSONCompat.to_json(@data))
|
226
230
|
end
|
227
231
|
|
228
232
|
it "should return a Chef::Environment" do
|
@@ -74,5 +74,11 @@ describe Chef::Exceptions do
|
|
74
74
|
it "should have an exception class of #{exception} which inherits from #{expected_super_class}" do
|
75
75
|
lambda{ raise exception }.should raise_error(expected_super_class)
|
76
76
|
end
|
77
|
+
|
78
|
+
if exception.methods.include?(:to_json)
|
79
|
+
include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
|
80
|
+
let(:jsonable) { exception }
|
81
|
+
end
|
82
|
+
end
|
77
83
|
end
|
78
84
|
end
|
@@ -19,37 +19,38 @@
|
|
19
19
|
require 'spec_helper'
|
20
20
|
|
21
21
|
describe Chef::GuardInterpreter::ResourceGuardInterpreter do
|
22
|
-
|
22
|
+
let(:node) do
|
23
23
|
node = Chef::Node.new
|
24
24
|
|
25
25
|
node.default["kernel"] = Hash.new
|
26
26
|
node.default["kernel"][:machine] = :x86_64.to_s
|
27
|
+
node
|
28
|
+
end
|
27
29
|
|
28
|
-
|
30
|
+
let(:run_context) { Chef::RunContext.new(node, nil, nil) }
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
-
|
32
|
+
let(:resource) do
|
33
|
+
resource = Chef::Resource.new("powershell_unit_test", run_context)
|
34
|
+
resource.stub(:run_action)
|
35
|
+
resource.stub(:updated).and_return(true)
|
36
|
+
resource
|
33
37
|
end
|
34
38
|
|
35
|
-
describe "when evaluating a guard resource" do
|
36
|
-
let(:resource) { @resource }
|
37
39
|
|
38
|
-
|
40
|
+
describe "get_interpreter_resource" do
|
41
|
+
it "allows the guard interpreter to be set to Chef::Resource::Script" do
|
39
42
|
resource.guard_interpreter(:script)
|
40
|
-
|
41
|
-
resource.only_if("echo hi")
|
43
|
+
expect { Chef::GuardInterpreter::ResourceGuardInterpreter.new(resource, "echo hi", nil) }.not_to raise_error
|
42
44
|
end
|
43
45
|
|
44
|
-
it "
|
46
|
+
it "allows the guard interpreter to be set to Chef::Resource::PowershellScript derived indirectly from Chef::Resource::Script" do
|
45
47
|
resource.guard_interpreter(:powershell_script)
|
46
|
-
|
47
|
-
resource.only_if("echo hi")
|
48
|
+
expect { Chef::GuardInterpreter::ResourceGuardInterpreter.new(resource, "echo hi", nil) }.not_to raise_error
|
48
49
|
end
|
49
50
|
|
50
|
-
it "
|
51
|
+
it "raises an exception if guard_interpreter is set to a resource not derived from Chef::Resource::Script" do
|
51
52
|
resource.guard_interpreter(:file)
|
52
|
-
expect {
|
53
|
+
expect { Chef::GuardInterpreter::ResourceGuardInterpreter.new(resource, "echo hi", nil) }.to raise_error(ArgumentError)
|
53
54
|
end
|
54
55
|
end
|
55
56
|
end
|
@@ -58,13 +58,17 @@ describe Chef::JSONCompat do
|
|
58
58
|
describe "when pretty printing an object that defines #to_json" do
|
59
59
|
class Foo
|
60
60
|
def to_json(*a)
|
61
|
-
{'foo' => 1234}
|
61
|
+
Chef::JSONCompat.to_json({'foo' => 1234, 'bar' => {'baz' => 5678}}, *a)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
65
|
it "should work" do
|
66
66
|
f = Foo.new
|
67
|
-
expect(Chef::JSONCompat.to_json_pretty(f)).to eql("{\n \"foo\": 1234\n}\n")
|
67
|
+
expect(Chef::JSONCompat.to_json_pretty(f)).to eql("{\n \"foo\": 1234,\n \"bar\": {\n \"baz\": 5678\n }\n}\n")
|
68
|
+
end
|
69
|
+
|
70
|
+
include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
|
71
|
+
let(:jsonable) { Foo.new }
|
68
72
|
end
|
69
73
|
end
|
70
74
|
|
@@ -97,4 +101,10 @@ describe Chef::JSONCompat do
|
|
97
101
|
end
|
98
102
|
end
|
99
103
|
end
|
104
|
+
|
105
|
+
it "should define .to_json on all classes" do
|
106
|
+
class SomeClass; end
|
107
|
+
|
108
|
+
expect(SomeClass.new.respond_to?(:to_json)).to eq(true)
|
109
|
+
end
|
100
110
|
end
|
@@ -22,6 +22,9 @@ Chef::Knife::Bootstrap.load_deps
|
|
22
22
|
require 'net/ssh'
|
23
23
|
|
24
24
|
describe Chef::Knife::Bootstrap do
|
25
|
+
before do
|
26
|
+
Chef::Platform.stub(:windows?) { false }
|
27
|
+
end
|
25
28
|
let(:knife) do
|
26
29
|
Chef::Log.logger = Logger.new(StringIO.new)
|
27
30
|
Chef::Config[:knife][:bootstrap_template] = bootstrap_template unless bootstrap_template.nil?
|
@@ -30,6 +33,7 @@ describe Chef::Knife::Bootstrap do
|
|
30
33
|
k.merge_configs
|
31
34
|
|
32
35
|
k.ui.stub(:stderr).and_return(stderr)
|
36
|
+
allow(k).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(false)
|
33
37
|
k
|
34
38
|
end
|
35
39
|
|
@@ -221,10 +225,6 @@ describe Chef::Knife::Bootstrap do
|
|
221
225
|
k
|
222
226
|
end
|
223
227
|
|
224
|
-
# Include a data bag secret in the options to prevent Bootstrap from
|
225
|
-
# attempting to access /etc/chef/encrypted_data_bag_secret, which
|
226
|
-
# can fail when the file exists but can't be accessed by the user
|
227
|
-
# running the tests.
|
228
228
|
let(:options){ ["--bootstrap-no-proxy", setting, "-s", "foo"] }
|
229
229
|
let(:template_file) { File.expand_path(File.join(CHEF_SPEC_DATA, "bootstrap", "no_proxy.erb")) }
|
230
230
|
let(:rendered_template) do
|
@@ -290,7 +290,6 @@ describe Chef::Knife::Bootstrap do
|
|
290
290
|
|
291
291
|
describe "specifying the encrypted data bag secret key" do
|
292
292
|
let(:secret) { "supersekret" }
|
293
|
-
let(:secret_file) { File.join(CHEF_SPEC_DATA, 'bootstrap', 'encrypted_data_bag_secret') }
|
294
293
|
let(:options) { [] }
|
295
294
|
let(:bootstrap_template) { File.expand_path(File.join(CHEF_SPEC_DATA, "bootstrap", "secret.erb")) }
|
296
295
|
let(:rendered_template) do
|
@@ -299,64 +298,22 @@ describe Chef::Knife::Bootstrap do
|
|
299
298
|
knife.render_template
|
300
299
|
end
|
301
300
|
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
rendered_template.should match(%r{#{secret}})
|
307
|
-
end
|
308
|
-
|
309
|
-
it "renders the client.rb with an encrypted_data_bag_secret entry" do
|
310
|
-
rendered_template.should match(%r{encrypted_data_bag_secret\s*"/etc/chef/encrypted_data_bag_secret"})
|
311
|
-
end
|
301
|
+
it "creates a secret file" do
|
302
|
+
expect(knife).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(true)
|
303
|
+
expect(knife).to receive(:read_secret).and_return(secret)
|
304
|
+
rendered_template.should match(%r{#{secret}})
|
312
305
|
end
|
313
306
|
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
it "creates a secret file" do
|
319
|
-
rendered_template.should match(%r{#{secret}})
|
320
|
-
end
|
321
|
-
|
322
|
-
it "renders the client.rb with an encrypted_data_bag_secret entry" do
|
323
|
-
rendered_template.should match(%r{encrypted_data_bag_secret\s*"/etc/chef/encrypted_data_bag_secret"})
|
324
|
-
end
|
325
|
-
end
|
326
|
-
|
327
|
-
context "secret via config" do
|
328
|
-
before do
|
329
|
-
Chef::Config[:knife][:secret] = secret
|
330
|
-
end
|
331
|
-
|
332
|
-
it "creates a secret file" do
|
333
|
-
rendered_template.should match(%r{#{secret}})
|
334
|
-
end
|
335
|
-
|
336
|
-
it "renders the client.rb with an encrypted_data_bag_secret entry" do
|
337
|
-
rendered_template.should match(%r{encrypted_data_bag_secret\s*"/etc/chef/encrypted_data_bag_secret"})
|
338
|
-
end
|
307
|
+
it "renders the client.rb with an encrypted_data_bag_secret entry" do
|
308
|
+
expect(knife).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(true)
|
309
|
+
expect(knife).to receive(:read_secret).and_return(secret)
|
310
|
+
rendered_template.should match(%r{encrypted_data_bag_secret\s*"/etc/chef/encrypted_data_bag_secret"})
|
339
311
|
end
|
340
312
|
|
341
|
-
context "secret-file via config" do
|
342
|
-
let(:secret) { IO.read(secret_file) }
|
343
|
-
|
344
|
-
before do
|
345
|
-
Chef::Config[:knife][:secret_file] = secret_file
|
346
|
-
end
|
347
|
-
|
348
|
-
it "creates a secret file" do
|
349
|
-
rendered_template.should match(%r{#{secret}})
|
350
|
-
end
|
351
|
-
|
352
|
-
it "renders the client.rb with an encrypted_data_bag_secret entry" do
|
353
|
-
rendered_template.should match(%r{encrypted_data_bag_secret\s*"/etc/chef/encrypted_data_bag_secret"})
|
354
|
-
end
|
355
|
-
end
|
356
313
|
end
|
357
314
|
|
358
315
|
describe "when transferring trusted certificates" do
|
359
|
-
let(:trusted_certs_dir) { File.join(
|
316
|
+
let(:trusted_certs_dir) { Chef::Util::PathHelper.cleanpath(File.join(File.dirname(__FILE__), '../../data/trusted_certs')) }
|
360
317
|
|
361
318
|
let(:rendered_template) do
|
362
319
|
knife.merge_configs
|
@@ -366,7 +323,7 @@ describe Chef::Knife::Bootstrap do
|
|
366
323
|
before do
|
367
324
|
Chef::Config[:trusted_certs_dir] = trusted_certs_dir
|
368
325
|
IO.stub(:read).and_call_original
|
369
|
-
IO.stub(:read).with(
|
326
|
+
IO.stub(:read).with(File.expand_path(Chef::Config[:validation_key])).and_return("")
|
370
327
|
end
|
371
328
|
|
372
329
|
def certificates
|
@@ -461,12 +418,6 @@ describe Chef::Knife::Bootstrap do
|
|
461
418
|
context "from the knife config file" do
|
462
419
|
let(:knife_ssh) do
|
463
420
|
knife.name_args = ["config.example.com"]
|
464
|
-
knife.config[:ssh_user] = nil
|
465
|
-
knife.config[:ssh_port] = nil
|
466
|
-
knife.config[:ssh_gateway] = nil
|
467
|
-
knife.config[:forward_agent] = nil
|
468
|
-
knife.config[:identity_file] = nil
|
469
|
-
knife.config[:host_key_verify] = nil
|
470
421
|
Chef::Config[:knife][:ssh_user] = "curiosity"
|
471
422
|
Chef::Config[:knife][:ssh_port] = "2430"
|
472
423
|
Chef::Config[:knife][:forward_agent] = true
|
@@ -474,6 +425,8 @@ describe Chef::Knife::Bootstrap do
|
|
474
425
|
Chef::Config[:knife][:ssh_gateway] = "towel.blinkenlights.nl"
|
475
426
|
Chef::Config[:knife][:host_key_verify] = true
|
476
427
|
knife.stub(:render_template).and_return("")
|
428
|
+
knife.config = {}
|
429
|
+
knife.merge_configs
|
477
430
|
knife.knife_ssh
|
478
431
|
end
|
479
432
|
|
@@ -25,6 +25,8 @@ describe Chef::Knife::CookbookSiteShare do
|
|
25
25
|
|
26
26
|
before(:each) do
|
27
27
|
@knife = Chef::Knife::CookbookSiteShare.new
|
28
|
+
# Merge default settings in.
|
29
|
+
@knife.merge_configs
|
28
30
|
@knife.name_args = ['cookbook_name', 'AwesomeSausage']
|
29
31
|
|
30
32
|
@cookbook = Chef::CookbookVersion.new('cookbook_name')
|
@@ -34,6 +36,9 @@ describe Chef::Knife::CookbookSiteShare do
|
|
34
36
|
@cookbook_loader.stub(:[]).and_return(@cookbook)
|
35
37
|
Chef::CookbookLoader.stub(:new).and_return(@cookbook_loader)
|
36
38
|
|
39
|
+
@noauth_rest = double(Chef::REST)
|
40
|
+
@knife.stub(:noauth_rest).and_return(@noauth_rest)
|
41
|
+
|
37
42
|
@cookbook_uploader = Chef::CookbookUploader.new('herpderp', :rest => "norest")
|
38
43
|
Chef::CookbookUploader.stub(:new).and_return(@cookbook_uploader)
|
39
44
|
@cookbook_uploader.stub(:validate_cookbooks).and_return(true)
|
@@ -48,6 +53,20 @@ describe Chef::Knife::CookbookSiteShare do
|
|
48
53
|
|
49
54
|
before(:each) do
|
50
55
|
@knife.stub(:do_upload).and_return(true)
|
56
|
+
@category_response = {
|
57
|
+
"name" => "cookbook_name",
|
58
|
+
"category" => "Testing Category"
|
59
|
+
}
|
60
|
+
@bad_category_response = {
|
61
|
+
"error_code" => "NOT_FOUND",
|
62
|
+
"error_messages" => [
|
63
|
+
"Resource does not exist."
|
64
|
+
]
|
65
|
+
}
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should set true to config[:dry_run] as default' do
|
69
|
+
@knife.config[:dry_run].should be_false
|
51
70
|
end
|
52
71
|
|
53
72
|
it 'should should print usage and exit when given no arguments' do
|
@@ -57,9 +76,23 @@ describe Chef::Knife::CookbookSiteShare do
|
|
57
76
|
lambda { @knife.run }.should raise_error(SystemExit)
|
58
77
|
end
|
59
78
|
|
60
|
-
it 'should
|
79
|
+
it 'should not fail when given only 1 argument and can determine category' do
|
61
80
|
@knife.name_args = ['cookbook_name']
|
62
|
-
@
|
81
|
+
@noauth_rest.should_receive(:get_rest).with("http://cookbooks.opscode.com/api/v1/cookbooks/cookbook_name").and_return(@category_response)
|
82
|
+
@knife.should_receive(:do_upload)
|
83
|
+
@knife.run
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should print error and exit when given only 1 argument and cannot determine category' do
|
87
|
+
@knife.name_args = ['cookbook_name']
|
88
|
+
@noauth_rest.should_receive(:get_rest).with("http://cookbooks.opscode.com/api/v1/cookbooks/cookbook_name").and_return(@bad_category_response)
|
89
|
+
@knife.ui.should_receive(:fatal)
|
90
|
+
lambda { @knife.run }.should raise_error(SystemExit)
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'should print error and exit when given only 1 argument and Chef::REST throws an exception' do
|
94
|
+
@knife.name_args = ['cookbook_name']
|
95
|
+
@noauth_rest.should_receive(:get_rest).with("http://cookbooks.opscode.com/api/v1/cookbooks/cookbook_name") { raise Errno::ECONNREFUSED, "Connection refused" }
|
63
96
|
@knife.ui.should_receive(:fatal)
|
64
97
|
lambda { @knife.run }.should raise_error(SystemExit)
|
65
98
|
end
|
@@ -93,6 +126,26 @@ describe Chef::Knife::CookbookSiteShare do
|
|
93
126
|
FileUtils.should_receive(:rm_rf)
|
94
127
|
@knife.run
|
95
128
|
end
|
129
|
+
|
130
|
+
context "when the --dry-run flag is specified" do
|
131
|
+
before do
|
132
|
+
Chef::CookbookSiteStreamingUploader.stub(:create_build_dir).and_return("/var/tmp/dummy")
|
133
|
+
@knife.config = { :dry_run => true }
|
134
|
+
@knife.stub_chain(:shell_out!, :stdout).and_return('file')
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should list files in the tarball" do
|
138
|
+
expect(@knife).to receive(:shell_out!).with("tar -czf #{@cookbook.name}.tgz #{@cookbook.name}", {:cwd => "/var/tmp/dummy"})
|
139
|
+
expect(@knife).to receive(:shell_out!).with("tar -tzf #{@cookbook.name}.tgz", {:cwd => "/var/tmp/dummy"})
|
140
|
+
@knife.run
|
141
|
+
end
|
142
|
+
|
143
|
+
it "does not upload the cookbook" do
|
144
|
+
allow(@knife).to receive(:shell_out!).and_return(true)
|
145
|
+
expect(@knife).not_to receive(:do_upload)
|
146
|
+
@knife.run
|
147
|
+
end
|
148
|
+
end
|
96
149
|
end
|
97
150
|
|
98
151
|
describe 'do_upload' do
|
@@ -109,7 +162,7 @@ describe Chef::Knife::CookbookSiteShare do
|
|
109
162
|
end
|
110
163
|
|
111
164
|
it 'should post the cookbook to "https://supermarket.getchef.com"' do
|
112
|
-
response_text = {:uri => 'https://supermarket.getchef.com/cookbooks/cookbook_name'}
|
165
|
+
response_text = Chef::JSONCompat.to_json({:uri => 'https://supermarket.getchef.com/cookbooks/cookbook_name'})
|
113
166
|
@upload_response.stub(:body).and_return(response_text)
|
114
167
|
@upload_response.stub(:code).and_return(201)
|
115
168
|
Chef::CookbookSiteStreamingUploader.should_receive(:post).with(/supermarket\.getchef\.com/, anything(), anything(), anything())
|
@@ -117,7 +170,7 @@ describe Chef::Knife::CookbookSiteShare do
|
|
117
170
|
end
|
118
171
|
|
119
172
|
it 'should alert the user when a version already exists' do
|
120
|
-
response_text = {:error_messages => ['Version already exists']}
|
173
|
+
response_text = Chef::JSONCompat.to_json({:error_messages => ['Version already exists']})
|
121
174
|
@upload_response.stub(:body).and_return(response_text)
|
122
175
|
@upload_response.stub(:code).and_return(409)
|
123
176
|
lambda { @knife.run }.should raise_error(SystemExit)
|
@@ -125,7 +178,7 @@ describe Chef::Knife::CookbookSiteShare do
|
|
125
178
|
end
|
126
179
|
|
127
180
|
it 'should pass any errors on to the user' do
|
128
|
-
response_text = {:error_messages => ["You're holding it wrong"]}
|
181
|
+
response_text = Chef::JSONCompat.to_json({:error_messages => ["You're holding it wrong"]})
|
129
182
|
@upload_response.stub(:body).and_return(response_text)
|
130
183
|
@upload_response.stub(:code).and_return(403)
|
131
184
|
lambda { @knife.run }.should raise_error(SystemExit)
|
@@ -133,7 +186,7 @@ describe Chef::Knife::CookbookSiteShare do
|
|
133
186
|
end
|
134
187
|
|
135
188
|
it 'should print the body if no errors are exposed on failure' do
|
136
|
-
response_text = {:system_error => "Your call was dropped", :reason => "There's a map for that"}
|
189
|
+
response_text = Chef::JSONCompat.to_json({:system_error => "Your call was dropped", :reason => "There's a map for that"})
|
137
190
|
@upload_response.stub(:body).and_return(response_text)
|
138
191
|
@upload_response.stub(:code).and_return(500)
|
139
192
|
@knife.ui.should_receive(:error).with(/#{Regexp.escape(response_text)}/)#.ordered
|