chef 16.3.45-universal-mingw32 → 16.5.77-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/Gemfile +1 -1
- data/Rakefile +2 -2
- data/bin/knife +1 -1
- data/chef-universal-mingw32.gemspec +0 -1
- data/chef.gemspec +2 -1
- data/distro/templates/powershell/chef/chef.psm1.erb +18 -18
- data/ext/win32-eventlog/Rakefile +2 -2
- data/ext/win32-eventlog/chef-log.man.erb +4 -4
- data/lib/chef/action_collection.rb +4 -0
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +20 -18
- data/lib/chef/application/apply.rb +17 -12
- data/lib/chef/application/base.rb +26 -23
- data/lib/chef/application/client.rb +10 -4
- data/lib/chef/application/exit_code.rb +13 -4
- data/lib/chef/application/knife.rb +22 -11
- data/lib/chef/application/solo.rb +2 -1
- data/lib/chef/application/windows_service.rb +39 -39
- data/lib/chef/application/windows_service_manager.rb +6 -6
- data/lib/chef/chef_class.rb +0 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +55 -55
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +2 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
- data/lib/chef/chef_fs/knife.rb +2 -2
- data/lib/chef/chef_fs/parallelizer.rb +0 -1
- data/lib/chef/client.rb +21 -22
- data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/data_collector.rb +6 -5
- data/lib/chef/data_collector/config_validation.rb +22 -13
- data/lib/chef/data_collector/run_end_message.rb +13 -3
- data/lib/chef/data_collector/run_start_message.rb +1 -1
- data/lib/chef/deprecated.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +2 -2
- data/lib/chef/digester.rb +2 -2
- data/lib/chef/dsl/chef_vault.rb +1 -1
- data/lib/chef/dsl/data_query.rb +2 -2
- data/lib/chef/dsl/platform_introspection.rb +9 -9
- data/lib/chef/encrypted_data_bag_item.rb +3 -4
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
- data/lib/chef/environment.rb +4 -4
- data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
- data/lib/chef/exceptions.rb +5 -5
- data/lib/chef/file_access_control/windows.rb +5 -1
- data/lib/chef/file_content_management/tempfile.rb +10 -10
- data/lib/chef/formatters/doc.rb +7 -6
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
- data/lib/chef/formatters/indentable_output_stream.rb +2 -2
- data/lib/chef/formatters/minimal.rb +5 -4
- data/lib/chef/http.rb +6 -3
- data/lib/chef/http/auth_credentials.rb +5 -1
- data/lib/chef/http/authenticator.rb +1 -1
- data/lib/chef/http/basic_client.rb +4 -2
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +7 -5
- data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
- data/lib/chef/http/ssl_policies.rb +1 -1
- data/lib/chef/json_compat.rb +2 -2
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +18 -16
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
- data/lib/chef/knife/client_create.rb +3 -3
- data/lib/chef/knife/config_get.rb +8 -97
- data/lib/chef/knife/config_get_profile.rb +9 -9
- data/lib/chef/knife/config_list.rb +139 -0
- data/lib/chef/knife/config_list_profiles.rb +8 -98
- data/lib/chef/knife/config_show.rb +127 -0
- data/lib/chef/knife/config_use.rb +61 -0
- data/lib/chef/knife/config_use_profile.rb +9 -24
- data/lib/chef/knife/configure.rb +4 -2
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +23 -23
- data/lib/chef/knife/core/bootstrap_context.rb +2 -2
- data/lib/chef/knife/core/generic_presenter.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +2 -2
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +42 -34
- data/lib/chef/knife/delete.rb +15 -15
- data/lib/chef/knife/exec.rb +4 -4
- data/lib/chef/knife/node_policy_set.rb +2 -2
- data/lib/chef/knife/node_run_list_add.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/node_run_list_set.rb +1 -1
- data/lib/chef/knife/node_show.rb +2 -2
- data/lib/chef/knife/role_env_run_list_add.rb +1 -1
- data/lib/chef/knife/role_env_run_list_set.rb +1 -1
- data/lib/chef/knife/role_run_list_add.rb +1 -1
- data/lib/chef/knife/role_run_list_set.rb +1 -1
- data/lib/chef/knife/search.rb +0 -1
- data/lib/chef/knife/serve.rb +3 -3
- data/lib/chef/knife/ssh.rb +24 -9
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/status.rb +2 -2
- data/lib/chef/knife/tag_create.rb +1 -1
- data/lib/chef/knife/tag_delete.rb +1 -1
- data/lib/chef/knife/user_create.rb +2 -2
- data/lib/chef/knife/xargs.rb +19 -19
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/local_mode.rb +2 -2
- data/lib/chef/log/syslog.rb +2 -2
- data/lib/chef/log/winevt.rb +2 -2
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/deep_merge.rb +35 -18
- data/lib/chef/mixin/openssl_helper.rb +4 -5
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/mixin/template.rb +3 -3
- data/lib/chef/mixin/uris.rb +4 -2
- data/lib/chef/mixin/versioned_api.rb +1 -2
- data/lib/chef/mixin/which.rb +1 -1
- data/lib/chef/monkey_patches/net_http.rb +4 -4
- data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
- data/lib/chef/node/attribute.rb +2 -4
- data/lib/chef/node_map.rb +4 -4
- data/lib/chef/platform/service_helpers.rb +1 -1
- data/lib/chef/policy_builder/dynamic.rb +2 -0
- data/lib/chef/policy_builder/policyfile.rb +2 -2
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider.rb +1 -5
- data/lib/chef/provider/cron/unix.rb +0 -2
- data/lib/chef/provider/file.rb +2 -2
- data/lib/chef/provider/git.rb +5 -5
- data/lib/chef/provider/group.rb +0 -2
- data/lib/chef/provider/group/suse.rb +5 -5
- data/lib/chef/provider/ifconfig.rb +1 -4
- data/lib/chef/provider/launchd.rb +2 -2
- data/lib/chef/provider/link.rb +0 -9
- data/lib/chef/provider/mount.rb +0 -2
- data/lib/chef/provider/mount/linux.rb +63 -0
- data/lib/chef/provider/package.rb +0 -2
- data/lib/chef/provider/package/dpkg.rb +3 -12
- data/lib/chef/provider/package/homebrew.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +22 -19
- data/lib/chef/provider/package/snap.rb +1 -2
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +12 -10
- data/lib/chef/provider/package/zypper.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +21 -5
- data/lib/chef/provider/remote_file/content.rb +3 -0
- data/lib/chef/provider/remote_file/ftp.rb +6 -4
- data/lib/chef/provider/remote_file/sftp.rb +6 -4
- data/lib/chef/provider/route.rb +2 -6
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +4 -4
- data/lib/chef/provider/service/openbsd.rb +1 -4
- data/lib/chef/provider/service/redhat.rb +3 -3
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +10 -10
- data/lib/chef/provider/systemd_unit.rb +0 -2
- data/lib/chef/provider/template/content.rb +1 -0
- data/lib/chef/provider/template_finder.rb +2 -10
- data/lib/chef/provider/user/dscl.rb +7 -7
- data/lib/chef/provider/user/mac.rb +12 -12
- data/lib/chef/provider/windows_task.rb +1 -5
- data/lib/chef/provider/zypper_repository.rb +2 -3
- data/lib/chef/provider_resolver.rb +1 -1
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +2 -2
- data/lib/chef/resource.rb +8 -12
- data/lib/chef/resource/apt_repository.rb +5 -12
- data/lib/chef/resource/bff_package.rb +22 -0
- data/lib/chef/resource/breakpoint.rb +57 -2
- data/lib/chef/resource/build_essential.rb +1 -1
- data/lib/chef/resource/cab_package.rb +29 -0
- data/lib/chef/resource/chef_client_cron.rb +32 -25
- data/lib/chef/resource/chef_client_launchd.rb +194 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
- data/lib/chef/resource/chef_client_systemd_timer.rb +26 -19
- data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
- data/lib/chef/resource/chef_gem.rb +10 -10
- data/lib/chef/resource/chef_handler.rb +149 -4
- data/lib/chef/resource/chef_sleep.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +14 -14
- data/lib/chef/resource/cookbook_file.rb +2 -2
- data/lib/chef/resource/cron/_cron_shared.rb +1 -0
- data/lib/chef/resource/cron/cron_d.rb +0 -1
- data/lib/chef/resource/dnf_package.rb +2 -2
- data/lib/chef/resource/dsc_resource.rb +0 -1
- data/lib/chef/resource/dsc_script.rb +2 -2
- data/lib/chef/resource/execute.rb +8 -9
- data/lib/chef/resource/file.rb +4 -4
- data/lib/chef/resource/gem_package.rb +5 -5
- data/lib/chef/resource/homebrew_package.rb +3 -3
- data/lib/chef/resource/homebrew_update.rb +7 -7
- data/lib/chef/resource/hostname.rb +2 -2
- data/lib/chef/resource/launchd.rb +2 -1
- data/lib/chef/resource/locale.rb +2 -2
- data/lib/chef/resource/macos_userdefaults.rb +3 -3
- data/lib/chef/resource/notify_group.rb +0 -1
- data/lib/chef/resource/ohai.rb +46 -3
- data/lib/chef/resource/ohai_hint.rb +33 -0
- data/lib/chef/resource/openssl_dhparam.rb +29 -5
- data/lib/chef/resource/openssl_ec_private_key.rb +8 -3
- data/lib/chef/resource/openssl_ec_public_key.rb +4 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +8 -3
- data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
- data/lib/chef/resource/openssl_x509_certificate.rb +38 -35
- data/lib/chef/resource/openssl_x509_crl.rb +21 -10
- data/lib/chef/resource/openssl_x509_request.rb +37 -36
- data/lib/chef/resource/osx_profile.rb +292 -6
- data/lib/chef/resource/plist.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +6 -6
- data/lib/chef/resource/powershell_script.rb +24 -30
- data/lib/chef/resource/reboot.rb +2 -2
- data/lib/chef/resource/remote_file.rb +3 -3
- data/lib/chef/resource/rhsm_register.rb +22 -10
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/scm/subversion.rb +2 -2
- data/lib/chef/resource/service.rb +3 -3
- data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
- data/lib/chef/resource/sudo.rb +1 -1
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -1
- data/lib/chef/resource/support/ulimit.erb +1 -1
- data/lib/chef/resource/sysctl.rb +6 -10
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +2 -2
- data/lib/chef/resource/timezone.rb +112 -73
- data/lib/chef/resource/windows_ad_join.rb +12 -3
- data/lib/chef/resource/windows_audit_policy.rb +3 -0
- data/lib/chef/resource/windows_auto_run.rb +2 -0
- data/lib/chef/resource/windows_certificate.rb +8 -4
- data/lib/chef/resource/windows_dfs_folder.rb +2 -0
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
- data/lib/chef/resource/windows_dfs_server.rb +2 -0
- data/lib/chef/resource/windows_dns_record.rb +10 -7
- data/lib/chef/resource/windows_dns_zone.rb +12 -7
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_feature_dism.rb +10 -0
- data/lib/chef/resource/windows_feature_powershell.rb +14 -2
- data/lib/chef/resource/windows_firewall_profile.rb +24 -20
- data/lib/chef/resource/windows_firewall_rule.rb +5 -3
- data/lib/chef/resource/windows_font.rb +3 -1
- data/lib/chef/resource/windows_package.rb +28 -5
- data/lib/chef/resource/windows_pagefile.rb +4 -0
- data/lib/chef/resource/windows_printer.rb +22 -21
- data/lib/chef/resource/windows_printer_port.rb +20 -17
- data/lib/chef/resource/windows_security_policy.rb +2 -0
- data/lib/chef/resource/windows_share.rb +5 -3
- data/lib/chef/resource/windows_shortcut.rb +2 -0
- data/lib/chef/resource/windows_uac.rb +2 -0
- data/lib/chef/resource/windows_user_privilege.rb +54 -53
- data/lib/chef/resource/windows_workgroup.rb +5 -6
- data/lib/chef/resource/yum_package.rb +2 -2
- data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
- data/lib/chef/resource_reporter.rb +0 -2
- data/lib/chef/resources.rb +3 -1
- data/lib/chef/role.rb +2 -2
- data/lib/chef/run_context.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +21 -21
- data/lib/chef/run_lock.rb +2 -2
- data/lib/chef/run_status.rb +2 -6
- data/lib/chef/search/query.rb +6 -5
- data/lib/chef/shell.rb +32 -27
- data/lib/chef/shell/ext.rb +11 -11
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/train_transport.rb +5 -104
- data/lib/chef/util/backup.rb +2 -2
- data/lib/chef/util/diff.rb +14 -14
- data/lib/chef/util/powershell/cmdlet.rb +4 -2
- data/lib/chef/util/powershell/ps_credential.rb +18 -14
- data/lib/chef/util/threaded_job_queue.rb +0 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/crypto.rb +1 -1
- data/lib/chef/win32/file.rb +3 -3
- data/lib/chef/win32/file/version_info.rb +5 -5
- data/lib/chef/win32/registry.rb +1 -2
- data/lib/chef/win32/unicode.rb +1 -1
- data/spec/data/shef-config.rb +1 -1
- data/spec/data/ssl/chef-rspec.cert +15 -15
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
- data/spec/functional/resource/aix_service_spec.rb +2 -2
- data/spec/functional/resource/aixinit_service_spec.rb +8 -8
- data/spec/functional/resource/bff_spec.rb +2 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/dsc_script_spec.rb +0 -1
- data/spec/functional/resource/group_spec.rb +6 -6
- data/spec/functional/resource/insserv_spec.rb +5 -5
- data/spec/functional/resource/link_spec.rb +20 -20
- data/spec/functional/resource/powershell_script_spec.rb +4 -4
- data/spec/functional/resource/rpm_spec.rb +2 -2
- data/spec/functional/resource/user/dscl_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +1 -1
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_font_spec.rb +49 -0
- data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
- data/spec/functional/resource/windows_task_spec.rb +13 -13
- data/spec/functional/run_lock_spec.rb +24 -24
- data/spec/functional/version_spec.rb +3 -3
- data/spec/functional/win32/registry_spec.rb +8 -8
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/client/client_spec.rb +4 -4
- data/spec/integration/client/exit_code_spec.rb +3 -2
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +12 -12
- data/spec/integration/knife/config_list_spec.rb +220 -0
- data/spec/integration/knife/config_show_spec.rb +192 -0
- data/spec/integration/knife/config_use_spec.rb +198 -0
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +3 -1
- data/spec/integration/knife/download_spec.rb +3 -1
- data/spec/integration/knife/serve_spec.rb +5 -5
- data/spec/integration/knife/upload_spec.rb +3 -1
- data/spec/integration/ohai/ohai_spec.rb +61 -0
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/integration/recipes/remote_directory.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +5 -5
- data/spec/spec_helper.rb +12 -11
- data/spec/stress/win32/file_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/platform_helpers.rb +17 -35
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/directory_resource.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +20 -20
- data/spec/support/shared/functional/securable_resource.rb +108 -27
- data/spec/support/shared/functional/win32_service.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +3 -3
- data/spec/support/shared/integration/integration_helper.rb +22 -52
- data/spec/support/shared/unit/application_dot_d.rb +5 -3
- data/spec/support/shared/unit/script_resource.rb +6 -20
- data/spec/support/shared/unit/windows_script_resource.rb +15 -28
- data/spec/tiny_server.rb +0 -1
- data/spec/unit/application/client_spec.rb +2 -2
- data/spec/unit/application/exit_code_spec.rb +10 -0
- data/spec/unit/application_spec.rb +4 -6
- data/spec/unit/chef_fs/config_spec.rb +1 -1
- data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
- data/spec/unit/chef_fs/path_util_spec.rb +1 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
- data/spec/unit/cookbook_spec.rb +2 -2
- data/spec/unit/data_collector/config_validation_spec.rb +208 -0
- data/spec/unit/data_collector_spec.rb +28 -117
- data/spec/unit/dsl/declare_resource_spec.rb +1 -1
- data/spec/unit/environment_spec.rb +7 -7
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +20 -20
- data/spec/unit/knife/cookbook_download_spec.rb +4 -4
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/ui_spec.rb +1 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
- data/spec/unit/knife/ssh_spec.rb +2 -2
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/lwrp_spec.rb +3 -3
- data/spec/unit/mixin/deep_merge_spec.rb +15 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
- data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
- data/spec/unit/mixin/securable_spec.rb +2 -2
- data/spec/unit/mixin/template_spec.rb +30 -30
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
- data/spec/unit/node/immutable_collections_spec.rb +8 -4
- data/spec/unit/node_spec.rb +5 -5
- data/spec/unit/provider/mount/linux_spec.rb +97 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
- data/spec/unit/provider/package/powershell_spec.rb +1 -1
- data/spec/unit/provider/package/rubygems_spec.rb +4 -1
- data/spec/unit/provider/powershell_script_spec.rb +11 -4
- data/spec/unit/provider/remote_directory_spec.rb +9 -9
- data/spec/unit/provider/route_spec.rb +0 -2
- data/spec/unit/provider/service/arch_service_spec.rb +3 -2
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
- data/spec/unit/provider/service/macosx_spec.rb +3 -3
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider_resolver_spec.rb +6 -6
- data/spec/unit/recipe_spec.rb +1 -1
- data/spec/unit/resource/batch_spec.rb +6 -6
- data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
- data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
- data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
- data/spec/unit/resource/execute_spec.rb +113 -118
- data/spec/unit/resource/launchd_spec.rb +8 -0
- data/spec/unit/resource/osx_profile_spec.rb +299 -0
- data/spec/unit/resource/powershell_script_spec.rb +11 -29
- data/spec/unit/resource/rhsm_register_spec.rb +56 -18
- data/spec/unit/resource/script_spec.rb +6 -1
- data/spec/unit/resource/timezone_spec.rb +63 -0
- data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
- data/spec/unit/resource/windows_uac_spec.rb +1 -1
- data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
- data/spec/unit/role_spec.rb +11 -11
- data/spec/unit/run_lock_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +1 -2
- data/spec/unit/shell/shell_ext_spec.rb +46 -3
- data/spec/unit/shell/shell_session_spec.rb +35 -64
- data/spec/unit/shell_spec.rb +16 -19
- data/spec/unit/train_transport_spec.rb +14 -13
- data/spec/unit/util/selinux_spec.rb +2 -0
- data/tasks/rspec.rb +1 -3
- metadata +42 -33
- data/lib/chef/dist.rb +0 -68
- data/lib/chef/provider/osx_profile.rb +0 -255
- data/spec/integration/knife/config_get_profile_spec.rb +0 -113
- data/spec/integration/knife/config_get_spec.rb +0 -191
- data/spec/integration/knife/config_list_profiles_spec.rb +0 -218
- data/spec/integration/knife/config_use_profile_spec.rb +0 -154
- data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -1,218 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright 2018, Noah Kantrowitz
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
|
16
|
-
require "spec_helper"
|
17
|
-
require "support/shared/integration/integration_helper"
|
18
|
-
require "support/shared/context/config"
|
19
|
-
|
20
|
-
describe "knife config list-profiles", :workstation do
|
21
|
-
include IntegrationSupport
|
22
|
-
include KnifeSupport
|
23
|
-
|
24
|
-
include_context "default config options"
|
25
|
-
include_context "with a chef repo"
|
26
|
-
|
27
|
-
let(:cmd_args) { [] }
|
28
|
-
let(:knife_list_profiles) do
|
29
|
-
knife("config", "list-profiles", *cmd_args, instance_filter: lambda { |instance|
|
30
|
-
# Fake the failsafe check because this command doesn't actually process knife.rb.
|
31
|
-
$__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole"
|
32
|
-
allow(File).to receive(:file?).and_call_original
|
33
|
-
})
|
34
|
-
end
|
35
|
-
subject { knife_list_profiles.stdout }
|
36
|
-
|
37
|
-
around do |ex|
|
38
|
-
# Store and reset the value of some env vars.
|
39
|
-
old_home = ENV["HOME"]
|
40
|
-
old_wd = Dir.pwd
|
41
|
-
# Clear these out because they are cached permanently.
|
42
|
-
ChefConfig::PathHelper.class_exec { remove_class_variable(:@@home_dir) }
|
43
|
-
Chef::Knife::ConfigListProfiles.reset_config_loader!
|
44
|
-
begin
|
45
|
-
ex.run
|
46
|
-
ensure
|
47
|
-
ENV["HOME"] = old_home
|
48
|
-
Dir.chdir(old_wd)
|
49
|
-
ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
before do
|
54
|
-
# Always run from the temp folder. This can't be in the `around` block above
|
55
|
-
# because it has to run after the before set in the "with a chef repo" shared context.
|
56
|
-
directory("repo")
|
57
|
-
Dir.chdir(path_to("repo"))
|
58
|
-
ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
|
59
|
-
ENV["HOME"] = path_to(".")
|
60
|
-
end
|
61
|
-
|
62
|
-
# NOTE: The funky formatting with # at the end of the line of some of the
|
63
|
-
# output examples are because of how the format strings are built, there is
|
64
|
-
# substantial trailing whitespace in most cases which many editors "helpfully" remove.
|
65
|
-
|
66
|
-
context "with no credentials file" do
|
67
|
-
subject { knife_list_profiles.stderr }
|
68
|
-
it { is_expected.to eq "FATAL: No profiles found, #{path_to(".chef/credentials")} does not exist or is empty\n" }
|
69
|
-
end
|
70
|
-
|
71
|
-
context "with an empty credentials file" do
|
72
|
-
before { file(".chef/credentials", "") }
|
73
|
-
subject { knife_list_profiles.stderr }
|
74
|
-
it { is_expected.to eq "FATAL: No profiles found, #{path_to(".chef/credentials")} does not exist or is empty\n" }
|
75
|
-
end
|
76
|
-
|
77
|
-
context "with a simple default profile" do
|
78
|
-
before { file(".chef/credentials", <<~EOH) }
|
79
|
-
[default]
|
80
|
-
client_name = "testuser"
|
81
|
-
client_key = "testkey.pem"
|
82
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
83
|
-
EOH
|
84
|
-
it { is_expected.to eq <<~EOH.delete("#") }
|
85
|
-
Profile Client Key Server #
|
86
|
-
----------------------------------------------------------------------------------#
|
87
|
-
*default testuser ~/.chef/testkey.pem https://example.com/organizations/testorg#
|
88
|
-
EOH
|
89
|
-
end
|
90
|
-
|
91
|
-
context "with multiple profiles" do
|
92
|
-
before { file(".chef/credentials", <<~EOH) }
|
93
|
-
[default]
|
94
|
-
client_name = "testuser"
|
95
|
-
client_key = "testkey.pem"
|
96
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
97
|
-
|
98
|
-
[prod]
|
99
|
-
client_name = "testuser"
|
100
|
-
client_key = "testkey.pem"
|
101
|
-
chef_server_url = "https://example.com/organizations/prod"
|
102
|
-
|
103
|
-
[qa]
|
104
|
-
client_name = "qauser"
|
105
|
-
client_key = "~/src/qauser.pem"
|
106
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
107
|
-
EOH
|
108
|
-
it { is_expected.to eq <<~EOH.delete("#") }
|
109
|
-
Profile Client Key Server #
|
110
|
-
----------------------------------------------------------------------------------#
|
111
|
-
*default testuser ~/.chef/testkey.pem https://example.com/organizations/testorg#
|
112
|
-
prod testuser ~/.chef/testkey.pem https://example.com/organizations/prod #
|
113
|
-
qa qauser ~/src/qauser.pem https://example.com/organizations/testorg#
|
114
|
-
EOH
|
115
|
-
end
|
116
|
-
|
117
|
-
context "with a non-default active profile" do
|
118
|
-
let(:cmd_args) { %w{--profile prod} }
|
119
|
-
before { file(".chef/credentials", <<~EOH) }
|
120
|
-
[default]
|
121
|
-
client_name = "testuser"
|
122
|
-
client_key = "testkey.pem"
|
123
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
124
|
-
|
125
|
-
[prod]
|
126
|
-
client_name = "testuser"
|
127
|
-
client_key = "testkey.pem"
|
128
|
-
chef_server_url = "https://example.com/organizations/prod"
|
129
|
-
|
130
|
-
[qa]
|
131
|
-
client_name = "qauser"
|
132
|
-
client_key = "~/src/qauser.pem"
|
133
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
134
|
-
EOH
|
135
|
-
it { is_expected.to eq <<~EOH.delete("#") }
|
136
|
-
Profile Client Key Server #
|
137
|
-
----------------------------------------------------------------------------------#
|
138
|
-
default testuser ~/.chef/testkey.pem https://example.com/organizations/testorg#
|
139
|
-
*prod testuser ~/.chef/testkey.pem https://example.com/organizations/prod #
|
140
|
-
qa qauser ~/src/qauser.pem https://example.com/organizations/testorg#
|
141
|
-
EOH
|
142
|
-
end
|
143
|
-
|
144
|
-
context "with a bad profile as an active profile" do
|
145
|
-
let(:cmd_args) { %w{--profile production} }
|
146
|
-
before { file(".chef/credentials", <<~EOH) }
|
147
|
-
[default]
|
148
|
-
client_name = "testuser"
|
149
|
-
client_key = "testkey.pem"
|
150
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
151
|
-
|
152
|
-
[prod]
|
153
|
-
client_name = "testuser"
|
154
|
-
client_key = "testkey.pem"
|
155
|
-
chef_server_url = "https://example.com/organizations/prod"
|
156
|
-
|
157
|
-
[qa]
|
158
|
-
client_name = "qauser"
|
159
|
-
client_key = "~/src/qauser.pem"
|
160
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
161
|
-
EOH
|
162
|
-
it { is_expected.to eq <<~EOH.delete("#") }
|
163
|
-
Profile Client Key Server #
|
164
|
-
---------------------------------------------------------------------------------#
|
165
|
-
default testuser ~/.chef/testkey.pem https://example.com/organizations/testorg#
|
166
|
-
prod testuser ~/.chef/testkey.pem https://example.com/organizations/prod #
|
167
|
-
qa qauser ~/src/qauser.pem https://example.com/organizations/testorg#
|
168
|
-
EOH
|
169
|
-
end
|
170
|
-
|
171
|
-
context "with a minimal profile" do
|
172
|
-
before { file(".chef/credentials", <<~EOH) }
|
173
|
-
[default]
|
174
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
175
|
-
EOH
|
176
|
-
it { is_expected.to match %r{^*default .*? https://example.com/organizations/testorg$} }
|
177
|
-
end
|
178
|
-
|
179
|
-
context "with -i" do
|
180
|
-
let(:cmd_args) { %w{-i} }
|
181
|
-
before { file(".chef/credentials", <<~EOH) }
|
182
|
-
[default]
|
183
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
184
|
-
EOH
|
185
|
-
it { is_expected.to eq <<~EOH.delete("#") }
|
186
|
-
Profile Client Key Server #
|
187
|
-
----------------------------------------------------------------#
|
188
|
-
*default https://example.com/organizations/testorg#
|
189
|
-
EOH
|
190
|
-
end
|
191
|
-
|
192
|
-
context "with --format=json" do
|
193
|
-
let(:cmd_args) { %w{--format=json node_name} }
|
194
|
-
before { file(".chef/credentials", <<~EOH) }
|
195
|
-
[default]
|
196
|
-
client_name = "testuser"
|
197
|
-
client_key = "testkey.pem"
|
198
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
199
|
-
|
200
|
-
[prod]
|
201
|
-
client_name = "testuser"
|
202
|
-
client_key = "testkey.pem"
|
203
|
-
chef_server_url = "https://example.com/organizations/prod"
|
204
|
-
|
205
|
-
[qa]
|
206
|
-
client_name = "qauser"
|
207
|
-
client_key = "~/src/qauser.pem"
|
208
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
209
|
-
EOH
|
210
|
-
it {
|
211
|
-
expect(JSON.parse(subject)).to eq [
|
212
|
-
{ "profile" => "default", "active" => true, "client_name" => "testuser", "client_key" => path_to(".chef/testkey.pem"), "server_url" => "https://example.com/organizations/testorg" },
|
213
|
-
{ "profile" => "prod", "active" => false, "client_name" => "testuser", "client_key" => path_to(".chef/testkey.pem"), "server_url" => "https://example.com/organizations/prod" },
|
214
|
-
{ "profile" => "qa", "active" => false, "client_name" => "qauser", "client_key" => path_to("src/qauser.pem"), "server_url" => "https://example.com/organizations/testorg" },
|
215
|
-
]
|
216
|
-
}
|
217
|
-
end
|
218
|
-
end
|
@@ -1,154 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright 2018, Noah Kantrowitz
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
|
16
|
-
require "spec_helper"
|
17
|
-
require "support/shared/integration/integration_helper"
|
18
|
-
require "support/shared/context/config"
|
19
|
-
|
20
|
-
describe "knife config use-profile", :workstation do
|
21
|
-
include IntegrationSupport
|
22
|
-
include KnifeSupport
|
23
|
-
|
24
|
-
include_context "default config options"
|
25
|
-
include_context "with a chef repo"
|
26
|
-
|
27
|
-
let(:cmd_args) { [] }
|
28
|
-
|
29
|
-
let(:knife_use_profile) do
|
30
|
-
knife("config", "use-profile", *cmd_args, instance_filter: lambda { |instance|
|
31
|
-
# Fake the failsafe check because this command doesn't actually process knife.rb.
|
32
|
-
$__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole"
|
33
|
-
allow(File).to receive(:file?).and_call_original
|
34
|
-
})
|
35
|
-
end
|
36
|
-
|
37
|
-
subject { knife_use_profile.stdout }
|
38
|
-
|
39
|
-
around do |ex|
|
40
|
-
# Store and reset the value of some env vars.
|
41
|
-
old_chef_home = ENV["CHEF_HOME"]
|
42
|
-
old_knife_home = ENV["KNIFE_HOME"]
|
43
|
-
old_home = ENV["HOME"]
|
44
|
-
old_wd = Dir.pwd
|
45
|
-
ChefConfig::PathHelper.per_tool_home_environment = "KNIFE_HOME"
|
46
|
-
# Clear these out because they are cached permanently.
|
47
|
-
ChefConfig::PathHelper.class_exec { remove_class_variable(:@@home_dir) }
|
48
|
-
Chef::Knife::ConfigUseProfile.reset_config_loader!
|
49
|
-
begin
|
50
|
-
ex.run
|
51
|
-
ensure
|
52
|
-
ENV["CHEF_HOME"] = old_chef_home
|
53
|
-
ENV["KNIFE_HOME"] = old_knife_home
|
54
|
-
ENV["HOME"] = old_home
|
55
|
-
Dir.chdir(old_wd)
|
56
|
-
ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
|
57
|
-
ChefConfig::PathHelper.per_tool_home_environment = nil
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
before do
|
62
|
-
# Always run from the temp folder. This can't be in the `around` block above
|
63
|
-
# because it has to run after the before set in the "with a chef repo" shared context.
|
64
|
-
directory("repo")
|
65
|
-
Dir.chdir(path_to("repo"))
|
66
|
-
ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
|
67
|
-
ENV["HOME"] = path_to(".")
|
68
|
-
end
|
69
|
-
|
70
|
-
context "with no argument" do
|
71
|
-
subject { knife_use_profile.stderr }
|
72
|
-
it { is_expected.to eq "FATAL: You must specify a profile\n" }
|
73
|
-
end
|
74
|
-
|
75
|
-
context "with an argument" do
|
76
|
-
let(:cmd_args) { %w{production} }
|
77
|
-
before { file(".chef/credentials", <<~EOH) }
|
78
|
-
[production]
|
79
|
-
client_name = "testuser"
|
80
|
-
client_key = "testkey.pem"
|
81
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
82
|
-
EOH
|
83
|
-
it do
|
84
|
-
is_expected.to eq "Set default profile to production\n"
|
85
|
-
expect(File.read(path_to(".chef/context"))).to eq "production\n"
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
context "with no credentials file" do
|
90
|
-
let(:cmd_args) { %w{production} }
|
91
|
-
subject { knife_use_profile.stderr }
|
92
|
-
it { is_expected.to eq "FATAL: No profiles found, #{path_to(".chef/credentials")} does not exist or is empty\n" }
|
93
|
-
end
|
94
|
-
|
95
|
-
context "with an empty credentials file" do
|
96
|
-
let(:cmd_args) { %w{production} }
|
97
|
-
before { file(".chef/credentials", "") }
|
98
|
-
subject { knife_use_profile.stderr }
|
99
|
-
it { is_expected.to eq "FATAL: No profiles found, #{path_to(".chef/credentials")} does not exist or is empty\n" }
|
100
|
-
end
|
101
|
-
|
102
|
-
context "with an wrong argument" do
|
103
|
-
let(:cmd_args) { %w{staging} }
|
104
|
-
before { file(".chef/credentials", <<~EOH) }
|
105
|
-
[production]
|
106
|
-
client_name = "testuser"
|
107
|
-
client_key = "testkey.pem"
|
108
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
109
|
-
EOH
|
110
|
-
subject { knife_use_profile }
|
111
|
-
it { expect { subject }.to raise_error ChefConfig::ConfigurationError, "Profile staging doesn't exist. Please add it to #{path_to(".chef/credentials")} and if it is profile with DNS name check that you are not missing single quotes around it as per docs https://docs.chef.io/workstation/knife_setup/#knife-profiles." }
|
112
|
-
end
|
113
|
-
|
114
|
-
context "with $CHEF_HOME" do
|
115
|
-
let(:cmd_args) { %w{staging} }
|
116
|
-
before do
|
117
|
-
ENV["CHEF_HOME"] = path_to("chefhome"); file("chefhome/tmp", "")
|
118
|
-
file("chefhome/.chef/credentials", <<~EOH
|
119
|
-
[staging]
|
120
|
-
client_name = "testuser"
|
121
|
-
client_key = "testkey.pem"
|
122
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
123
|
-
EOH
|
124
|
-
)
|
125
|
-
end
|
126
|
-
|
127
|
-
it do
|
128
|
-
is_expected.to eq "Set default profile to staging\n"
|
129
|
-
expect(File.read(path_to("chefhome/.chef/context"))).to eq "staging\n"
|
130
|
-
expect(File.exist?(path_to(".chef/context"))).to be_falsey
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
context "with $KNIFE_HOME" do
|
135
|
-
let(:cmd_args) { %w{development} }
|
136
|
-
|
137
|
-
before do
|
138
|
-
ENV["KNIFE_HOME"] = path_to("knifehome"); file("knifehome/tmp", "")
|
139
|
-
file("knifehome/.chef/credentials", <<~EOH
|
140
|
-
[development]
|
141
|
-
client_name = "testuser"
|
142
|
-
client_key = "testkey.pem"
|
143
|
-
chef_server_url = "https://example.com/organizations/testorg"
|
144
|
-
EOH
|
145
|
-
)
|
146
|
-
end
|
147
|
-
|
148
|
-
it do
|
149
|
-
is_expected.to eq "Set default profile to development\n"
|
150
|
-
expect(File.read(path_to("knifehome/.chef/context"))).to eq "development\n"
|
151
|
-
expect(File.exist?(path_to(".chef/context"))).to be_falsey
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
@@ -1,255 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Nate Walck (<nate.walck@gmail.com>)
|
3
|
-
# Copyright:: Copyright 2015-2016, Chef, Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
require "spec_helper"
|
20
|
-
|
21
|
-
describe Chef::Provider::OsxProfile do
|
22
|
-
let(:shell_out_success) do
|
23
|
-
double("shell_out", exitstatus: 0, error?: false)
|
24
|
-
end
|
25
|
-
describe "action_create" do
|
26
|
-
let(:node) { Chef::Node.new }
|
27
|
-
let(:events) { Chef::EventDispatch::Dispatcher.new }
|
28
|
-
let(:run_context) { Chef::RunContext.new(node, {}, events) }
|
29
|
-
let(:new_resource) { Chef::Resource::OsxProfile.new("Profile Test", run_context) }
|
30
|
-
let(:provider) { Chef::Provider::OsxProfile.new(new_resource, run_context) }
|
31
|
-
let(:all_profiles) do
|
32
|
-
{ "_computerlevel" => [{ "ProfileDisplayName" => "Finder Settings",
|
33
|
-
"ProfileIdentifier" => "com.apple.finder",
|
34
|
-
"ProfileInstallDate" => "2015-11-08 23:15:21 +0000",
|
35
|
-
"ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.finder" => { "Forced" => [{ "mcx_preference_settings" => { "ShowExternalHardDrivesOnDesktop" => false } }] } } },
|
36
|
-
"PayloadDisplayName" => "Custom: (com.apple.finder)",
|
37
|
-
"PayloadIdentifier" => "com.apple.finder",
|
38
|
-
"PayloadType" => "com.apple.ManagedClient.preferences",
|
39
|
-
"PayloadUUID" => "a017048f-684b-4e81-baa3-43afe316d739",
|
40
|
-
"PayloadVersion" => 1 }],
|
41
|
-
"ProfileOrganization" => "Chef",
|
42
|
-
"ProfileRemovalDisallowed" => "false",
|
43
|
-
"ProfileType" => "Configuration",
|
44
|
-
"ProfileUUID" => "e2e09bef-e673-44a6-bcbe-ecb5f1c1b740",
|
45
|
-
"ProfileVerificationState" => "unsigned",
|
46
|
-
"ProfileVersion" => 1 },
|
47
|
-
{ "ProfileDisplayName" => "ScreenSaver Settings",
|
48
|
-
"ProfileIdentifier" => "com.testprofile.screensaver",
|
49
|
-
"ProfileInstallDate" => "2015-10-05 23:15:21 +0000",
|
50
|
-
"ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.screensaver" => { "Forced" => [{ "mcx_preference_settings" => { "idleTime" => 0 } }] } } },
|
51
|
-
"PayloadDisplayName" => "Custom: (com.apple.screensaver)",
|
52
|
-
"PayloadIdentifier" => "com.apple.screensaver",
|
53
|
-
"PayloadType" => "com.apple.ManagedClient.preferences",
|
54
|
-
"PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c110",
|
55
|
-
"PayloadVersion" => 1 }],
|
56
|
-
"ProfileOrganization" => "Chef",
|
57
|
-
"ProfileRemovalDisallowed" => "false",
|
58
|
-
"ProfileType" => "Configuration",
|
59
|
-
"ProfileUUID" => "6e95927c-f200-54b4-85c7-52ab99b61c47",
|
60
|
-
"ProfileVerificationState" => "unsigned",
|
61
|
-
"ProfileVersion" => 1 }],
|
62
|
-
}
|
63
|
-
end
|
64
|
-
# If anything is changed within this profile, be sure to update the
|
65
|
-
# ProfileUUID in all_profiles to match the new config specific UUID
|
66
|
-
let(:test_profile) do
|
67
|
-
{
|
68
|
-
"PayloadIdentifier" => "com.testprofile.screensaver",
|
69
|
-
"PayloadRemovalDisallowed" => false,
|
70
|
-
"PayloadScope" => "System",
|
71
|
-
"PayloadType" => "Configuration",
|
72
|
-
"PayloadUUID" => "1781fbec-3325-565f-9022-8aa28135c3cc",
|
73
|
-
"PayloadOrganization" => "Chef",
|
74
|
-
"PayloadVersion" => 1,
|
75
|
-
"PayloadDisplayName" => "Screensaver Settings",
|
76
|
-
"PayloadContent" => [
|
77
|
-
{
|
78
|
-
"PayloadType" => "com.apple.ManagedClient.preferences",
|
79
|
-
"PayloadVersion" => 1,
|
80
|
-
"PayloadIdentifier" => "com.testprofile.screensaver",
|
81
|
-
"PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c108",
|
82
|
-
"PayloadEnabled" => true,
|
83
|
-
"PayloadDisplayName" => "com.apple.screensaver",
|
84
|
-
"PayloadContent" => {
|
85
|
-
"com.apple.screensaver" => {
|
86
|
-
"Forced" => [
|
87
|
-
{
|
88
|
-
"mcx_preference_settings" => {
|
89
|
-
"idleTime" => 0,
|
90
|
-
},
|
91
|
-
},
|
92
|
-
],
|
93
|
-
},
|
94
|
-
},
|
95
|
-
},
|
96
|
-
],
|
97
|
-
}
|
98
|
-
end
|
99
|
-
let(:no_profiles) do
|
100
|
-
{}
|
101
|
-
end
|
102
|
-
|
103
|
-
before(:each) do
|
104
|
-
allow(provider).to receive(:cookbook_file_available?).and_return(true)
|
105
|
-
allow(provider).to receive(:cache_cookbook_profile).and_return("/tmp/test.mobileconfig.remote")
|
106
|
-
allow(provider).to receive(:get_new_profile_hash).and_return(test_profile)
|
107
|
-
allow(provider).to receive(:get_installed_profiles).and_return(all_profiles)
|
108
|
-
allow(provider).to receive(:read_plist).and_return(all_profiles)
|
109
|
-
allow(::File).to receive(:unlink).and_return(true)
|
110
|
-
end
|
111
|
-
|
112
|
-
it "should build the get all profiles shellout command correctly" do
|
113
|
-
profile_name = "com.testprofile.screensaver.mobileconfig"
|
114
|
-
tempfile = "/tmp/allprofiles.plist"
|
115
|
-
new_resource.profile_name profile_name
|
116
|
-
allow(provider).to receive(:generate_tempfile).and_return(tempfile)
|
117
|
-
allow(provider).to receive(:get_installed_profiles).and_call_original
|
118
|
-
allow(provider).to receive(:read_plist).and_return(all_profiles)
|
119
|
-
expect(provider).to receive(:shell_out_compacted!).with("/usr/bin/profiles", "-P", "-o", "/tmp/allprofiles.plist")
|
120
|
-
provider.load_current_resource
|
121
|
-
end
|
122
|
-
|
123
|
-
it "should use profile name as profile when no profile is set" do
|
124
|
-
profile_name = "com.testprofile.screensaver.mobileconfig"
|
125
|
-
new_resource.profile_name profile_name
|
126
|
-
provider.load_current_resource
|
127
|
-
expect(new_resource.profile_name).to eql(profile_name)
|
128
|
-
end
|
129
|
-
|
130
|
-
it "should use identifier from specified profile" do
|
131
|
-
new_resource.profile test_profile
|
132
|
-
provider.load_current_resource
|
133
|
-
expect(
|
134
|
-
provider.instance_variable_get(:@new_profile_identifier)
|
135
|
-
).to eql(test_profile["PayloadIdentifier"])
|
136
|
-
end
|
137
|
-
|
138
|
-
it "should install when not installed" do
|
139
|
-
new_resource.profile test_profile
|
140
|
-
allow(provider).to receive(:get_installed_profiles).and_return(no_profiles)
|
141
|
-
provider.load_current_resource
|
142
|
-
expect(provider).to receive(:install_profile)
|
143
|
-
expect { provider.run_action(:install) }.to_not raise_error
|
144
|
-
end
|
145
|
-
|
146
|
-
it "does not install if the profile is already installed" do
|
147
|
-
new_resource.profile test_profile
|
148
|
-
allow(provider).to receive(:get_installed_profiles).and_return(all_profiles)
|
149
|
-
provider.load_current_resource
|
150
|
-
expect(provider).to_not receive(:install_profile)
|
151
|
-
expect { provider.action_install }.to_not raise_error
|
152
|
-
end
|
153
|
-
|
154
|
-
it "should install when installed but uuid differs" do
|
155
|
-
new_resource.profile test_profile
|
156
|
-
all_profiles["_computerlevel"][1]["ProfileUUID"] = "1781fbec-3325-565f-9022-9bb39245d4dd"
|
157
|
-
provider.load_current_resource
|
158
|
-
expect(provider).to receive(:install_profile)
|
159
|
-
expect { provider.run_action(:install) }.to_not raise_error
|
160
|
-
end
|
161
|
-
|
162
|
-
it "should build the shellout install command correctly" do
|
163
|
-
profile_path = "/tmp/test.mobileconfig"
|
164
|
-
new_resource.profile test_profile
|
165
|
-
# Change the profile so it triggers an install
|
166
|
-
all_profiles["_computerlevel"][1]["ProfileUUID"] = "1781fbec-3325-565f-9022-9bb39245d4dd"
|
167
|
-
provider.load_current_resource
|
168
|
-
allow(provider).to receive(:write_profile_to_disk).and_return(profile_path)
|
169
|
-
expect(provider).to receive(:shell_out_compacted).with("/usr/bin/profiles", "-I", "-F", profile_path).and_return(shell_out_success)
|
170
|
-
provider.action_install
|
171
|
-
end
|
172
|
-
|
173
|
-
it "should fail if there is no identifier inside the profile" do
|
174
|
-
test_profile.delete("PayloadIdentifier")
|
175
|
-
new_resource.profile test_profile
|
176
|
-
error_message = "The specified profile does not seem to be valid"
|
177
|
-
expect { provider.run_action(:install) }.to raise_error(RuntimeError, error_message)
|
178
|
-
end
|
179
|
-
|
180
|
-
end
|
181
|
-
|
182
|
-
describe "action_remove" do
|
183
|
-
let(:node) { Chef::Node.new }
|
184
|
-
let(:events) { Chef::EventDispatch::Dispatcher.new }
|
185
|
-
let(:run_context) { Chef::RunContext.new(node, {}, events) }
|
186
|
-
let(:new_resource) { Chef::Resource::OsxProfile.new("Profile Test", run_context) }
|
187
|
-
let(:provider) { Chef::Provider::OsxProfile.new(new_resource, run_context) }
|
188
|
-
let(:current_resource) { Chef::Resource::OsxProfile.new("Profile Test") }
|
189
|
-
let(:all_profiles) do
|
190
|
-
{ "_computerlevel" => [{ "ProfileDisplayName" => "ScreenSaver Settings",
|
191
|
-
"ProfileIdentifier" => "com.apple.screensaver",
|
192
|
-
"ProfileInstallDate" => "2015-10-05 23:15:21 +0000",
|
193
|
-
"ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.screensaver" => { "Forced" => [{ "mcx_preference_settings" => { "idleTime" => 0 } }] } } },
|
194
|
-
"PayloadDisplayName" => "Custom: (com.apple.screensaver)",
|
195
|
-
"PayloadIdentifier" => "com.apple.screensaver",
|
196
|
-
"PayloadType" => "com.apple.ManagedClient.preferences",
|
197
|
-
"PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c108",
|
198
|
-
"PayloadVersion" => 1 }],
|
199
|
-
"ProfileOrganization" => "Chef",
|
200
|
-
"ProfileRemovalDisallowed" => "false",
|
201
|
-
"ProfileType" => "Configuration",
|
202
|
-
"ProfileUUID" => "1781fbec-3325-565f-9022-8aa28135c3cc",
|
203
|
-
"ProfileVerificationState" => "unsigned",
|
204
|
-
"ProfileVersion" => 1 },
|
205
|
-
{ "ProfileDisplayName" => "ScreenSaver Settings",
|
206
|
-
"ProfileIdentifier" => "com.testprofile.screensaver",
|
207
|
-
"ProfileInstallDate" => "2015-10-05 23:15:21 +0000",
|
208
|
-
"ProfileItems" => [{ "PayloadContent" => { "PayloadContentManagedPreferences" => { "com.apple.screensaver" => { "Forced" => [{ "mcx_preference_settings" => { "idleTime" => 0 } }] } } },
|
209
|
-
"PayloadDisplayName" => "Custom: (com.apple.screensaver)",
|
210
|
-
"PayloadIdentifier" => "com.apple.screensaver",
|
211
|
-
"PayloadType" => "com.apple.ManagedClient.preferences",
|
212
|
-
"PayloadUUID" => "73fc30e0-1e57-0131-c32d-000c2944c110",
|
213
|
-
"PayloadVersion" => 1 }],
|
214
|
-
"ProfileOrganization" => "Chef",
|
215
|
-
"ProfileRemovalDisallowed" => "false",
|
216
|
-
"ProfileType" => "Configuration",
|
217
|
-
"ProfileUUID" => "1781fbec-3325-565f-9022-8aa28135c3cc",
|
218
|
-
"ProfileVerificationState" => "unsigned",
|
219
|
-
"ProfileVersion" => 1 }],
|
220
|
-
}
|
221
|
-
end
|
222
|
-
before(:each) do
|
223
|
-
provider.current_resource = current_resource
|
224
|
-
allow(provider).to receive(:get_installed_profiles).and_return(all_profiles)
|
225
|
-
end
|
226
|
-
|
227
|
-
it "should use resource name for identifier when not specified" do
|
228
|
-
new_resource.profile_name "com.testprofile.screensaver"
|
229
|
-
new_resource.action(:remove)
|
230
|
-
provider.load_current_resource
|
231
|
-
expect(provider.instance_variable_get(:@new_profile_identifier)).to eql(new_resource.profile_name)
|
232
|
-
end
|
233
|
-
|
234
|
-
it "should use specified identifier" do
|
235
|
-
new_resource.identifier "com.testprofile.screensaver"
|
236
|
-
new_resource.action(:remove)
|
237
|
-
provider.load_current_resource
|
238
|
-
expect(provider.instance_variable_get(:@new_profile_identifier)).to eql(new_resource.identifier)
|
239
|
-
end
|
240
|
-
|
241
|
-
it "should work with spaces in the identifier" do
|
242
|
-
provider.action = :remove
|
243
|
-
provider.define_resource_requirements
|
244
|
-
expect { provider.process_resource_requirements }.not_to raise_error
|
245
|
-
end
|
246
|
-
|
247
|
-
it "should build the shellout remove command correctly" do
|
248
|
-
new_resource.identifier "com.testprofile.screensaver"
|
249
|
-
new_resource.action(:remove)
|
250
|
-
provider.load_current_resource
|
251
|
-
expect(provider).to receive(:shell_out_compacted).with("/usr/bin/profiles", "-R", "-p", new_resource.identifier).and_return(shell_out_success)
|
252
|
-
provider.action_remove
|
253
|
-
end
|
254
|
-
end
|
255
|
-
end
|