chef 10.34.6 → 11.0.0.beta.0
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 +155 -0
- data/README.md +89 -0
- data/Rakefile +4 -12
- data/bin/chef-apply +25 -0
- data/bin/chef-shell +34 -0
- data/bin/shef +6 -5
- data/distro/common/html/chef-client.8.html +4 -4
- data/distro/common/html/chef-expander.8.html +4 -4
- data/distro/common/html/chef-expanderctl.8.html +4 -4
- data/distro/common/html/chef-server-webui.8.html +4 -4
- data/distro/common/html/chef-server.8.html +4 -4
- data/distro/common/html/{shef.1.html → chef-shell.1.html} +49 -46
- data/distro/common/html/chef-solo.8.html +18 -12
- data/distro/common/html/chef-solr.8.html +4 -4
- data/distro/common/html/knife-bootstrap.1.html +4 -4
- data/distro/common/html/knife-client.1.html +4 -4
- data/distro/common/html/knife-configure.1.html +4 -4
- data/distro/common/html/knife-cookbook-site.1.html +4 -4
- data/distro/common/html/knife-cookbook.1.html +10 -7
- data/distro/common/html/knife-data-bag.1.html +10 -7
- data/distro/common/html/knife-environment.1.html +8 -6
- data/distro/common/html/knife-exec.1.html +9 -9
- data/distro/common/html/knife-index.1.html +4 -4
- data/distro/common/html/knife-node.1.html +4 -4
- data/distro/common/html/knife-role.1.html +4 -4
- data/distro/common/html/knife-search.1.html +4 -4
- data/distro/common/html/knife-ssh.1.html +4 -4
- data/distro/common/html/knife-status.1.html +4 -4
- data/distro/common/html/knife-tag.1.html +4 -4
- data/distro/common/html/knife.1.html +8 -13
- data/distro/common/man/man1/{shef.1 → chef-shell.1} +21 -57
- data/distro/common/man/man1/knife-bootstrap.1 +1 -1
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
- data/distro/common/man/man1/knife-cookbook.1 +15 -2
- data/distro/common/man/man1/knife-data-bag.1 +15 -2
- data/distro/common/man/man1/knife-environment.1 +12 -2
- data/distro/common/man/man1/knife-exec.1 +4 -7
- data/distro/common/man/man1/knife-index.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +1 -1
- data/distro/common/man/man1/knife-search.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife.1 +3 -6
- data/distro/common/man/man8/chef-client.8 +1 -1
- data/distro/common/man/man8/chef-expander.8 +1 -1
- data/distro/common/man/man8/chef-expanderctl.8 +1 -1
- data/distro/common/man/man8/chef-server-webui.8 +1 -1
- data/distro/common/man/man8/chef-server.8 +1 -1
- data/distro/common/man/man8/chef-solo.8 +36 -4
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/distro/common/markdown/man1/{shef.mkd → chef-shell.mkd} +49 -43
- data/distro/common/markdown/man1/knife-exec.mkd +11 -6
- data/distro/common/markdown/man1/knife.mkd +4 -9
- data/distro/debian/etc/default/chef-client +0 -1
- data/distro/debian/etc/init.d/chef-client +2 -2
- data/lib/chef.rb +2 -5
- data/lib/chef/api_client.rb +20 -130
- data/lib/chef/api_client/registration.rb +126 -0
- data/lib/chef/application.rb +71 -14
- data/lib/chef/application/apply.rb +160 -0
- data/lib/chef/application/client.rb +25 -18
- data/lib/chef/application/knife.rb +0 -2
- data/lib/chef/application/solo.rb +23 -8
- data/lib/chef/application/windows_service.rb +5 -2
- data/lib/chef/applications.rb +1 -0
- data/lib/chef/chef_fs.rb +11 -0
- data/lib/chef/chef_fs/command_line.rb +232 -0
- data/lib/chef/chef_fs/file_pattern.rb +312 -0
- data/lib/chef/chef_fs/file_system.rb +358 -0
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -0
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +121 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +109 -0
- data/{spec/unit/monkey_patches/uri_spec.rb → lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb} +12 -15
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +84 -0
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +188 -0
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +78 -0
- data/lib/chef/chef_fs/file_system/cookbook_subdir.rb +54 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +68 -0
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +78 -0
- data/lib/chef/chef_fs/file_system/data_bag_item.rb +59 -0
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +66 -0
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +90 -0
- data/lib/chef/{index_queue.rb → chef_fs/file_system/file_system_error.rb} +14 -12
- data/lib/chef/{resource/whyrun_safe_ruby_block.rb → chef_fs/file_system/file_system_root_dir.rb} +10 -10
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +47 -0
- data/lib/chef/{provider/whyrun_safe_ruby_block.rb → chef_fs/file_system/nonexistent_fs_object.rb} +19 -9
- data/lib/chef/chef_fs/file_system/not_found_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +84 -0
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +123 -0
- data/lib/chef/chef_fs/knife.rb +77 -0
- data/lib/chef/chef_fs/path_utils.rb +64 -0
- data/lib/chef/client.rb +44 -21
- data/lib/chef/config.rb +52 -43
- data/lib/chef/cookbook/synchronizer.rb +6 -8
- data/lib/chef/cookbook/syntax_check.rb +61 -14
- data/lib/chef/cookbook_loader.rb +39 -26
- data/lib/chef/cookbook_uploader.rb +17 -19
- data/lib/chef/cookbook_version.rb +3 -302
- data/lib/chef/daemon.rb +3 -18
- data/lib/chef/data_bag.rb +4 -97
- data/lib/chef/data_bag_item.rb +2 -65
- data/lib/chef/digester.rb +73 -0
- data/lib/chef/dsl.rb +6 -0
- data/lib/chef/dsl/data_query.rb +66 -0
- data/lib/chef/dsl/include_attribute.rb +60 -0
- data/lib/chef/dsl/include_recipe.rb +42 -0
- data/lib/chef/dsl/platform_introspection.rb +213 -0
- data/lib/chef/dsl/recipe.rb +84 -0
- data/lib/chef/dsl/registry_helper.rb +59 -0
- data/lib/chef/encrypted_data_bag_item.rb +74 -19
- data/lib/chef/environment.rb +9 -180
- data/lib/chef/exceptions.rb +87 -14
- data/lib/chef/formatters/base.rb +4 -1
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +0 -4
- data/lib/chef/json_compat.rb +1 -97
- data/lib/chef/knife.rb +90 -41
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/centos5-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +2 -2
- data/lib/chef/knife/configure.rb +1 -2
- data/lib/chef/knife/cookbook_metadata.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +3 -2
- data/lib/chef/knife/cookbook_upload.rb +12 -7
- data/lib/chef/knife/core/bootstrap_context.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +26 -13
- data/lib/chef/knife/core/node_editor.rb +36 -16
- data/lib/chef/knife/core/node_presenter.rb +1 -1
- data/lib/chef/knife/core/text_formatter.rb +23 -37
- data/lib/chef/knife/core/ui.rb +15 -9
- data/lib/chef/knife/delete.rb +39 -0
- data/lib/chef/knife/diff.rb +46 -0
- data/lib/chef/knife/download.rb +50 -0
- data/lib/chef/knife/environment_show.rb +7 -0
- data/lib/chef/knife/exec.rb +5 -5
- data/lib/chef/knife/help_topics.rb +1 -1
- data/lib/chef/knife/index_rebuild.rb +91 -7
- data/lib/chef/knife/list.rb +109 -0
- data/lib/chef/knife/raw.rb +108 -0
- data/lib/chef/knife/search.rb +40 -22
- data/lib/chef/knife/show.rb +32 -0
- data/lib/chef/knife/ssh.rb +6 -2
- data/lib/chef/knife/upload.rb +50 -0
- data/lib/chef/mixin/checksum.rb +3 -3
- data/lib/chef/mixin/deep_merge.rb +55 -197
- data/lib/chef/mixin/language.rb +9 -222
- data/lib/chef/mixin/language_include_attribute.rb +6 -38
- data/lib/chef/mixin/language_include_recipe.rb +3 -35
- data/lib/chef/mixin/params_validate.rb +6 -19
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +8 -61
- data/lib/chef/mixin/securable.rb +32 -7
- data/lib/chef/mixin/template.rb +40 -0
- data/lib/chef/mixins.rb +0 -4
- data/lib/chef/monkey_patches/net_http.rb +0 -34
- data/lib/chef/node.rb +133 -309
- data/lib/chef/node/attribute.rb +333 -473
- data/lib/chef/node/attribute_collections.rb +199 -0
- data/lib/chef/node/immutable_collections.rb +186 -0
- data/lib/chef/platform.rb +7 -22
- data/lib/chef/provider.rb +2 -49
- data/lib/chef/provider/breakpoint.rb +6 -6
- data/lib/chef/provider/cookbook_file.rb +5 -33
- data/lib/chef/provider/deploy.rb +2 -1
- data/lib/chef/provider/directory.rb +14 -17
- data/lib/chef/provider/file.rb +19 -52
- data/lib/chef/provider/group.rb +31 -51
- data/lib/chef/provider/group/dscl.rb +13 -53
- data/lib/chef/provider/group/gpasswd.rb +19 -14
- data/lib/chef/provider/group/groupadd.rb +1 -41
- data/lib/chef/provider/group/groupmod.rb +36 -46
- data/lib/chef/provider/group/pw.rb +16 -59
- data/lib/chef/provider/group/suse.rb +13 -16
- data/lib/chef/provider/group/usermod.rb +18 -40
- data/lib/chef/provider/group/windows.rb +6 -13
- data/lib/chef/provider/http_request.rb +25 -42
- data/lib/chef/provider/link.rb +2 -0
- data/lib/chef/provider/lwrp_base.rb +150 -0
- data/lib/chef/provider/package/portage.rb +4 -9
- data/lib/chef/provider/package/rpm.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +9 -41
- data/lib/chef/provider/package/yum.rb +12 -19
- data/lib/chef/provider/registry_key.rb +156 -0
- data/lib/chef/provider/remote_directory.rb +2 -0
- data/lib/chef/provider/remote_file.rb +21 -12
- data/lib/chef/provider/ruby_block.rb +5 -2
- data/lib/chef/provider/service.rb +15 -0
- data/lib/chef/provider/service/init.rb +9 -7
- data/lib/chef/provider/service/macosx.rb +15 -73
- data/lib/chef/provider/service/simple.rb +1 -1
- data/lib/chef/provider/service/solaris.rb +3 -3
- data/lib/chef/provider/template.rb +22 -25
- data/lib/chef/provider/template_finder.rb +61 -0
- data/lib/chef/provider/user.rb +0 -1
- data/lib/chef/provider/user/dscl.rb +175 -568
- data/lib/chef/provider/user/useradd.rb +30 -47
- data/lib/chef/providers.rb +3 -2
- data/lib/chef/recipe.rb +14 -8
- data/lib/chef/resource.rb +13 -154
- data/lib/chef/resource/group.rb +1 -11
- data/lib/chef/resource/http_request.rb +2 -1
- data/lib/chef/resource/lwrp_base.rb +127 -0
- data/lib/chef/resource/mount.rb +10 -11
- data/lib/chef/resource/registry_key.rb +86 -0
- data/lib/chef/resource/remote_directory.rb +6 -5
- data/lib/chef/resource/remote_file.rb +22 -31
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/service.rb +14 -0
- data/lib/chef/resource/user.rb +0 -18
- data/lib/chef/resource_collection.rb +25 -21
- data/lib/chef/resources.rb +2 -1
- data/lib/chef/rest.rb +50 -131
- data/lib/chef/rest/auth_credentials.rb +4 -20
- data/lib/chef/rest/rest_request.rb +2 -7
- data/lib/chef/role.rb +1 -97
- data/lib/chef/run_context.rb +108 -130
- data/lib/chef/run_context/cookbook_compiler.rb +280 -0
- data/lib/chef/run_list.rb +0 -2
- data/lib/chef/run_list/run_list_expansion.rb +0 -15
- data/lib/chef/run_lock.rb +90 -0
- data/lib/chef/runner.rb +28 -5
- data/lib/chef/sandbox.rb +15 -148
- data/lib/chef/scan_access_control.rb +2 -4
- data/lib/chef/shef/ext.rb +3 -575
- data/lib/chef/{shef.rb → shell.rb} +35 -40
- data/lib/chef/shell/ext.rb +593 -0
- data/lib/chef/{shef → shell}/model_wrapper.rb +3 -3
- data/lib/chef/{shef/shef_rest.rb → shell/shell_rest.rb} +4 -4
- data/lib/chef/{shef/shef_session.rb → shell/shell_session.rb} +17 -15
- data/lib/chef/shell_out.rb +7 -0
- data/lib/chef/util/windows/net_group.rb +1 -5
- data/lib/chef/version.rb +3 -3
- data/lib/chef/win32/api/process.rb +0 -1
- data/lib/chef/win32/handle.rb +1 -8
- data/lib/chef/win32/registry.rb +371 -0
- data/spec/data/big_json.json +1 -2
- data/spec/data/big_json_plus_one.json +1 -2
- data/spec/data/cookbooks/openldap/attributes/default.rb +10 -9
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
- data/spec/data/nodes/default.rb +3 -3
- data/spec/data/nodes/test.example.com.rb +3 -3
- data/spec/data/nodes/test.rb +3 -3
- data/spec/data/partial_one.erb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
- data/spec/data/{knife-home/.chef/plugins/knife/example_home_subcommand.rb → run_context/cookbooks/circular-dep1/recipes/default.rb} +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
- data/spec/data/{lwrp_const_scoping/resources/conflict.rb → run_context/cookbooks/circular-dep2/recipes/default.rb} +0 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
- data/spec/data/shef-config.rb +7 -0
- data/spec/functional/dsl/registry_helper_spec.rb +63 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +1 -1
- data/spec/functional/knife/exec_spec.rb +2 -2
- data/spec/functional/knife/ssh_spec.rb +5 -1
- data/spec/functional/resource/cookbook_file_spec.rb +7 -19
- data/spec/functional/resource/directory_spec.rb +4 -0
- data/spec/functional/resource/file_spec.rb +56 -22
- data/spec/functional/resource/link_spec.rb +2 -0
- data/spec/functional/resource/registry_spec.rb +576 -0
- data/spec/functional/resource/remote_directory_spec.rb +142 -36
- data/spec/functional/resource/remote_file_spec.rb +18 -0
- data/spec/functional/resource/template_spec.rb +23 -2
- data/spec/functional/run_lock_spec.rb +106 -0
- data/spec/functional/shell_spec.rb +100 -0
- data/spec/functional/win32/registry_helper_spec.rb +632 -0
- data/spec/spec_helper.rb +5 -29
- data/spec/stress/win32/security_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +0 -2
- data/spec/support/platform_helpers.rb +8 -15
- data/spec/support/shared/functional/directory_resource.rb +84 -22
- data/spec/support/shared/functional/file_resource.rb +169 -71
- data/spec/support/shared/functional/securable_resource.rb +143 -119
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +375 -0
- data/spec/support/shared/unit/file_system_support.rb +110 -0
- data/spec/support/shared/unit/platform_introspector.rb +162 -0
- data/spec/unit/api_client/registration_spec.rb +175 -0
- data/spec/unit/api_client_spec.rb +78 -156
- data/spec/unit/application/apply.rb +84 -0
- data/spec/unit/application/client_spec.rb +1 -37
- data/spec/unit/application/knife_spec.rb +5 -0
- data/spec/unit/application_spec.rb +57 -2
- data/spec/unit/checksum/storage/filesystem_spec.rb +1 -1
- data/spec/unit/chef_fs/diff_spec.rb +328 -0
- data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
- data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +237 -0
- data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +568 -0
- data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +220 -0
- data/spec/unit/chef_fs/file_system_spec.rb +136 -0
- data/spec/unit/client_spec.rb +124 -33
- data/spec/unit/config_spec.rb +46 -13
- data/spec/unit/cookbook/synchronizer_spec.rb +1 -49
- data/spec/unit/cookbook/syntax_check_spec.rb +48 -109
- data/spec/unit/cookbook_loader_spec.rb +153 -91
- data/spec/unit/cookbook_manifest_spec.rb +81 -81
- data/spec/unit/cookbook_spec.rb +3 -20
- data/spec/unit/cookbook_version_spec.rb +23 -122
- data/spec/unit/daemon_spec.rb +3 -24
- data/spec/unit/data_bag_spec.rb +6 -4
- data/spec/unit/digester_spec.rb +50 -0
- data/spec/unit/dsl/data_query_spec.rb +66 -0
- data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
- data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +50 -105
- data/spec/unit/environment_spec.rb +0 -130
- data/spec/unit/exceptions_spec.rb +2 -3
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -3
- data/spec/unit/json_compat_spec.rb +15 -7
- data/spec/unit/knife/bootstrap_spec.rb +2 -0
- data/spec/unit/knife/configure_spec.rb +20 -14
- data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
- data/spec/unit/knife/cookbook_test_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +43 -8
- data/spec/unit/knife/core/bootstrap_context_spec.rb +1 -1
- data/spec/unit/knife/core/ui_spec.rb +156 -125
- data/spec/unit/knife/data_bag_create_spec.rb +9 -0
- data/spec/unit/knife/data_bag_edit_spec.rb +1 -4
- data/spec/unit/knife/data_bag_from_file_spec.rb +4 -6
- data/spec/unit/knife/data_bag_show_spec.rb +11 -4
- data/spec/unit/knife/index_rebuild_spec.rb +96 -33
- data/spec/unit/knife/knife_help.rb +7 -7
- data/spec/unit/knife/node_edit_spec.rb +6 -33
- data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
- data/spec/unit/knife/ssh_spec.rb +12 -15
- data/spec/unit/knife/status_spec.rb +2 -2
- data/spec/unit/knife_spec.rb +53 -0
- data/spec/unit/lwrp_spec.rb +59 -42
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/deep_merge_spec.rb +101 -799
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +6 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -37
- data/spec/unit/mixin/securable_spec.rb +5 -3
- data/spec/unit/mixin/template_spec.rb +119 -0
- data/spec/unit/node/attribute_spec.rb +195 -173
- data/spec/unit/node/immutable_collections_spec.rb +139 -0
- data/spec/unit/node_spec.rb +366 -370
- data/spec/unit/platform_spec.rb +9 -10
- data/spec/unit/provider/breakpoint_spec.rb +8 -8
- data/spec/unit/provider/cookbook_file_spec.rb +4 -8
- data/spec/unit/provider/directory_spec.rb +96 -64
- data/spec/unit/provider/env_spec.rb +2 -2
- data/spec/unit/provider/file_spec.rb +48 -39
- data/spec/unit/provider/group/dscl_spec.rb +0 -36
- data/spec/unit/provider/group/gpasswd_spec.rb +9 -16
- data/spec/unit/provider/group/groupadd_spec.rb +4 -3
- data/spec/unit/provider/group/groupmod_spec.rb +1 -0
- data/spec/unit/provider/group/pw_spec.rb +15 -12
- data/spec/unit/provider/group/usermod_spec.rb +6 -21
- data/spec/unit/provider/group/windows_spec.rb +8 -0
- data/spec/unit/provider/group_spec.rb +6 -28
- data/spec/unit/provider/http_request_spec.rb +28 -69
- data/spec/unit/provider/ifconfig_spec.rb +2 -2
- data/spec/unit/provider/ohai_spec.rb +4 -4
- data/spec/unit/provider/package/apt_spec.rb +0 -1
- data/spec/unit/provider/package/ips_spec.rb +0 -1
- data/spec/unit/provider/package/portage_spec.rb +0 -44
- data/spec/unit/provider/package/rpm_spec.rb +0 -12
- data/spec/unit/provider/package/rubygems_spec.rb +1 -44
- data/spec/unit/provider/package/yum_spec.rb +39 -36
- data/spec/unit/provider/package_spec.rb +7 -5
- data/spec/unit/provider/registry_key_spec.rb +269 -0
- data/spec/unit/provider/remote_directory_spec.rb +7 -3
- data/spec/unit/provider/remote_file_spec.rb +36 -0
- data/spec/unit/provider/route_spec.rb +4 -3
- data/spec/unit/provider/ruby_block_spec.rb +8 -0
- data/spec/unit/provider/service/arch_service_spec.rb +5 -5
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/freebsd_service_spec.rb +5 -5
- data/spec/unit/provider/service/init_service_spec.rb +27 -4
- data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
- data/spec/unit/provider/service/invokercd_service_spec.rb +4 -4
- data/spec/unit/provider/service/macosx_spec.rb +11 -66
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/simple_service_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_service_spec.rb +9 -9
- data/spec/unit/provider/subversion_spec.rb +1 -1
- data/spec/unit/provider/template_spec.rb +35 -11
- data/spec/unit/provider/user/dscl_spec.rb +285 -681
- data/spec/unit/provider/user/useradd_spec.rb +1 -22
- data/spec/unit/provider/user_spec.rb +1 -1
- data/spec/unit/recipe_spec.rb +10 -8
- data/spec/unit/registry_helper_spec.rb +374 -0
- data/spec/unit/resource/mount_spec.rb +0 -11
- data/spec/unit/resource/registry_key_spec.rb +171 -0
- data/spec/unit/resource/remote_file_spec.rb +21 -23
- data/spec/unit/resource/ruby_block_spec.rb +7 -3
- data/spec/unit/resource/service_spec.rb +11 -0
- data/spec/unit/resource_spec.rb +4 -19
- data/spec/unit/rest/auth_credentials_spec.rb +2 -19
- data/spec/unit/rest_spec.rb +130 -284
- data/spec/unit/run_context/cookbook_compiler_spec.rb +181 -0
- data/spec/unit/run_context_spec.rb +18 -4
- data/spec/unit/run_list_spec.rb +0 -209
- data/spec/unit/run_lock_spec.rb +37 -0
- data/spec/unit/runner_spec.rb +101 -2
- data/spec/unit/scan_access_control_spec.rb +4 -4
- data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
- data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
- data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +14 -69
- data/spec/unit/shell_out_spec.rb +18 -0
- data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
- metadata +275 -234
- checksums.yaml +0 -15
- data/README.rdoc +0 -177
- data/distro/common/html/knife-recipe.1.html +0 -92
- data/lib/chef/certificate.rb +0 -161
- data/lib/chef/checksum.rb +0 -167
- data/lib/chef/checksum_cache.rb +0 -190
- data/lib/chef/cookbook_version_selector.rb +0 -168
- data/lib/chef/couchdb.rb +0 -246
- data/lib/chef/index_queue/amqp_client.rb +0 -116
- data/lib/chef/index_queue/consumer.rb +0 -76
- data/lib/chef/index_queue/indexable.rb +0 -109
- data/lib/chef/knife/bootstrap/ubuntu12.10-gems.erb +0 -60
- data/lib/chef/monkey_patches/moneta.rb +0 -50
- data/lib/chef/monkey_patches/uri.rb +0 -70
- data/lib/chef/openid_registration.rb +0 -187
- data/lib/chef/provider/user/solaris.rb +0 -90
- data/lib/chef/solr_query.rb +0 -187
- data/lib/chef/solr_query/lucene.treetop +0 -150
- data/lib/chef/solr_query/lucene_nodes.rb +0 -285
- data/lib/chef/solr_query/query_transform.rb +0 -65
- data/lib/chef/solr_query/solr_http_request.rb +0 -132
- data/lib/chef/webui_user.rb +0 -231
- data/spec/data/cookbooks/openldap/files/default/.dotfile +0 -1
- data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +0 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +0 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +0 -1
- data/spec/data/mac_users/10.7-8.plist.xml +0 -559
- data/spec/data/mac_users/10.7-8.shadow.xml +0 -11
- data/spec/data/mac_users/10.7.plist.xml +0 -559
- data/spec/data/mac_users/10.7.shadow.xml +0 -11
- data/spec/data/mac_users/10.8.plist.xml +0 -559
- data/spec/data/mac_users/10.8.shadow.xml +0 -21
- data/spec/data/mac_users/10.9.plist.xml +0 -560
- data/spec/data/mac_users/10.9.shadow.xml +0 -21
- data/spec/functional/resource/base.rb +0 -40
- data/spec/functional/resource/group_spec.rb +0 -343
- data/spec/functional/resource/user/dscl_spec.rb +0 -199
- data/spec/unit/certificate_spec.rb +0 -76
- data/spec/unit/checksum_cache_spec.rb +0 -209
- data/spec/unit/checksum_spec.rb +0 -94
- data/spec/unit/couchdb_spec.rb +0 -274
- data/spec/unit/index_queue_spec.rb +0 -391
- data/spec/unit/mixin/language_spec.rb +0 -305
- data/spec/unit/openid_registration_spec.rb +0 -153
- data/spec/unit/provider/user/solaris_spec.rb +0 -414
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +0 -47
- data/spec/unit/solr_query/query_transform_spec.rb +0 -454
- data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
- data/spec/unit/solr_query_spec.rb +0 -203
- data/spec/unit/webui_user_spec.rb +0 -238
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>SALTED-SHA512-PBKDF2</key>
|
|
6
|
-
<dict>
|
|
7
|
-
<key>entropy</key>
|
|
8
|
-
<data>
|
|
9
|
-
EmAakNsXy/i6SAjmOC+w07nYpsGhkEd79oCrIa+2BlRnE25VzCCKb3QVbj2v
|
|
10
|
-
IPsTNp70t7r6BH2ANZ+0akikrczVSOuzOFGwk0fMqENBp/k6JxRzQ/ifuEP7
|
|
11
|
-
RsABfSZK+kl2uqz5QbkVvR7ByiTDCz51ngJAPgL1n+f/WTinY2w=
|
|
12
|
-
</data>
|
|
13
|
-
<key>iterations</key>
|
|
14
|
-
<integer>34482</integer>
|
|
15
|
-
<key>salt</key>
|
|
16
|
-
<data>
|
|
17
|
-
7pVL5HL9xg3fiUhHgUM5k2JfAGr27IEMCPSafkE5RqE=
|
|
18
|
-
</data>
|
|
19
|
-
</dict>
|
|
20
|
-
</dict>
|
|
21
|
-
</plist>
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Author:: Kaustubh Deorukhkar (<kaustubh@clogeny.com>)
|
|
3
|
-
# Copyright:: Copyright (c) 2013 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
|
-
|
|
21
|
-
def ohai
|
|
22
|
-
# provider is platform-dependent, we need platform ohai data:
|
|
23
|
-
@OHAI_SYSTEM ||= begin
|
|
24
|
-
ohai = Ohai::System.new
|
|
25
|
-
ohai.require_plugin("os")
|
|
26
|
-
ohai.require_plugin("platform")
|
|
27
|
-
ohai.require_plugin("passwd")
|
|
28
|
-
ohai
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def run_context
|
|
33
|
-
@run_context ||= begin
|
|
34
|
-
node = Chef::Node.new
|
|
35
|
-
node.default[:platform] = ohai[:platform]
|
|
36
|
-
node.default[:platform_version] = ohai[:platform_version]
|
|
37
|
-
events = Chef::EventDispatch::Dispatcher.new
|
|
38
|
-
Chef::RunContext.new(node, {}, events)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
@@ -1,343 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Author:: Chirag Jog (<chirag@clogeny.com>)
|
|
3
|
-
# Author:: Siddheshwar More (<siddheshwar.more@clogeny.com>)
|
|
4
|
-
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
|
5
|
-
# License:: Apache License, Version 2.0
|
|
6
|
-
#
|
|
7
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
-
# you may not use this file except in compliance with the License.
|
|
9
|
-
# You may obtain a copy of the License at
|
|
10
|
-
#
|
|
11
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
#
|
|
13
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
require 'spec_helper'
|
|
21
|
-
require 'functional/resource/base'
|
|
22
|
-
|
|
23
|
-
# Chef::Resource::Group are turned off on Mac OS X 10.6 due to caching
|
|
24
|
-
# issues around Etc.getgrnam() not picking up the group membership
|
|
25
|
-
# changes that are done on the system. Etc.endgrent is not functioning
|
|
26
|
-
# correctly on certain 10.6 boxes.
|
|
27
|
-
describe Chef::Resource::Group, :requires_root_or_running_windows, :not_supported_on_mac_osx_106 do
|
|
28
|
-
def group_should_exist(group)
|
|
29
|
-
case ohai[:platform_family]
|
|
30
|
-
when "debian", "fedora", "rhel", "suse", "gentoo", "slackware", "arch"
|
|
31
|
-
expect { Etc::getgrnam(group) }.to_not raise_error(ArgumentError, "can't find group for #{group}")
|
|
32
|
-
expect(group).to eq(Etc::getgrnam(group).name)
|
|
33
|
-
when "windows"
|
|
34
|
-
expect { Chef::Util::Windows::NetGroup.new(group).local_get_members }.to_not raise_error(ArgumentError, "The group name could not be found.")
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def user_exist_in_group?(user)
|
|
39
|
-
case ohai[:platform_family]
|
|
40
|
-
when "windows"
|
|
41
|
-
Chef::Util::Windows::NetGroup.new(group_name).local_get_members.include?(user)
|
|
42
|
-
else
|
|
43
|
-
Etc::getgrnam(group_name).mem.include?(user)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def group_should_not_exist(group)
|
|
48
|
-
case ohai[:platform_family]
|
|
49
|
-
when "debian", "fedora", "rhel", "suse", "gentoo", "slackware", "arch"
|
|
50
|
-
expect { Etc::getgrnam(group) }.to raise_error(ArgumentError, "can't find group for #{group}")
|
|
51
|
-
when "windows"
|
|
52
|
-
expect { Chef::Util::Windows::NetGroup.new(group).local_get_members }.to raise_error(ArgumentError, "The group name could not be found.")
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def compare_gid(resource, gid)
|
|
57
|
-
return resource.gid == Etc::getgrnam(resource.name).gid if unix?
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def user(username)
|
|
61
|
-
usr = Chef::Resource::User.new("#{username}", run_context)
|
|
62
|
-
if ohai[:platform_family] == "windows"
|
|
63
|
-
usr.password("ComplexPass11!")
|
|
64
|
-
end
|
|
65
|
-
usr
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def create_user(username)
|
|
69
|
-
user(username).run_action(:create)
|
|
70
|
-
# TODO: User shouldn't exist
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def remove_user(username)
|
|
74
|
-
user(username).run_action(:remove)
|
|
75
|
-
# TODO: User shouldn't exist
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
shared_examples_for "correct group management" do
|
|
79
|
-
def add_members_to_group(members)
|
|
80
|
-
temp_resource = group_resource.dup
|
|
81
|
-
temp_resource.members(members)
|
|
82
|
-
temp_resource.excluded_members([ ])
|
|
83
|
-
temp_resource.append(true)
|
|
84
|
-
temp_resource.run_action(:modify)
|
|
85
|
-
members.each do |member|
|
|
86
|
-
user_exist_in_group?(member).should == true
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def create_group
|
|
91
|
-
temp_resource = group_resource.dup
|
|
92
|
-
temp_resource.members([ ])
|
|
93
|
-
temp_resource.excluded_members([ ])
|
|
94
|
-
temp_resource.run_action(:create)
|
|
95
|
-
group_should_exist(group_name)
|
|
96
|
-
included_members.each do |member|
|
|
97
|
-
user_exist_in_group?(member).should == false
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
before(:each) do
|
|
102
|
-
create_group
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
after(:each) do
|
|
106
|
-
group_resource.run_action(:remove)
|
|
107
|
-
group_should_not_exist(group_name)
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
describe "when append is not set" do
|
|
111
|
-
let(:included_members) { ["spec-Eric"] }
|
|
112
|
-
|
|
113
|
-
before do
|
|
114
|
-
create_user("spec-Eric")
|
|
115
|
-
create_user("spec-Gordon")
|
|
116
|
-
add_members_to_group(["spec-Gordon"])
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
after do
|
|
120
|
-
remove_user("spec-Eric")
|
|
121
|
-
remove_user("spec-Gordon")
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
it "should remove the existing users and add the new users to the group" do
|
|
125
|
-
group_resource.run_action(tested_action)
|
|
126
|
-
|
|
127
|
-
user_exist_in_group?("spec-Eric").should == true
|
|
128
|
-
user_exist_in_group?("spec-Gordon").should == false
|
|
129
|
-
end
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
describe "when append is set" do
|
|
133
|
-
before(:each) do
|
|
134
|
-
group_resource.append(true)
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
describe "when the users exist" do
|
|
138
|
-
before do
|
|
139
|
-
(included_members + excluded_members).each do |member|
|
|
140
|
-
create_user(member)
|
|
141
|
-
end
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
after do
|
|
145
|
-
(included_members + excluded_members).each do |member|
|
|
146
|
-
remove_user(member)
|
|
147
|
-
end
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
it "should add included members to the group" do
|
|
151
|
-
group_resource.run_action(tested_action)
|
|
152
|
-
|
|
153
|
-
included_members.each do |member|
|
|
154
|
-
user_exist_in_group?(member).should == true
|
|
155
|
-
end
|
|
156
|
-
excluded_members.each do |member|
|
|
157
|
-
user_exist_in_group?(member).should == false
|
|
158
|
-
end
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
describe "when group contains some users" do
|
|
162
|
-
before(:each) do
|
|
163
|
-
add_members_to_group([ "spec-Gordon", "spec-Anthony" ])
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
it "should add the included users and remove excluded users" do
|
|
167
|
-
group_resource.run_action(tested_action)
|
|
168
|
-
|
|
169
|
-
included_members.each do |member|
|
|
170
|
-
user_exist_in_group?(member).should == true
|
|
171
|
-
end
|
|
172
|
-
excluded_members.each do |member|
|
|
173
|
-
user_exist_in_group?(member).should == false
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
describe "when the users doesn't exist" do
|
|
180
|
-
describe "when append is not set" do
|
|
181
|
-
it "should raise an error" do
|
|
182
|
-
lambda { @grp_resource.run_action(tested_action) }.should raise_error
|
|
183
|
-
end
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
describe "when append is set" do
|
|
187
|
-
it "should raise an error" do
|
|
188
|
-
lambda { @grp_resource.run_action(tested_action) }.should raise_error
|
|
189
|
-
end
|
|
190
|
-
end
|
|
191
|
-
end
|
|
192
|
-
end
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
let(:group_name) { "cheftest-#{SecureRandom.random_number(9999)}" }
|
|
196
|
-
let(:included_members) { nil }
|
|
197
|
-
let(:excluded_members) { nil }
|
|
198
|
-
let(:group_resource) {
|
|
199
|
-
group = Chef::Resource::Group.new(group_name, run_context)
|
|
200
|
-
group.members(included_members)
|
|
201
|
-
group.excluded_members(excluded_members)
|
|
202
|
-
group
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
it "append should be false by default" do
|
|
206
|
-
group_resource.append.should == false
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
describe "group create action" do
|
|
210
|
-
after(:each) do
|
|
211
|
-
group_resource.run_action(:remove)
|
|
212
|
-
group_should_not_exist(group_name)
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
it "should create a group" do
|
|
216
|
-
group_resource.run_action(:create)
|
|
217
|
-
group_should_exist(group_name)
|
|
218
|
-
end
|
|
219
|
-
|
|
220
|
-
describe "when group name is length 256", :windows_only do
|
|
221
|
-
let!(:group_name) { "theoldmanwalkingdownthestreetalwayshadagood\
|
|
222
|
-
smileonhisfacetheoldmanwalkingdownthestreetalwayshadagoodsmileonhisface\
|
|
223
|
-
theoldmanwalkingdownthestreetalwayshadagoodsmileonhisfacetheoldmanwalking\
|
|
224
|
-
downthestreetalwayshadagoodsmileonhisfacetheoldmanwalkingdownthestree" }
|
|
225
|
-
|
|
226
|
-
it "should create a group" do
|
|
227
|
-
group_resource.run_action(:create)
|
|
228
|
-
group_should_exist(group_name)
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
describe "when group name length is more than 256", :windows_only do
|
|
233
|
-
let!(:group_name) { "theoldmanwalkingdownthestreetalwayshadagood\
|
|
234
|
-
smileonhisfacetheoldmanwalkingdownthestreetalwayshadagoodsmileonhisface\
|
|
235
|
-
theoldmanwalkingdownthestreetalwayshadagoodsmileonhisfacetheoldmanwalking\
|
|
236
|
-
downthestreetalwayshadagoodsmileonhisfacetheoldmanwalkingdownthestreeQQQQQQ" }
|
|
237
|
-
|
|
238
|
-
it "should not create a group" do
|
|
239
|
-
lambda { group_resource.run_action(:create) }.should raise_error
|
|
240
|
-
group_should_not_exist(group_name)
|
|
241
|
-
end
|
|
242
|
-
end
|
|
243
|
-
|
|
244
|
-
# not_supported_on_solaris because of the use of excluded_members
|
|
245
|
-
describe "should raise an error when same member is included in the members and excluded_members", :not_supported_on_solaris do
|
|
246
|
-
it "should raise an error" do
|
|
247
|
-
invalid_resource = group_resource.dup
|
|
248
|
-
invalid_resource.members(["Jack"])
|
|
249
|
-
invalid_resource.excluded_members(["Jack"])
|
|
250
|
-
lambda { invalid_resource.run_action(:create)}.should raise_error(Chef::Exceptions::ConflictingMembersInGroup)
|
|
251
|
-
end
|
|
252
|
-
end
|
|
253
|
-
end
|
|
254
|
-
|
|
255
|
-
describe "group remove action" do
|
|
256
|
-
describe "when there is a group" do
|
|
257
|
-
before do
|
|
258
|
-
group_resource.run_action(:create)
|
|
259
|
-
group_should_exist(group_name)
|
|
260
|
-
end
|
|
261
|
-
|
|
262
|
-
it "should remove a group" do
|
|
263
|
-
group_resource.run_action(:remove)
|
|
264
|
-
group_should_not_exist(group_name)
|
|
265
|
-
end
|
|
266
|
-
end
|
|
267
|
-
|
|
268
|
-
describe "when there is no group" do
|
|
269
|
-
it "should be no-op" do
|
|
270
|
-
group_resource.run_action(:remove)
|
|
271
|
-
group_should_not_exist(group_name)
|
|
272
|
-
end
|
|
273
|
-
end
|
|
274
|
-
end
|
|
275
|
-
|
|
276
|
-
describe "group modify action", :not_supported_on_solaris do
|
|
277
|
-
let(:included_members) { ["spec-Gordon", "spec-Eric"] }
|
|
278
|
-
let(:excluded_members) { ["spec-Anthony"] }
|
|
279
|
-
let(:tested_action) { :modify }
|
|
280
|
-
|
|
281
|
-
describe "when there is no group" do
|
|
282
|
-
it "should raise an error" do
|
|
283
|
-
lambda { group_resource.run_action(:modify) }.should raise_error
|
|
284
|
-
end
|
|
285
|
-
end
|
|
286
|
-
|
|
287
|
-
describe "when there is a group" do
|
|
288
|
-
it_behaves_like "correct group management"
|
|
289
|
-
end
|
|
290
|
-
end
|
|
291
|
-
|
|
292
|
-
describe "group manage action", :not_supported_on_solaris do
|
|
293
|
-
let(:included_members) { ["spec-Gordon", "spec-Eric"] }
|
|
294
|
-
let(:excluded_members) { ["spec-Anthony"] }
|
|
295
|
-
let(:tested_action) { :manage }
|
|
296
|
-
|
|
297
|
-
describe "when there is no group" do
|
|
298
|
-
it "should raise an error" do
|
|
299
|
-
lambda { group_resource.run_action(:manage) }.should_not raise_error
|
|
300
|
-
group_should_not_exist(group_name)
|
|
301
|
-
end
|
|
302
|
-
end
|
|
303
|
-
|
|
304
|
-
describe "when there is a group" do
|
|
305
|
-
it_behaves_like "correct group management"
|
|
306
|
-
end
|
|
307
|
-
end
|
|
308
|
-
|
|
309
|
-
describe "group resource with Usermod provider", :solaris_only do
|
|
310
|
-
describe "when excluded_members is set" do
|
|
311
|
-
let(:excluded_members) { ["spec-Anthony"] }
|
|
312
|
-
|
|
313
|
-
it ":manage should raise an error" do
|
|
314
|
-
lambda {group_resource.run_action(:manage) }.should raise_error
|
|
315
|
-
end
|
|
316
|
-
|
|
317
|
-
it ":modify should raise an error" do
|
|
318
|
-
lambda {group_resource.run_action(:modify) }.should raise_error
|
|
319
|
-
end
|
|
320
|
-
|
|
321
|
-
it ":create should raise an error" do
|
|
322
|
-
lambda {group_resource.run_action(:create) }.should raise_error
|
|
323
|
-
end
|
|
324
|
-
end
|
|
325
|
-
|
|
326
|
-
describe "when append is not set" do
|
|
327
|
-
let(:included_members) { ["spec-Gordon", "spec-Eric"] }
|
|
328
|
-
|
|
329
|
-
before(:each) do
|
|
330
|
-
group_resource.append(false)
|
|
331
|
-
end
|
|
332
|
-
|
|
333
|
-
it ":manage should raise an error" do
|
|
334
|
-
lambda {group_resource.run_action(:manage) }.should raise_error
|
|
335
|
-
end
|
|
336
|
-
|
|
337
|
-
it ":modify should raise an error" do
|
|
338
|
-
lambda {group_resource.run_action(:modify) }.should raise_error
|
|
339
|
-
end
|
|
340
|
-
end
|
|
341
|
-
end
|
|
342
|
-
end
|
|
343
|
-
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2014 Chef Software, Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require 'spec_helper'
|
|
19
|
-
require 'chef/mixin/shell_out'
|
|
20
|
-
require 'functional/resource/base'
|
|
21
|
-
|
|
22
|
-
metadata = {
|
|
23
|
-
:unix_only => true,
|
|
24
|
-
:requires_root => true,
|
|
25
|
-
:provider => {:user => Chef::Provider::User::Dscl}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
describe "Chef::Resource::User with Chef::Provider::User::Dscl provider", metadata do
|
|
29
|
-
include Chef::Mixin::ShellOut
|
|
30
|
-
|
|
31
|
-
def clean_user
|
|
32
|
-
begin
|
|
33
|
-
shell_out!("/usr/bin/dscl . -delete '/Users/#{username}'")
|
|
34
|
-
rescue Mixlib::ShellOut::ShellCommandFailed
|
|
35
|
-
# Raised when the user is already cleaned
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def user_should_exist
|
|
40
|
-
shell_out("/usr/bin/dscl . -ls /Users").stdout.should include username
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def check_password(pass)
|
|
44
|
-
# In order to test the password we use dscl passwd command since
|
|
45
|
-
# that's the only command that gets the user password from CLI.
|
|
46
|
-
shell_out("dscl . -passwd /Users/greatchef #{pass} new_password").exitstatus.should == 0
|
|
47
|
-
# Now reset the password back
|
|
48
|
-
shell_out("dscl . -passwd /Users/greatchef new_password #{pass}").exitstatus.should == 0
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
let(:node) do
|
|
52
|
-
n = Chef::Node.new
|
|
53
|
-
n.consume_external_attrs(ohai.data.dup, {})
|
|
54
|
-
n
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
let(:events) do
|
|
58
|
-
Chef::EventDispatch::Dispatcher.new
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
let(:run_context) do
|
|
62
|
-
Chef::RunContext.new(node, {}, events)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
let(:username) do
|
|
66
|
-
"greatchef"
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
let(:uid) { nil }
|
|
70
|
-
let(:gid) { 20 }
|
|
71
|
-
let(:home) { nil }
|
|
72
|
-
let(:manage_home) { false }
|
|
73
|
-
let(:password) { "XXXYYYZZZ" }
|
|
74
|
-
let(:comment) { "Great Chef" }
|
|
75
|
-
let(:shell) { "/bin/bash" }
|
|
76
|
-
let(:salt) { nil }
|
|
77
|
-
let(:iterations) { nil }
|
|
78
|
-
|
|
79
|
-
let(:user_resource) do
|
|
80
|
-
r = Chef::Resource::User.new("TEST USER RESOURCE", run_context)
|
|
81
|
-
r.username(username)
|
|
82
|
-
r.uid(uid)
|
|
83
|
-
r.gid(gid)
|
|
84
|
-
r.home(home)
|
|
85
|
-
r.shell(shell)
|
|
86
|
-
r.comment(comment)
|
|
87
|
-
r.manage_home(manage_home)
|
|
88
|
-
r.password(password)
|
|
89
|
-
r.salt(salt)
|
|
90
|
-
r.iterations(iterations)
|
|
91
|
-
r
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
before do
|
|
95
|
-
clean_user
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
after(:each) do
|
|
99
|
-
clean_user
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
describe "action :create" do
|
|
103
|
-
it "should create the user" do
|
|
104
|
-
user_resource.run_action(:create)
|
|
105
|
-
user_should_exist
|
|
106
|
-
check_password(password)
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
describe "when user exists" do
|
|
111
|
-
before do
|
|
112
|
-
existing_resource = user_resource.dup
|
|
113
|
-
existing_resource.run_action(:create)
|
|
114
|
-
user_should_exist
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
describe "when password is updated" do
|
|
118
|
-
it "should update the password of the user" do
|
|
119
|
-
user_resource.password("mykitchen")
|
|
120
|
-
user_resource.run_action(:create)
|
|
121
|
-
check_password("mykitchen")
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
describe "when password is being set via shadow hash" do
|
|
127
|
-
let(:password) {
|
|
128
|
-
if node[:platform_version].start_with?("10.7.")
|
|
129
|
-
# On Mac 10.7 we only need to set the password
|
|
130
|
-
"c9b3bd1a0cde797eef0eff16c580dab996ba3a21961cccc\
|
|
131
|
-
d0f5e65c61558243e50b1a490088bd4824e3b35562d383ca02260398\
|
|
132
|
-
ef1979b302212ec1c5383d1d05fc8d843"
|
|
133
|
-
else
|
|
134
|
-
"c734b6e4787c3727bb35e29fdd92b97c\
|
|
135
|
-
1de12df509577a045728255ec7c6c5f5\
|
|
136
|
-
c18efa05ed02b682ffa7ebc05119900e\
|
|
137
|
-
b1d4880833aa7a190afc13e2bf0936b8\
|
|
138
|
-
20123e8c98f0f9bcac2a629d9163caac\
|
|
139
|
-
9464a8c234f3919082400b4f939bb77b\
|
|
140
|
-
c5adbbac718b7eb99463a7b679571e0f\
|
|
141
|
-
1c9fef2ef08d0b9e9c2bcf644eed2ffc"
|
|
142
|
-
end
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
let(:iterations) { 25000 }
|
|
146
|
-
let(:salt) { "9e2e7d5ee473b496fd24cf0bbfcaedfcb291ee21740e570d1e917e874f8788ca" }
|
|
147
|
-
|
|
148
|
-
it "action :create should create the user" do
|
|
149
|
-
user_resource.run_action(:create)
|
|
150
|
-
user_should_exist
|
|
151
|
-
check_password("soawesome")
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
describe "when user exists" do
|
|
155
|
-
before do
|
|
156
|
-
existing_resource = user_resource.dup
|
|
157
|
-
existing_resource.run_action(:create)
|
|
158
|
-
user_should_exist
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
describe "when password is updated" do
|
|
162
|
-
it "should update the password of the user" do
|
|
163
|
-
user_resource.password("mykitchen")
|
|
164
|
-
user_resource.run_action(:create)
|
|
165
|
-
check_password("mykitchen")
|
|
166
|
-
end
|
|
167
|
-
end
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
describe "when a user is member of some groups" do
|
|
172
|
-
let(:groups) { ["staff", "operator"] }
|
|
173
|
-
|
|
174
|
-
before do
|
|
175
|
-
existing_resource = user_resource.dup
|
|
176
|
-
existing_resource.run_action(:create)
|
|
177
|
-
|
|
178
|
-
groups.each do |group|
|
|
179
|
-
shell_out!("/usr/bin/dscl . -append '/Groups/#{group}' GroupMembership #{username}")
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
after do
|
|
184
|
-
groups.each do |group|
|
|
185
|
-
# Do not raise an error when user is correctly removed
|
|
186
|
-
shell_out("/usr/bin/dscl . -delete '/Groups/#{group}' GroupMembership #{username}")
|
|
187
|
-
end
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
it ":remove action removes the user from the groups and deletes the user"do
|
|
191
|
-
user_resource.run_action(:remove)
|
|
192
|
-
groups.each do |group|
|
|
193
|
-
# Do not raise an error when group is empty
|
|
194
|
-
shell_out("dscl . read /Groups/staff GroupMembership").stdout.should_not include(group)
|
|
195
|
-
end
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
end
|