chef 14.13.11-universal-mingw32 → 14.14.14-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +72 -72
- data/LICENSE +201 -201
- data/README.md +240 -240
- data/Rakefile +72 -72
- data/bin/chef-apply +24 -24
- data/bin/chef-client +25 -25
- data/bin/chef-resource-inspector +26 -26
- data/bin/chef-service-manager +37 -37
- data/bin/chef-shell +31 -31
- data/bin/chef-solo +24 -24
- data/bin/chef-windows-service +34 -34
- data/bin/knife +24 -24
- data/chef-universal-mingw32.gemspec +24 -24
- data/chef.gemspec +62 -62
- data/distro/powershell/chef/chef.psm1 +459 -459
- data/ext/win32-eventlog/Rakefile +53 -53
- data/ext/win32-eventlog/chef-log.man +56 -56
- data/lib/.DS_Store +0 -0
- data/lib/chef.rb +34 -34
- data/lib/chef/.DS_Store +0 -0
- data/lib/chef/api_client.rb +228 -228
- data/lib/chef/api_client/registration.rb +200 -200
- data/lib/chef/api_client_v1.rb +326 -326
- data/lib/chef/application.rb +398 -398
- data/lib/chef/application/apply.rb +226 -226
- data/lib/chef/application/client.rb +559 -559
- data/lib/chef/application/exit_code.rb +164 -164
- data/lib/chef/application/knife.rb +221 -221
- data/lib/chef/application/solo.rb +381 -381
- data/lib/chef/application/windows_service.rb +337 -337
- data/lib/chef/application/windows_service_manager.rb +204 -204
- data/lib/chef/applications.rb +4 -4
- data/lib/chef/audit/audit_event_proxy.rb +93 -93
- data/lib/chef/audit/audit_reporter.rb +176 -176
- data/lib/chef/audit/control_group_data.rb +145 -145
- data/lib/chef/audit/logger.rb +36 -36
- data/lib/chef/audit/rspec_formatter.rb +37 -37
- data/lib/chef/audit/runner.rb +196 -196
- data/lib/chef/blacklist.rb +81 -81
- data/lib/chef/chef_class.rb +248 -248
- data/lib/chef/chef_fs.rb +59 -59
- data/lib/chef/chef_fs/chef_fs_data_store.rb +870 -870
- data/lib/chef/chef_fs/command_line.rb +291 -291
- data/lib/chef/chef_fs/config.rb +284 -284
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -26
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +39 -39
- data/lib/chef/chef_fs/data_handler/client_key_data_handler.rb +11 -11
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +35 -35
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -38
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +67 -67
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +207 -207
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -40
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +55 -55
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -36
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +36 -36
- data/lib/chef/chef_fs/data_handler/organization_invites_data_handler.rb +17 -17
- data/lib/chef/chef_fs/data_handler/organization_members_data_handler.rb +17 -17
- data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +48 -48
- data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +33 -33
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -40
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +29 -29
- data/lib/chef/chef_fs/file_pattern.rb +301 -301
- data/lib/chef/chef_fs/file_system.rb +431 -431
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -47
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +187 -187
- data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +65 -65
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +67 -67
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +75 -75
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +196 -196
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifact_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +106 -106
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +208 -208
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +78 -78
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_subdir.rb +61 -61
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_acl_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +105 -105
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +76 -76
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_entry.rb +19 -19
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +67 -67
- data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +56 -56
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +51 -51
- data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +35 -35
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +65 -65
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +64 -64
- data/lib/chef/chef_fs/file_system/chef_server/policies_acl_dir.rb +41 -41
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +158 -158
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +135 -135
- data/lib/chef/chef_fs/file_system/chef_server/policy_groups_dir.rb +43 -43
- data/lib/chef/chef_fs/file_system/chef_server/policy_revision_entry.rb +38 -38
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +176 -176
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +207 -207
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +45 -45
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +111 -111
- data/lib/chef/chef_fs/file_system/exceptions.rb +105 -105
- data/lib/chef/chef_fs/file_system/memory/memory_dir.rb +53 -53
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +20 -20
- data/lib/chef/chef_fs/file_system/memory/memory_root.rb +23 -23
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +62 -62
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +32 -32
- data/lib/chef/chef_fs/file_system/repository/acl.rb +45 -45
- data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +50 -50
- data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +155 -155
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +41 -41
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +143 -143
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +177 -177
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +232 -232
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/repository/client.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/client_key.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/client_keys_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/container.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +36 -36
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +51 -51
- data/lib/chef/chef_fs/file_system/repository/data_bag.rb +39 -39
- data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +39 -39
- data/lib/chef/chef_fs/file_system/repository/directory.rb +167 -167
- data/lib/chef/chef_fs/file_system/repository/environment.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +151 -151
- data/lib/chef/chef_fs/file_system/repository/group.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/node.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +59 -59
- data/lib/chef/chef_fs/file_system/repository/policies_dir.rb +42 -42
- data/lib/chef/chef_fs/file_system/repository/policy.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/policy_group.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/role.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/user.rb +38 -38
- data/lib/chef/chef_fs/file_system/repository/users_dir.rb +37 -37
- data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +34 -34
- data/lib/chef/chef_fs/file_system_cache.rb +80 -80
- data/lib/chef/chef_fs/knife.rb +161 -161
- data/lib/chef/chef_fs/parallelizer.rb +103 -103
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +35 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +277 -277
- data/lib/chef/chef_fs/path_utils.rb +127 -127
- data/lib/chef/client.rb +1037 -1037
- data/lib/chef/config.rb +84 -84
- data/lib/chef/config_fetcher.rb +72 -72
- data/lib/chef/constants.rb +28 -28
- data/lib/chef/cookbook/chefignore.rb +78 -78
- data/lib/chef/cookbook/cookbook_collection.rb +63 -63
- data/lib/chef/cookbook/cookbook_version_loader.rb +267 -267
- data/lib/chef/cookbook/file_system_file_vendor.rb +58 -58
- data/lib/chef/cookbook/file_vendor.rb +71 -71
- data/lib/chef/cookbook/gem_installer.rb +100 -95
- data/lib/chef/cookbook/manifest_v0.rb +73 -73
- data/lib/chef/cookbook/manifest_v2.rb +45 -45
- data/lib/chef/cookbook/metadata.rb +804 -804
- data/lib/chef/cookbook/remote_file_vendor.rb +87 -87
- data/lib/chef/cookbook/synchronizer.rb +312 -312
- data/lib/chef/cookbook/syntax_check.rb +260 -260
- data/lib/chef/cookbook_loader.rb +208 -208
- data/lib/chef/cookbook_manifest.rb +328 -328
- data/lib/chef/cookbook_site_streaming_uploader.rb +241 -241
- data/lib/chef/cookbook_uploader.rb +156 -156
- data/lib/chef/cookbook_version.rb +544 -544
- data/lib/chef/daemon.rb +131 -131
- data/lib/chef/data_bag.rb +174 -174
- data/lib/chef/data_bag_item.rb +209 -209
- data/lib/chef/data_collector.rb +565 -565
- data/lib/chef/data_collector/messages.rb +100 -100
- data/lib/chef/data_collector/messages/helpers.rb +159 -159
- data/lib/chef/data_collector/resource_report.rb +123 -123
- data/lib/chef/decorator.rb +81 -81
- data/lib/chef/decorator/lazy.rb +60 -60
- data/lib/chef/decorator/lazy_array.rb +59 -59
- data/lib/chef/decorator/unchain.rb +43 -43
- data/lib/chef/delayed_evaluator.rb +21 -21
- data/lib/chef/deprecated.rb +248 -248
- data/lib/chef/deprecation/warnings.rb +38 -38
- data/lib/chef/digester.rb +74 -74
- data/lib/chef/dsl.rb +6 -6
- data/lib/chef/dsl/.DS_Store +0 -0
- data/lib/chef/dsl/audit.rb +51 -51
- data/lib/chef/dsl/chef_provisioning.rb +57 -57
- data/lib/chef/dsl/cheffish.rb +65 -65
- data/lib/chef/dsl/core.rb +52 -52
- data/lib/chef/dsl/data_query.rb +103 -103
- data/lib/chef/dsl/declare_resource.rb +319 -319
- data/lib/chef/dsl/definitions.rb +43 -43
- data/lib/chef/dsl/include_attribute.rb +57 -57
- data/lib/chef/dsl/include_recipe.rb +40 -40
- data/lib/chef/dsl/platform_introspection.rb +269 -269
- data/lib/chef/dsl/powershell.rb +29 -29
- data/lib/chef/dsl/reboot_pending.rb +57 -57
- data/lib/chef/dsl/recipe.rb +76 -76
- data/lib/chef/dsl/registry_helper.rb +63 -63
- data/lib/chef/dsl/resources.rb +49 -49
- data/lib/chef/dsl/universal.rb +60 -60
- data/lib/chef/encrypted_data_bag_item.rb +157 -157
- data/lib/chef/encrypted_data_bag_item/assertions.rb +54 -54
- data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -56
- data/lib/chef/encrypted_data_bag_item/decryption_failure.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +227 -227
- data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +37 -37
- data/lib/chef/encrypted_data_bag_item/encryption_failure.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +225 -225
- data/lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/unsupported_cipher.rb +22 -22
- data/lib/chef/encrypted_data_bag_item/unsupported_encrypted_data_bag_item_format.rb +22 -22
- data/lib/chef/environment.rb +319 -319
- data/lib/chef/event_dispatch/base.rb +445 -445
- data/lib/chef/event_dispatch/dispatcher.rb +62 -62
- data/lib/chef/event_dispatch/dsl.rb +65 -65
- data/lib/chef/event_dispatch/events_output_stream.rb +37 -37
- data/lib/chef/event_loggers/base.rb +62 -62
- data/lib/chef/event_loggers/windows_eventlog.rb +101 -101
- data/lib/chef/exceptions.rb +543 -531
- data/lib/chef/file_access_control.rb +75 -75
- data/lib/chef/file_access_control/unix.rb +290 -290
- data/lib/chef/file_access_control/windows.rb +337 -337
- data/lib/chef/file_cache.rb +223 -223
- data/lib/chef/file_content_management/content_base.rb +58 -58
- data/lib/chef/file_content_management/deploy.rb +37 -37
- data/lib/chef/file_content_management/deploy/cp.rb +48 -48
- data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -77
- data/lib/chef/file_content_management/deploy/mv_windows.rb +103 -103
- data/lib/chef/file_content_management/tempfile.rb +107 -107
- data/lib/chef/formatters/base.rb +246 -246
- data/lib/chef/formatters/doc.rb +443 -443
- data/lib/chef/formatters/error_description.rb +86 -86
- data/lib/chef/formatters/error_inspectors.rb +19 -19
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +183 -183
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +154 -154
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +168 -168
- data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +82 -82
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +128 -128
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +147 -147
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +124 -124
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +121 -121
- data/lib/chef/formatters/error_mapper.rb +85 -85
- data/lib/chef/formatters/indentable_output_stream.rb +182 -182
- data/lib/chef/formatters/minimal.rb +233 -233
- data/lib/chef/guard_interpreter.rb +32 -32
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +47 -47
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +138 -138
- data/lib/chef/handler.rb +266 -266
- data/lib/chef/handler/error_report.rb +33 -33
- data/lib/chef/handler/json_file.rb +62 -62
- data/lib/chef/http.rb +539 -539
- data/lib/chef/http/api_versions.rb +56 -56
- data/lib/chef/http/auth_credentials.rb +59 -59
- data/lib/chef/http/authenticator.rb +118 -118
- data/lib/chef/http/basic_client.rb +157 -157
- data/lib/chef/http/cookie_jar.rb +31 -31
- data/lib/chef/http/cookie_manager.rb +59 -59
- data/lib/chef/http/decompressor.rb +142 -142
- data/lib/chef/http/http_request.rb +189 -189
- data/lib/chef/http/json_input.rb +73 -73
- data/lib/chef/http/json_output.rb +81 -81
- data/lib/chef/http/json_to_model_output.rb +34 -34
- data/lib/chef/http/remote_request_id.rb +46 -46
- data/lib/chef/http/simple.rb +40 -40
- data/lib/chef/http/simple_json.rb +43 -43
- data/lib/chef/http/socketless_chef_zero_client.rb +209 -209
- data/lib/chef/http/ssl_policies.rb +130 -130
- data/lib/chef/http/validate_content_length.rb +114 -114
- data/lib/chef/json_compat.rb +68 -68
- data/lib/chef/key.rb +269 -269
- data/lib/chef/knife.rb +620 -620
- data/lib/chef/knife/.DS_Store +0 -0
- data/lib/chef/knife/bootstrap.rb +525 -501
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +159 -159
- data/lib/chef/knife/bootstrap/client_builder.rb +208 -208
- data/lib/chef/knife/bootstrap/templates/README.md +11 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +243 -243
- data/lib/chef/knife/client_bulk_delete.rb +103 -103
- data/lib/chef/knife/client_create.rb +110 -110
- data/lib/chef/knife/client_delete.rb +62 -62
- data/lib/chef/knife/client_edit.rb +52 -52
- data/lib/chef/knife/client_key_create.rb +70 -70
- data/lib/chef/knife/client_key_delete.rb +77 -77
- data/lib/chef/knife/client_key_edit.rb +80 -80
- data/lib/chef/knife/client_key_list.rb +70 -70
- data/lib/chef/knife/client_key_show.rb +77 -77
- data/lib/chef/knife/client_list.rb +41 -41
- data/lib/chef/knife/client_reregister.rb +58 -58
- data/lib/chef/knife/client_show.rb +48 -48
- data/lib/chef/knife/config_get.rb +126 -126
- data/lib/chef/knife/config_get_profile.rb +37 -37
- data/lib/chef/knife/config_list_profiles.rb +121 -121
- data/lib/chef/knife/config_use_profile.rb +50 -50
- data/lib/chef/knife/configure.rb +147 -147
- data/lib/chef/knife/configure_client.rb +48 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +71 -71
- data/lib/chef/knife/cookbook_create.rb +29 -29
- data/lib/chef/knife/cookbook_delete.rb +151 -151
- data/lib/chef/knife/cookbook_download.rb +142 -142
- data/lib/chef/knife/cookbook_list.rb +47 -47
- data/lib/chef/knife/cookbook_metadata.rb +106 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +43 -43
- data/lib/chef/knife/cookbook_show.rb +98 -98
- data/lib/chef/knife/cookbook_site_download.rb +40 -40
- data/lib/chef/knife/cookbook_site_install.rb +40 -40
- data/lib/chef/knife/cookbook_site_list.rb +40 -40
- data/lib/chef/knife/cookbook_site_search.rb +40 -40
- data/lib/chef/knife/cookbook_site_share.rb +41 -41
- data/lib/chef/knife/cookbook_site_show.rb +40 -40
- data/lib/chef/knife/cookbook_site_unshare.rb +41 -41
- data/lib/chef/knife/cookbook_test.rb +95 -95
- data/lib/chef/knife/cookbook_upload.rb +308 -308
- data/lib/chef/knife/core/bootstrap_context.rb +273 -273
- data/lib/chef/knife/core/cookbook_scm_repo.rb +159 -159
- data/lib/chef/knife/core/gem_glob_loader.rb +138 -138
- data/lib/chef/knife/core/generic_presenter.rb +231 -231
- data/lib/chef/knife/core/hashed_command_loader.rb +99 -99
- data/lib/chef/knife/core/node_editor.rb +130 -130
- data/lib/chef/knife/core/node_presenter.rb +158 -158
- data/lib/chef/knife/core/object_loader.rb +115 -115
- data/lib/chef/knife/core/status_presenter.rb +172 -172
- data/lib/chef/knife/core/subcommand_loader.rb +183 -183
- data/lib/chef/knife/core/text_formatter.rb +85 -85
- data/lib/chef/knife/core/ui.rb +286 -286
- data/lib/chef/knife/data_bag_create.rb +80 -80
- data/lib/chef/knife/data_bag_delete.rb +49 -49
- data/lib/chef/knife/data_bag_edit.rb +74 -74
- data/lib/chef/knife/data_bag_from_file.rb +113 -113
- data/lib/chef/knife/data_bag_list.rb +42 -42
- data/lib/chef/knife/data_bag_secret_options.rb +142 -142
- data/lib/chef/knife/data_bag_show.rb +69 -69
- data/lib/chef/knife/delete.rb +125 -125
- data/lib/chef/knife/deps.rb +154 -154
- data/lib/chef/knife/diff.rb +84 -84
- data/lib/chef/knife/download.rb +84 -84
- data/lib/chef/knife/edit.rb +88 -88
- data/lib/chef/knife/environment_compare.rb +127 -127
- data/lib/chef/knife/environment_create.rb +52 -52
- data/lib/chef/knife/environment_delete.rb +44 -44
- data/lib/chef/knife/environment_edit.rb +44 -44
- data/lib/chef/knife/environment_from_file.rb +84 -84
- data/lib/chef/knife/environment_list.rb +41 -41
- data/lib/chef/knife/environment_show.rb +47 -47
- data/lib/chef/knife/exec.rb +87 -87
- data/lib/chef/knife/key_create.rb +112 -112
- data/lib/chef/knife/key_create_base.rb +50 -50
- data/lib/chef/knife/key_delete.rb +55 -55
- data/lib/chef/knife/key_edit.rb +118 -118
- data/lib/chef/knife/key_edit_base.rb +55 -55
- data/lib/chef/knife/key_list.rb +88 -88
- data/lib/chef/knife/key_list_base.rb +45 -45
- data/lib/chef/knife/key_show.rb +53 -53
- data/lib/chef/knife/list.rb +172 -172
- data/lib/chef/knife/node_bulk_delete.rb +74 -74
- data/lib/chef/knife/node_create.rb +47 -47
- data/lib/chef/knife/node_delete.rb +46 -46
- data/lib/chef/knife/node_edit.rb +70 -70
- data/lib/chef/knife/node_environment_set.rb +54 -54
- data/lib/chef/knife/node_from_file.rb +51 -51
- data/lib/chef/knife/node_list.rb +44 -44
- data/lib/chef/knife/node_policy_set.rb +79 -79
- data/lib/chef/knife/node_run_list_add.rb +104 -104
- data/lib/chef/knife/node_run_list_remove.rb +67 -67
- data/lib/chef/knife/node_run_list_set.rb +66 -66
- data/lib/chef/knife/node_show.rb +61 -61
- data/lib/chef/knife/null.rb +10 -10
- data/lib/chef/knife/osc_user_create.rb +97 -97
- data/lib/chef/knife/osc_user_delete.rb +51 -51
- data/lib/chef/knife/osc_user_edit.rb +58 -58
- data/lib/chef/knife/osc_user_list.rb +47 -47
- data/lib/chef/knife/osc_user_reregister.rb +64 -64
- data/lib/chef/knife/osc_user_show.rb +53 -53
- data/lib/chef/knife/raw.rb +124 -124
- data/lib/chef/knife/recipe_list.rb +32 -32
- data/lib/chef/knife/rehash.rb +65 -65
- data/lib/chef/knife/role_bulk_delete.rb +65 -65
- data/lib/chef/knife/role_create.rb +53 -53
- data/lib/chef/knife/role_delete.rb +46 -46
- data/lib/chef/knife/role_edit.rb +45 -45
- data/lib/chef/knife/role_env_run_list_add.rb +87 -87
- data/lib/chef/knife/role_env_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +57 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +60 -60
- data/lib/chef/knife/role_env_run_list_set.rb +70 -70
- data/lib/chef/knife/role_from_file.rb +51 -51
- data/lib/chef/knife/role_list.rb +42 -42
- data/lib/chef/knife/role_run_list_add.rb +87 -87
- data/lib/chef/knife/role_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_run_list_remove.rb +56 -56
- data/lib/chef/knife/role_run_list_replace.rb +60 -60
- data/lib/chef/knife/role_run_list_set.rb +69 -69
- data/lib/chef/knife/role_show.rb +48 -48
- data/lib/chef/knife/search.rb +194 -194
- data/lib/chef/knife/serve.rb +64 -64
- data/lib/chef/knife/show.rb +72 -72
- data/lib/chef/knife/ssh.rb +634 -634
- data/lib/chef/knife/ssl_check.rb +283 -283
- data/lib/chef/knife/ssl_fetch.rb +161 -161
- data/lib/chef/knife/status.rb +110 -110
- data/lib/chef/knife/supermarket_download.rb +122 -122
- data/lib/chef/knife/supermarket_install.rb +193 -193
- data/lib/chef/knife/supermarket_list.rb +65 -65
- data/lib/chef/knife/supermarket_search.rb +53 -53
- data/lib/chef/knife/supermarket_share.rb +166 -166
- data/lib/chef/knife/supermarket_show.rb +67 -67
- data/lib/chef/knife/supermarket_unshare.rb +61 -61
- data/lib/chef/knife/tag_create.rb +52 -52
- data/lib/chef/knife/tag_delete.rb +60 -60
- data/lib/chef/knife/tag_list.rb +47 -47
- data/lib/chef/knife/upload.rb +86 -86
- data/lib/chef/knife/user_create.rb +151 -151
- data/lib/chef/knife/user_delete.rb +96 -96
- data/lib/chef/knife/user_edit.rb +82 -82
- data/lib/chef/knife/user_key_create.rb +70 -70
- data/lib/chef/knife/user_key_delete.rb +77 -77
- data/lib/chef/knife/user_key_edit.rb +80 -80
- data/lib/chef/knife/user_key_list.rb +70 -70
- data/lib/chef/knife/user_key_show.rb +77 -77
- data/lib/chef/knife/user_list.rb +44 -44
- data/lib/chef/knife/user_reregister.rb +90 -90
- data/lib/chef/knife/user_show.rb +79 -79
- data/lib/chef/knife/xargs.rb +282 -282
- data/lib/chef/local_mode.rb +129 -129
- data/lib/chef/log.rb +70 -70
- data/lib/chef/log/syslog.rb +45 -45
- data/lib/chef/log/winevt.rb +99 -99
- data/lib/chef/mash.rb +232 -232
- data/lib/chef/mixin/.DS_Store +0 -0
- data/lib/chef/mixin/api_version_request_handling.rb +64 -64
- data/lib/chef/mixin/checksum.rb +37 -37
- data/lib/chef/mixin/convert_to_class_name.rb +126 -126
- data/lib/chef/mixin/create_path.rb +71 -71
- data/lib/chef/mixin/deep_merge.rb +140 -140
- data/lib/chef/mixin/deprecation.rb +117 -117
- data/lib/chef/mixin/descendants_tracker.rb +81 -81
- data/lib/chef/mixin/enforce_ownership_and_permissions.rb +39 -39
- data/lib/chef/mixin/file_class.rb +35 -35
- data/lib/chef/mixin/from_file.rb +55 -55
- data/lib/chef/mixin/get_source_from_package.rb +47 -47
- data/lib/chef/mixin/homebrew_user.rb +79 -79
- data/lib/chef/mixin/lazy_module_include.rb +77 -77
- data/lib/chef/mixin/notifying_block.rb +51 -51
- data/lib/chef/mixin/openssl_helper.rb +402 -402
- data/lib/chef/mixin/params_validate.rb +498 -498
- data/lib/chef/mixin/path_sanity.rb +66 -66
- data/lib/chef/mixin/powershell_exec.rb +105 -105
- data/lib/chef/mixin/powershell_out.rb +98 -98
- data/lib/chef/mixin/powershell_type_coercions.rb +84 -84
- data/lib/chef/mixin/properties.rb +323 -323
- data/lib/chef/mixin/provides.rb +29 -29
- data/lib/chef/mixin/proxified_socket.rb +42 -42
- data/lib/chef/mixin/securable.rb +192 -192
- data/lib/chef/mixin/shell_out.rb +258 -258
- data/lib/chef/mixin/subclass_directive.rb +37 -37
- data/lib/chef/mixin/template.rb +265 -265
- data/lib/chef/mixin/unformatter.rb +32 -32
- data/lib/chef/mixin/uris.rb +42 -42
- data/lib/chef/mixin/user_context.rb +55 -55
- data/lib/chef/mixin/versioned_api.rb +84 -84
- data/lib/chef/mixin/which.rb +52 -52
- data/lib/chef/mixin/why_run.rb +326 -326
- data/lib/chef/mixin/wide_string.rb +54 -54
- data/lib/chef/mixin/windows_architecture_helper.rb +113 -113
- data/lib/chef/mixin/windows_env_helper.rb +67 -67
- data/lib/chef/mixin/xml_escape.rb +138 -138
- data/lib/chef/mixins.rb +12 -12
- data/lib/chef/monkey_patches/net_http.rb +64 -64
- data/lib/chef/monkey_patches/webrick-utils.rb +51 -51
- data/lib/chef/monkey_patches/win32/registry.rb +86 -86
- data/lib/chef/monologger.rb +4 -4
- data/lib/chef/nil_argument.rb +3 -3
- data/lib/chef/node.rb +688 -688
- data/lib/chef/node/attribute.rb +649 -649
- data/lib/chef/node/attribute_collections.rb +213 -213
- data/lib/chef/node/common_api.rb +121 -121
- data/lib/chef/node/immutable_collections.rb +182 -182
- data/lib/chef/node/mixin/deep_merge_cache.rb +61 -61
- data/lib/chef/node/mixin/immutablize_array.rb +180 -180
- data/lib/chef/node/mixin/immutablize_hash.rb +165 -165
- data/lib/chef/node/mixin/state_tracking.rb +96 -96
- data/lib/chef/node_map.rb +315 -315
- data/lib/chef/null_logger.rb +79 -79
- data/lib/chef/org.rb +144 -144
- data/lib/chef/platform.rb +30 -30
- data/lib/chef/platform/priority_map.rb +41 -41
- data/lib/chef/platform/provider_handler_map.rb +29 -29
- data/lib/chef/platform/provider_mapping.rb +55 -55
- data/lib/chef/platform/provider_priority_map.rb +11 -11
- data/lib/chef/platform/query_helpers.rb +100 -100
- data/lib/chef/platform/rebooter.rb +71 -71
- data/lib/chef/platform/resource_handler_map.rb +29 -29
- data/lib/chef/platform/resource_priority_map.rb +11 -11
- data/lib/chef/platform/service_helpers.rb +122 -122
- data/lib/chef/policy_builder.rb +42 -42
- data/lib/chef/policy_builder/dynamic.rb +185 -185
- data/lib/chef/policy_builder/expand_node_object.rb +252 -252
- data/lib/chef/policy_builder/policyfile.rb +569 -569
- data/lib/chef/powershell.rb +57 -57
- data/lib/chef/property.rb +731 -731
- data/lib/chef/provider.rb +410 -408
- data/lib/chef/provider/.DS_Store +0 -0
- data/lib/chef/provider/apt_preference.rb +94 -94
- data/lib/chef/provider/apt_repository.rb +360 -360
- data/lib/chef/provider/apt_update.rb +80 -80
- data/lib/chef/provider/batch.rb +45 -45
- data/lib/chef/provider/cookbook_file.rb +47 -47
- data/lib/chef/provider/cookbook_file/content.rb +49 -49
- data/lib/chef/provider/cron.rb +256 -256
- data/lib/chef/provider/cron/aix.rb +50 -50
- data/lib/chef/provider/cron/solaris.rb +22 -22
- data/lib/chef/provider/cron/unix.rb +83 -83
- data/lib/chef/provider/directory.rb +164 -164
- data/lib/chef/provider/dsc_resource.rb +209 -209
- data/lib/chef/provider/dsc_script.rb +185 -185
- data/lib/chef/provider/execute.rb +130 -130
- data/lib/chef/provider/file.rb +478 -478
- data/lib/chef/provider/file/content.rb +39 -39
- data/lib/chef/provider/git.rb +357 -357
- data/lib/chef/provider/group.rb +179 -179
- data/lib/chef/provider/group/aix.rb +79 -79
- data/lib/chef/provider/group/dscl.rb +177 -177
- data/lib/chef/provider/group/gpasswd.rb +58 -58
- data/lib/chef/provider/group/groupadd.rb +133 -133
- data/lib/chef/provider/group/groupmod.rb +123 -123
- data/lib/chef/provider/group/pw.rb +137 -137
- data/lib/chef/provider/group/suse.rb +83 -83
- data/lib/chef/provider/group/usermod.rb +90 -90
- data/lib/chef/provider/group/windows.rb +110 -110
- data/lib/chef/provider/http_request.rb +132 -132
- data/lib/chef/provider/ifconfig.rb +271 -271
- data/lib/chef/provider/ifconfig/aix.rb +94 -94
- data/lib/chef/provider/ifconfig/debian.rb +88 -88
- data/lib/chef/provider/ifconfig/redhat.rb +54 -54
- data/lib/chef/provider/launchd.rb +231 -231
- data/lib/chef/provider/link.rb +168 -168
- data/lib/chef/provider/log.rb +43 -43
- data/lib/chef/provider/lwrp_base.rb +89 -89
- data/lib/chef/provider/mdadm.rb +85 -85
- data/lib/chef/provider/mount.rb +175 -175
- data/lib/chef/provider/mount/aix.rb +221 -221
- data/lib/chef/provider/mount/mount.rb +283 -283
- data/lib/chef/provider/mount/solaris.rb +275 -275
- data/lib/chef/provider/mount/windows.rb +92 -92
- data/lib/chef/provider/noop.rb +37 -37
- data/lib/chef/provider/ohai.rb +45 -45
- data/lib/chef/provider/osx_profile.rb +251 -251
- data/lib/chef/provider/package.rb +687 -687
- data/lib/chef/provider/package/.DS_Store +0 -0
- data/lib/chef/provider/package/apt.rb +249 -249
- data/lib/chef/provider/package/bff.rb +142 -142
- data/lib/chef/provider/package/cab.rb +187 -187
- data/lib/chef/provider/package/chocolatey.rb +285 -285
- data/lib/chef/provider/package/dnf.rb +196 -196
- data/lib/chef/provider/package/dnf/dnf_helper.py +114 -100
- data/lib/chef/provider/package/dnf/python_helper.rb +173 -173
- data/lib/chef/provider/package/dnf/version.rb +56 -56
- data/lib/chef/provider/package/dpkg.rb +241 -241
- data/lib/chef/provider/package/freebsd/.DS_Store +0 -0
- data/lib/chef/provider/package/freebsd/base.rb +89 -89
- data/lib/chef/provider/package/freebsd/pkg.rb +114 -114
- data/lib/chef/provider/package/freebsd/pkgng.rb +76 -76
- data/lib/chef/provider/package/freebsd/port.rb +60 -60
- data/lib/chef/provider/package/homebrew.rb +138 -138
- data/lib/chef/provider/package/ips.rb +85 -85
- data/lib/chef/provider/package/macports.rb +101 -101
- data/lib/chef/provider/package/msu.rb +161 -161
- data/lib/chef/provider/package/openbsd.rb +139 -139
- data/lib/chef/provider/package/pacman.rb +103 -103
- data/lib/chef/provider/package/paludis.rb +85 -85
- data/lib/chef/provider/package/portage.rb +133 -133
- data/lib/chef/provider/package/powershell.rb +133 -133
- data/lib/chef/provider/package/rpm.rb +126 -126
- data/lib/chef/provider/package/rubygems.rb +617 -617
- data/lib/chef/provider/package/smartos.rb +92 -92
- data/lib/chef/provider/package/solaris.rb +137 -137
- data/lib/chef/provider/package/windows.rb +317 -317
- data/lib/chef/provider/package/windows/exe.rb +117 -117
- data/lib/chef/provider/package/windows/msi.rb +96 -96
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +99 -99
- data/lib/chef/provider/package/yum.rb +289 -289
- data/lib/chef/provider/package/yum/python_helper.rb +222 -222
- data/lib/chef/provider/package/yum/rpm_utils.rb +651 -651
- data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +79 -79
- data/lib/chef/provider/package/yum/simplejson/__init__.py +318 -318
- data/lib/chef/provider/package/yum/simplejson/decoder.py +354 -354
- data/lib/chef/provider/package/yum/simplejson/encoder.py +440 -440
- data/lib/chef/provider/package/yum/simplejson/scanner.py +65 -65
- data/lib/chef/provider/package/yum/simplejson/tool.py +37 -37
- data/lib/chef/provider/package/yum/version.rb +56 -56
- data/lib/chef/provider/package/yum/yum_cache.rb +93 -93
- data/lib/chef/provider/package/yum/yum_helper.py +211 -211
- data/lib/chef/provider/package/zypper.rb +167 -167
- data/lib/chef/provider/powershell_script.rb +223 -223
- data/lib/chef/provider/reboot.rb +78 -78
- data/lib/chef/provider/registry_key.rb +199 -199
- data/lib/chef/provider/remote_directory.rb +269 -269
- data/lib/chef/provider/remote_file.rb +66 -66
- data/lib/chef/provider/remote_file/cache_control_data.rb +195 -195
- data/lib/chef/provider/remote_file/content.rb +81 -81
- data/lib/chef/provider/remote_file/fetcher.rb +60 -60
- data/lib/chef/provider/remote_file/ftp.rb +172 -172
- data/lib/chef/provider/remote_file/http.rb +143 -143
- data/lib/chef/provider/remote_file/local_file.rb +60 -60
- data/lib/chef/provider/remote_file/network_file.rb +61 -61
- data/lib/chef/provider/remote_file/sftp.rb +105 -105
- data/lib/chef/provider/resource_update.rb +52 -52
- data/lib/chef/provider/route.rb +248 -248
- data/lib/chef/provider/ruby_block.rb +40 -40
- data/lib/chef/provider/script.rb +121 -121
- data/lib/chef/provider/service.rb +252 -252
- data/lib/chef/provider/service/aix.rb +125 -125
- data/lib/chef/provider/service/aixinit.rb +117 -117
- data/lib/chef/provider/service/arch.rb +118 -118
- data/lib/chef/provider/service/debian.rb +193 -193
- data/lib/chef/provider/service/freebsd.rb +194 -194
- data/lib/chef/provider/service/gentoo.rb +70 -70
- data/lib/chef/provider/service/init.rb +93 -93
- data/lib/chef/provider/service/insserv.rb +61 -61
- data/lib/chef/provider/service/invokercd.rb +41 -41
- data/lib/chef/provider/service/macosx.rb +252 -252
- data/lib/chef/provider/service/openbsd.rb +216 -216
- data/lib/chef/provider/service/redhat.rb +126 -126
- data/lib/chef/provider/service/simple.rb +172 -172
- data/lib/chef/provider/service/solaris.rb +127 -127
- data/lib/chef/provider/service/systemd.rb +189 -189
- data/lib/chef/provider/service/upstart.rb +260 -260
- data/lib/chef/provider/service/windows.rb +488 -488
- data/lib/chef/provider/subversion.rb +227 -227
- data/lib/chef/provider/support/yum_repo.erb +138 -138
- data/lib/chef/provider/support/zypper_repo.erb +17 -17
- data/lib/chef/provider/systemd_unit.rb +261 -261
- data/lib/chef/provider/template.rb +59 -59
- data/lib/chef/provider/template/content.rb +93 -93
- data/lib/chef/provider/template_finder.rb +62 -62
- data/lib/chef/provider/user.rb +221 -221
- data/lib/chef/provider/user/aix.rb +131 -131
- data/lib/chef/provider/user/dscl.rb +712 -712
- data/lib/chef/provider/user/linux.rb +116 -116
- data/lib/chef/provider/user/pw.rb +105 -105
- data/lib/chef/provider/user/solaris.rb +160 -160
- data/lib/chef/provider/user/useradd.rb +161 -161
- data/lib/chef/provider/user/windows.rb +126 -126
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +32 -32
- data/lib/chef/provider/windows_env.rb +207 -207
- data/lib/chef/provider/windows_path.rb +61 -61
- data/lib/chef/provider/windows_script.rb +75 -75
- data/lib/chef/provider/windows_task.rb +631 -631
- data/lib/chef/provider/yum_repository.rb +130 -130
- data/lib/chef/provider/zypper_repository.rb +169 -169
- data/lib/chef/provider_resolver.rb +146 -146
- data/lib/chef/providers.rb +146 -146
- data/lib/chef/recipe.rb +110 -110
- data/lib/chef/request_id.rb +37 -37
- data/lib/chef/reserved_names.rb +9 -9
- data/lib/chef/resource.rb +1593 -1584
- data/lib/chef/resource/.DS_Store +0 -0
- data/lib/chef/resource/action_class.rb +90 -90
- data/lib/chef/resource/apt_package.rb +40 -40
- data/lib/chef/resource/apt_preference.rb +52 -52
- data/lib/chef/resource/apt_repository.rb +86 -86
- data/lib/chef/resource/apt_update.rb +41 -41
- data/lib/chef/resource/bash.rb +34 -34
- data/lib/chef/resource/batch.rb +34 -34
- data/lib/chef/resource/bff_package.rb +31 -31
- data/lib/chef/resource/breakpoint.rb +47 -47
- data/lib/chef/resource/build_essential.rb +142 -142
- data/lib/chef/resource/cab_package.rb +45 -45
- data/lib/chef/resource/chef_gem.rb +59 -59
- data/lib/chef/resource/chef_handler.rb +132 -132
- data/lib/chef/resource/chocolatey_config.rb +83 -83
- data/lib/chef/resource/chocolatey_package.rb +50 -50
- data/lib/chef/resource/chocolatey_source.rb +95 -95
- data/lib/chef/resource/conditional.rb +135 -135
- data/lib/chef/resource/conditional_action_not_nothing.rb +48 -48
- data/lib/chef/resource/cookbook_file.rb +45 -45
- data/lib/chef/resource/cron.rb +174 -174
- data/lib/chef/resource/cron_access.rb +70 -70
- data/lib/chef/resource/cron_d.rb +238 -238
- data/lib/chef/resource/csh.rb +39 -39
- data/lib/chef/resource/directory.rb +51 -51
- data/lib/chef/resource/dmg_package.rb +171 -171
- data/lib/chef/resource/dnf_package.rb +79 -79
- data/lib/chef/resource/dpkg_package.rb +33 -33
- data/lib/chef/resource/dsc_resource.rb +120 -120
- data/lib/chef/resource/dsc_script.rb +124 -124
- data/lib/chef/resource/execute.rb +201 -201
- data/lib/chef/resource/file.rb +105 -105
- data/lib/chef/resource/file/.DS_Store +0 -0
- data/lib/chef/resource/file/verification.rb +139 -139
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -67
- data/lib/chef/resource/freebsd_package.rb +73 -73
- data/lib/chef/resource/gem_package.rb +58 -58
- data/lib/chef/resource/git.rb +35 -35
- data/lib/chef/resource/group.rb +61 -61
- data/lib/chef/resource/homebrew_cask.rb +100 -100
- data/lib/chef/resource/homebrew_package.rb +38 -38
- data/lib/chef/resource/homebrew_tap.rb +87 -87
- data/lib/chef/resource/hostname.rb +265 -265
- data/lib/chef/resource/http_request.rb +55 -55
- data/lib/chef/resource/ifconfig.rb +105 -105
- data/lib/chef/resource/ips_package.rb +38 -38
- data/lib/chef/resource/kernel_module.rb +135 -135
- data/lib/chef/resource/ksh.rb +39 -39
- data/lib/chef/resource/launchd.rb +252 -252
- data/lib/chef/resource/link.rb +93 -93
- data/lib/chef/resource/locale.rb +94 -94
- data/lib/chef/resource/log.rb +52 -52
- data/lib/chef/resource/lwrp_base.rb +123 -123
- data/lib/chef/resource/macos_userdefaults.rb +132 -132
- data/lib/chef/resource/macosx_service.rb +41 -41
- data/lib/chef/resource/macports_package.rb +29 -29
- data/lib/chef/resource/mdadm.rb +67 -67
- data/lib/chef/resource/mount.rb +96 -96
- data/lib/chef/resource/msu_package.rb +49 -49
- data/lib/chef/resource/ohai.rb +41 -41
- data/lib/chef/resource/ohai_hint.rb +95 -95
- data/lib/chef/resource/openbsd_package.rb +38 -38
- data/lib/chef/resource/openssl_dhparam.rb +77 -77
- data/lib/chef/resource/openssl_ec_private_key.rb +93 -93
- data/lib/chef/resource/openssl_ec_public_key.rb +75 -75
- data/lib/chef/resource/openssl_rsa_private_key.rb +91 -91
- data/lib/chef/resource/openssl_rsa_public_key.rb +74 -74
- data/lib/chef/resource/openssl_x509_certificate.rb +221 -221
- data/lib/chef/resource/openssl_x509_crl.rb +132 -132
- data/lib/chef/resource/openssl_x509_request.rb +151 -151
- data/lib/chef/resource/osx_profile.rb +48 -48
- data/lib/chef/resource/package.rb +73 -73
- data/lib/chef/resource/pacman_package.rb +30 -30
- data/lib/chef/resource/paludis_package.rb +38 -38
- data/lib/chef/resource/perl.rb +38 -38
- data/lib/chef/resource/portage_package.rb +33 -33
- data/lib/chef/resource/powershell_package.rb +52 -52
- data/lib/chef/resource/powershell_package_source.rb +169 -169
- data/lib/chef/resource/powershell_script.rb +59 -59
- data/lib/chef/resource/python.rb +36 -36
- data/lib/chef/resource/reboot.rb +46 -46
- data/lib/chef/resource/registry_key.rb +130 -130
- data/lib/chef/resource/remote_directory.rb +87 -87
- data/lib/chef/resource/remote_file.rb +181 -181
- data/lib/chef/resource/resource_notification.rb +143 -139
- data/lib/chef/resource/rhsm_errata.rb +46 -46
- data/lib/chef/resource/rhsm_errata_level.rb +51 -51
- data/lib/chef/resource/rhsm_register.rb +168 -168
- data/lib/chef/resource/rhsm_repo.rb +65 -65
- data/lib/chef/resource/rhsm_subscription.rb +98 -98
- data/lib/chef/resource/route.rb +46 -46
- data/lib/chef/resource/rpm_package.rb +33 -33
- data/lib/chef/resource/ruby.rb +37 -37
- data/lib/chef/resource/ruby_block.rb +45 -45
- data/lib/chef/resource/scm.rb +75 -75
- data/lib/chef/resource/script.rb +54 -54
- data/lib/chef/resource/service.rb +221 -221
- data/lib/chef/resource/smartos_package.rb +31 -31
- data/lib/chef/resource/solaris_package.rb +33 -33
- data/lib/chef/resource/ssh_known_hosts_entry.rb +146 -146
- data/lib/chef/resource/subversion.rb +55 -55
- data/lib/chef/resource/sudo.rb +230 -230
- data/lib/chef/resource/support/cron.d.erb +28 -28
- data/lib/chef/resource/support/cron_access.erb +4 -4
- data/lib/chef/resource/support/ssh_known_hosts.erb +3 -3
- data/lib/chef/resource/support/sudoer.erb +18 -18
- data/lib/chef/resource/swap_file.rb +209 -209
- data/lib/chef/resource/sysctl.rb +151 -151
- data/lib/chef/resource/systemd_unit.rb +86 -86
- data/lib/chef/resource/template.rb +211 -211
- data/lib/chef/resource/timezone.rb +135 -135
- data/lib/chef/resource/user.rb +159 -159
- data/lib/chef/resource/user/aix_user.rb +31 -31
- data/lib/chef/resource/user/dscl_user.rb +31 -31
- data/lib/chef/resource/user/linux_user.rb +32 -32
- data/lib/chef/resource/user/pw_user.rb +31 -31
- data/lib/chef/resource/user/solaris_user.rb +31 -31
- data/lib/chef/resource/user/windows_user.rb +35 -35
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +24 -24
- data/lib/chef/resource/windows_ad_join.rb +120 -120
- data/lib/chef/resource/windows_auto_run.rb +87 -87
- data/lib/chef/resource/windows_certificate.rb +332 -332
- data/lib/chef/resource/windows_env.rb +49 -49
- data/lib/chef/resource/windows_feature.rb +90 -90
- data/lib/chef/resource/windows_feature_dism.rb +222 -222
- data/lib/chef/resource/windows_feature_powershell.rb +262 -262
- data/lib/chef/resource/windows_firewall_rule.rb +205 -205
- data/lib/chef/resource/windows_font.rb +125 -125
- data/lib/chef/resource/windows_package.rb +61 -61
- data/lib/chef/resource/windows_pagefile.rb +206 -206
- data/lib/chef/resource/windows_path.rb +38 -38
- data/lib/chef/resource/windows_printer.rb +146 -146
- data/lib/chef/resource/windows_printer_port.rb +136 -136
- data/lib/chef/resource/windows_script.rb +65 -65
- data/lib/chef/resource/windows_service.rb +121 -121
- data/lib/chef/resource/windows_share.rb +324 -324
- data/lib/chef/resource/windows_shortcut.rb +79 -79
- data/lib/chef/resource/windows_task.rb +349 -349
- data/lib/chef/resource/windows_workgroup.rb +112 -112
- data/lib/chef/resource/yum_package.rb +77 -77
- data/lib/chef/resource/yum_repository.rb +187 -187
- data/lib/chef/resource/zypper_package.rb +44 -44
- data/lib/chef/resource/zypper_repository.rb +103 -103
- data/lib/chef/resource_builder.rb +92 -92
- data/lib/chef/resource_collection.rb +153 -147
- data/lib/chef/resource_collection/resource_collection_serialization.rb +68 -68
- data/lib/chef/resource_collection/resource_list.rb +106 -106
- data/lib/chef/resource_collection/resource_set.rb +200 -200
- data/lib/chef/resource_collection/stepable_iterator.rb +122 -122
- data/lib/chef/resource_definition.rb +68 -68
- data/lib/chef/resource_definition_list.rb +38 -38
- data/lib/chef/resource_inspector.rb +108 -108
- data/lib/chef/resource_reporter.rb +337 -337
- data/lib/chef/resource_resolver.rb +160 -160
- data/lib/chef/resources.rb +147 -147
- data/lib/chef/role.rb +274 -274
- data/lib/chef/run_context.rb +708 -682
- data/lib/chef/run_context/cookbook_compiler.rb +344 -344
- data/lib/chef/run_list.rb +168 -168
- data/lib/chef/run_list/run_list_expansion.rb +236 -236
- data/lib/chef/run_list/run_list_item.rb +98 -98
- data/lib/chef/run_list/versioned_recipe_list.rb +104 -104
- data/lib/chef/run_lock.rb +197 -197
- data/lib/chef/run_status.rb +127 -127
- data/lib/chef/runner.rb +184 -144
- data/lib/chef/sandbox.rb +20 -20
- data/lib/chef/scan_access_control.rb +138 -138
- data/lib/chef/search/query.rb +182 -182
- data/lib/chef/server_api.rb +83 -83
- data/lib/chef/server_api_versions.rb +59 -59
- data/lib/chef/shell.rb +353 -353
- data/lib/chef/shell/ext.rb +593 -593
- data/lib/chef/shell/model_wrapper.rb +120 -120
- data/lib/chef/shell/shell_session.rb +310 -310
- data/lib/chef/user.rb +194 -194
- data/lib/chef/user_v1.rb +325 -325
- data/lib/chef/util/backup.rb +94 -94
- data/lib/chef/util/diff.rb +184 -184
- data/lib/chef/util/dsc/configuration_generator.rb +139 -139
- data/lib/chef/util/dsc/lcm_output_parser.rb +192 -192
- data/lib/chef/util/dsc/local_configuration_manager.rb +151 -151
- data/lib/chef/util/dsc/resource_info.rb +26 -26
- data/lib/chef/util/dsc/resource_store.rb +109 -109
- data/lib/chef/util/editor.rb +91 -91
- data/lib/chef/util/file_edit.rb +100 -100
- data/lib/chef/util/path_helper.rb +25 -25
- data/lib/chef/util/powershell/cmdlet.rb +173 -173
- data/lib/chef/util/powershell/cmdlet_result.rb +61 -61
- data/lib/chef/util/powershell/ps_credential.rb +41 -41
- data/lib/chef/util/selinux.rb +93 -93
- data/lib/chef/util/threaded_job_queue.rb +61 -61
- data/lib/chef/util/windows.rb +24 -24
- data/lib/chef/util/windows/logon_session.rb +129 -129
- data/lib/chef/util/windows/net_group.rb +78 -78
- data/lib/chef/util/windows/net_use.rb +81 -81
- data/lib/chef/util/windows/net_user.rb +172 -172
- data/lib/chef/util/windows/volume.rb +49 -49
- data/lib/chef/version.rb +36 -36
- data/lib/chef/version/platform.rb +62 -62
- data/lib/chef/version_class.rb +75 -75
- data/lib/chef/version_constraint.rb +118 -118
- data/lib/chef/version_constraint/platform.rb +28 -28
- data/lib/chef/version_string.rb +143 -143
- data/lib/chef/whitelist.rb +86 -86
- data/lib/chef/win32/api.rb +372 -372
- data/lib/chef/win32/api/crypto.rb +63 -63
- data/lib/chef/win32/api/error.rb +953 -953
- data/lib/chef/win32/api/file.rb +620 -620
- data/lib/chef/win32/api/installer.rb +165 -165
- data/lib/chef/win32/api/memory.rb +105 -105
- data/lib/chef/win32/api/net.rb +328 -328
- data/lib/chef/win32/api/process.rb +42 -42
- data/lib/chef/win32/api/psapi.rb +51 -51
- data/lib/chef/win32/api/registry.rb +51 -51
- data/lib/chef/win32/api/security.rb +476 -476
- data/lib/chef/win32/api/synchronization.rb +89 -89
- data/lib/chef/win32/api/system.rb +238 -238
- data/lib/chef/win32/api/unicode.rb +135 -135
- data/lib/chef/win32/crypto.rb +50 -50
- data/lib/chef/win32/error.rb +86 -86
- data/lib/chef/win32/eventlog.rb +31 -31
- data/lib/chef/win32/file.rb +226 -226
- data/lib/chef/win32/file/info.rb +99 -99
- data/lib/chef/win32/file/version_info.rb +93 -93
- data/lib/chef/win32/handle.rb +55 -55
- data/lib/chef/win32/memory.rb +101 -101
- data/lib/chef/win32/mutex.rb +116 -116
- data/lib/chef/win32/net.rb +326 -326
- data/lib/chef/win32/process.rb +97 -97
- data/lib/chef/win32/registry.rb +374 -374
- data/lib/chef/win32/security.rb +698 -698
- data/lib/chef/win32/security/ace.rb +123 -123
- data/lib/chef/win32/security/acl.rb +103 -103
- data/lib/chef/win32/security/securable_object.rb +109 -109
- data/lib/chef/win32/security/security_descriptor.rb +93 -93
- data/lib/chef/win32/security/sid.rb +347 -347
- data/lib/chef/win32/security/token.rb +72 -72
- data/lib/chef/win32/system.rb +62 -62
- data/lib/chef/win32/unicode.rb +66 -66
- data/lib/chef/win32/version.rb +151 -151
- data/lib/chef/win32_service_constants.rb +143 -143
- data/lib/chef/workstation_config_loader.rb +23 -23
- data/spec/.DS_Store +0 -0
- data/spec/data/.DS_Store +0 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -5
- data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -13
- data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -1
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -11
- data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -13
- data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/changelog +5 -5
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.debhelper.log +45 -45
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.substvars +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/conffiles +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/control +10 -10
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/md5sums +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/conffiles +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/control +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test2-1.0/debian/files +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test2_1.0-1.dsc +18 -18
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.build +91 -91
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.changes +31 -31
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
- data/spec/data/apt/var/www/apt/conf/distributions +7 -7
- data/spec/data/apt/var/www/apt/conf/incoming +4 -4
- data/spec/data/apt/var/www/apt/conf/pulls +3 -3
- data/spec/data/apt/var/www/apt/db/version +4 -4
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
- data/spec/data/bootstrap/no_proxy.erb +2 -2
- data/spec/data/bootstrap/secret.erb +9 -9
- data/spec/data/bootstrap/test-hints.erb +12 -12
- data/spec/data/bootstrap/test.erb +1 -1
- data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
- data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
- data/spec/data/client.d_00/00-foo.rb +2 -2
- data/spec/data/client.d_00/01-bar.rb +1 -1
- data/spec/data/client.d_00/02-strings.rb +2 -2
- data/spec/data/client.d_00/bar +1 -1
- data/spec/data/client.d_01/foo/bar.rb +1 -1
- data/spec/data/client.d_02/foo.rb/foo.txt +1 -1
- data/spec/data/config.rb +6 -6
- data/spec/data/cookbooks/.DS_Store +0 -0
- data/spec/data/cookbooks/angrybash/metadata.rb +2 -2
- data/spec/data/cookbooks/angrybash/recipes/default.rb +8 -8
- data/spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +2 -2
- data/spec/data/cookbooks/apache2/metadata.rb +2 -2
- data/spec/data/cookbooks/apache2/recipes/default.rb +2 -2
- data/spec/data/cookbooks/borken/metadata.rb +2 -2
- data/spec/data/cookbooks/borken/recipes/default.rb +1 -1
- data/spec/data/cookbooks/borken/templates/default/borken.erb +1 -1
- data/spec/data/cookbooks/chefignore +8 -8
- data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -2
- data/spec/data/cookbooks/ignorken/metadata.rb +2 -2
- data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +1 -1
- data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -2
- data/spec/data/cookbooks/java/.DS_Store +0 -0
- data/spec/data/cookbooks/java/files/.DS_Store +0 -0
- data/spec/data/cookbooks/java/files/default/java.response +1 -1
- data/spec/data/cookbooks/java/metadata.rb +2 -2
- data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -4
- data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -8
- data/spec/data/cookbooks/name-mismatch-versionnumber/recipes/default.rb +8 -8
- data/spec/data/cookbooks/openldap/attributes/default.rb +16 -16
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/cookbooks/openldap/definitions/client.rb +5 -5
- data/spec/data/cookbooks/openldap/definitions/server.rb +5 -5
- data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +3 -3
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
- data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -3
- data/spec/data/cookbooks/openldap/metadata.rb +8 -8
- data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
- data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
- data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
- data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/helpers.erb +14 -14
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/test.erb +1 -1
- data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -1
- data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -4
- data/spec/data/cookbooks/preseed/metadata.rb +2 -2
- data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +1 -1
- data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -1
- data/spec/data/cookbooks/supports-platform-constraints/metadata.rb +5 -5
- data/spec/data/definitions/test.rb +4 -4
- data/spec/data/environment-config.rb +4 -4
- data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -127
- data/spec/data/fileedit/hosts +4 -4
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -4
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -13
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb +8 -8
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb +9 -9
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb +8 -8
- data/spec/data/kitchen/chefignore +6 -6
- data/spec/data/kitchen/openldap/attributes/default.rb +3 -3
- data/spec/data/kitchen/openldap/attributes/robinson.rb +2 -2
- data/spec/data/kitchen/openldap/definitions/client.rb +3 -3
- data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/gigantor.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/ignoreme.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/woot.rb +3 -3
- data/spec/data/knife_subcommand/test_explicit_category.rb +6 -6
- data/spec/data/knife_subcommand/test_name_mapping.rb +4 -4
- data/spec/data/knife_subcommand/test_yourself.rb +21 -21
- data/spec/data/lwrp/providers/buck_passer.rb +28 -28
- data/spec/data/lwrp/providers/buck_passer_2.rb +26 -26
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +28 -28
- data/spec/data/lwrp/providers/inline_compiler.rb +24 -24
- data/spec/data/lwrp/providers/monkey_name_printer.rb +5 -5
- data/spec/data/lwrp/providers/paint_drying_watcher.rb +7 -7
- data/spec/data/lwrp/providers/thumb_twiddler.rb +7 -7
- data/spec/data/lwrp/resources/bar.rb +2 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -5
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -3
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -3
- data/spec/data/lwrp/resources/foo.rb +4 -4
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -3
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -5
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -3
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -3
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +1 -1
- data/spec/data/lwrp_override/providers/buck_passer.rb +5 -5
- data/spec/data/lwrp_override/resources/foo.rb +10 -10
- data/spec/data/mac_users/.DS_Store +0 -0
- data/spec/data/mac_users/10.7-8.plist.xml +559 -559
- data/spec/data/mac_users/10.7-8.shadow.xml +11 -11
- data/spec/data/mac_users/10.7.plist.xml +559 -559
- data/spec/data/mac_users/10.7.shadow.xml +11 -11
- data/spec/data/mac_users/10.8.plist.xml +559 -559
- data/spec/data/mac_users/10.8.shadow.xml +21 -21
- data/spec/data/mac_users/10.9.plist.xml +560 -560
- data/spec/data/mac_users/10.9.shadow.xml +21 -21
- data/spec/data/metadata/quick_start/metadata.rb +19 -19
- data/spec/data/mixin/invalid_data.rb +3 -3
- data/spec/data/mixin/real_data.rb +2 -2
- data/spec/data/nested.json +2 -2
- data/spec/data/nodes/Tim.local.json +3 -0
- data/spec/data/nodes/Tims-MBP.local.json +3 -0
- data/spec/data/nodes/default.rb +15 -15
- data/spec/data/nodes/test.example.com.rb +17 -17
- data/spec/data/nodes/test.rb +15 -15
- data/spec/data/null_config.rb +1 -1
- data/spec/data/object_loader/environments/test.json +7 -7
- data/spec/data/object_loader/environments/test.rb +2 -2
- data/spec/data/object_loader/environments/test_json_class.json +8 -8
- data/spec/data/object_loader/nodes/test.json +7 -7
- data/spec/data/object_loader/nodes/test.rb +2 -2
- data/spec/data/object_loader/nodes/test_json_class.json +8 -8
- data/spec/data/object_loader/roles/test.json +7 -7
- data/spec/data/object_loader/roles/test.rb +2 -2
- data/spec/data/object_loader/roles/test_json_class.json +8 -8
- data/spec/data/partial_one.erb +1 -1
- data/spec/data/prefer_metadata_json/metadata.json +51 -51
- data/spec/data/prefer_metadata_json/metadata.rb +6 -6
- data/spec/data/recipes/test.rb +7 -7
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -3
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -3
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -3
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -3
- data/spec/data/run_context/.DS_Store +0 -0
- data/spec/data/run_context/cookbooks/.DS_Store +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/include/recipes/default.rb +24 -24
- data/spec/data/run_context/cookbooks/include/recipes/includee.rb +3 -3
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +2 -2
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -1
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -3
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -1
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/new_animals.rb +9 -9
- data/spec/data/run_context/cookbooks/test/definitions/new_cat.rb +5 -5
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test/recipes/default.rb +5 -5
- data/spec/data/run_context/cookbooks/test/recipes/one.rb +7 -7
- data/spec/data/run_context/cookbooks/test/recipes/two.rb +7 -7
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -1
- data/spec/data/run_context/nodes/run_context.rb +5 -5
- data/spec/data/sample_msu1.xml +10 -10
- data/spec/data/sample_msu2.xml +14 -14
- data/spec/data/sample_msu3.xml +16 -16
- data/spec/data/search_queries_to_transform.txt +98 -98
- data/spec/data/shef-config.rb +11 -11
- data/spec/data/ssl/5e707473.0 +18 -18
- data/spec/data/ssl/chef-rspec.cert +27 -27
- data/spec/data/ssl/chef-rspec.key +27 -27
- data/spec/data/ssl/key.pem +15 -15
- data/spec/data/ssl/private_key.pem +27 -27
- data/spec/data/ssl/private_key_with_whitespace.pem +32 -32
- data/spec/data/standalone_cookbook/chefignore +9 -9
- data/spec/data/standalone_cookbook/recipes/default.rb +2 -2
- data/spec/data/templates/failed.erb +5 -5
- data/spec/data/trusted_certs/example.crt +22 -22
- data/spec/data/trusted_certs/example_no_cn.crt +36 -36
- data/spec/data/trusted_certs/intermediate.pem +27 -27
- data/spec/data/trusted_certs/opscode.pem +57 -57
- data/spec/data/trusted_certs/root.pem +22 -22
- data/spec/data/windows_certificates/base64_test.cer +22 -22
- data/spec/data/windows_certificates/test.pem +21 -21
- data/spec/functional/.DS_Store +0 -0
- data/spec/functional/application_spec.rb +58 -58
- data/spec/functional/assets/chefinittest +36 -36
- data/spec/functional/assets/inittest +36 -36
- data/spec/functional/assets/testchefsubsys +10 -10
- data/spec/functional/assets/yumrepo/repodata/repomd.xml +21 -21
- data/spec/functional/audit/rspec_formatter_spec.rb +54 -54
- data/spec/functional/audit/runner_spec.rb +121 -121
- data/spec/functional/dsl/reboot_pending_spec.rb +106 -106
- data/spec/functional/dsl/registry_helper_spec.rb +61 -61
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +104 -104
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +229 -229
- data/spec/functional/http/simple_spec.rb +146 -146
- data/spec/functional/knife/configure_spec.rb +33 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +156 -156
- data/spec/functional/knife/exec_spec.rb +55 -55
- data/spec/functional/knife/rehash_spec.rb +39 -39
- data/spec/functional/knife/smoke_test.rb +42 -42
- data/spec/functional/knife/ssh_spec.rb +359 -359
- data/spec/functional/mixin/from_file_spec.rb +82 -82
- data/spec/functional/mixin/powershell_out_spec.rb +43 -43
- data/spec/functional/mixin/shell_out_spec.rb +78 -78
- data/spec/functional/mixin/user_context_spec.rb +117 -117
- data/spec/functional/notifications_spec.rb +238 -238
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +100 -100
- data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +51 -51
- data/spec/functional/rebooter_spec.rb +117 -117
- data/spec/functional/resource/.DS_Store +0 -0
- data/spec/functional/resource/aix_service_spec.rb +138 -138
- data/spec/functional/resource/aixinit_service_spec.rb +211 -211
- data/spec/functional/resource/apt_package_spec.rb +386 -386
- data/spec/functional/resource/base.rb +28 -28
- data/spec/functional/resource/bash_spec.rb +54 -54
- data/spec/functional/resource/batch_spec.rb +34 -34
- data/spec/functional/resource/bff_spec.rb +120 -120
- data/spec/functional/resource/chocolatey_package_spec.rb +118 -118
- data/spec/functional/resource/cookbook_file_spec.rb +81 -81
- data/spec/functional/resource/cron_spec.rb +179 -179
- data/spec/functional/resource/directory_spec.rb +43 -43
- data/spec/functional/resource/dnf_package_spec.rb +686 -686
- data/spec/functional/resource/dpkg_package_spec.rb +339 -339
- data/spec/functional/resource/dsc_resource_spec.rb +90 -90
- data/spec/functional/resource/dsc_script_spec.rb +484 -484
- data/spec/functional/resource/execute_spec.rb +171 -171
- data/spec/functional/resource/file_spec.rb +167 -167
- data/spec/functional/resource/git_spec.rb +257 -257
- data/spec/functional/resource/group_spec.rb +497 -497
- data/spec/functional/resource/ifconfig_spec.rb +172 -172
- data/spec/functional/resource/insserv_spec.rb +206 -205
- data/spec/functional/resource/link_spec.rb +699 -699
- data/spec/functional/resource/mount_spec.rb +207 -207
- data/spec/functional/resource/msu_package_spec.rb +98 -98
- data/spec/functional/resource/ohai_spec.rb +62 -62
- data/spec/functional/resource/powershell_script_spec.rb +599 -599
- data/spec/functional/resource/reboot_spec.rb +103 -103
- data/spec/functional/resource/registry_spec.rb +676 -676
- data/spec/functional/resource/remote_directory_spec.rb +220 -220
- data/spec/functional/resource/remote_file_spec.rb +424 -424
- data/spec/functional/resource/rpm_spec.rb +120 -120
- data/spec/functional/resource/template_spec.rb +245 -245
- data/spec/functional/resource/timezone_spec.rb +39 -39
- data/spec/functional/resource/user/dscl_spec.rb +195 -195
- data/spec/functional/resource/user/windows_spec.rb +245 -245
- data/spec/functional/resource/windows_certificate_spec.rb +492 -492
- data/spec/functional/resource/windows_env_spec.rb +285 -285
- data/spec/functional/resource/windows_package_spec.rb +168 -168
- data/spec/functional/resource/windows_path_spec.rb +64 -64
- data/spec/functional/resource/windows_service_spec.rb +102 -102
- data/spec/functional/resource/windows_task_spec.rb +1917 -1917
- data/spec/functional/resource/yum_package_spec.rb +959 -959
- data/spec/functional/resource/zypper_package_spec.rb +233 -233
- data/spec/functional/root_alias_spec.rb +78 -78
- data/spec/functional/run_lock_spec.rb +473 -473
- data/spec/functional/shell_spec.rb +146 -146
- data/spec/functional/tiny_server_spec.rb +79 -79
- data/spec/functional/util/.DS_Store +0 -0
- data/spec/functional/util/path_helper_spec.rb +37 -37
- data/spec/functional/util/powershell/cmdlet_spec.rb +111 -111
- data/spec/functional/version_spec.rb +35 -35
- data/spec/functional/win32/crypto_spec.rb +54 -54
- data/spec/functional/win32/registry_spec.rb +624 -624
- data/spec/functional/win32/security_spec.rb +206 -206
- data/spec/functional/win32/service_manager_spec.rb +220 -220
- data/spec/functional/win32/sid_spec.rb +55 -55
- data/spec/functional/win32/version_info_spec.rb +50 -50
- data/spec/functional/win32/versions_spec.rb +115 -115
- data/spec/integration/.DS_Store +0 -0
- data/spec/integration/client/client_spec.rb +732 -732
- data/spec/integration/client/exit_code_spec.rb +142 -142
- data/spec/integration/client/ipv6_spec.rb +134 -134
- data/spec/integration/knife/chef_fs_data_store_spec.rb +556 -556
- data/spec/integration/knife/chef_repo_path_spec.rb +961 -959
- data/spec/integration/knife/chef_repository_file_system_spec.rb +199 -199
- data/spec/integration/knife/chefignore_spec.rb +300 -300
- data/spec/integration/knife/client_bulk_delete_spec.rb +130 -130
- data/spec/integration/knife/client_create_spec.rb +69 -69
- data/spec/integration/knife/client_delete_spec.rb +63 -63
- data/spec/integration/knife/client_key_create_spec.rb +65 -65
- data/spec/integration/knife/client_key_delete_spec.rb +42 -42
- data/spec/integration/knife/client_key_list_spec.rb +60 -60
- data/spec/integration/knife/client_key_show_spec.rb +44 -44
- data/spec/integration/knife/client_list_spec.rb +48 -48
- data/spec/integration/knife/client_show_spec.rb +36 -36
- data/spec/integration/knife/common_options_spec.rb +173 -173
- data/spec/integration/knife/config_get_profile_spec.rb +112 -112
- data/spec/integration/knife/config_get_spec.rb +183 -183
- data/spec/integration/knife/config_list_profiles_spec.rb +188 -188
- data/spec/integration/knife/config_use_profile_spec.rb +100 -100
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +112 -112
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +64 -64
- data/spec/integration/knife/cookbook_download_spec.rb +71 -71
- data/spec/integration/knife/cookbook_list_spec.rb +54 -54
- data/spec/integration/knife/cookbook_show_spec.rb +148 -148
- data/spec/integration/knife/cookbook_upload_spec.rb +90 -90
- data/spec/integration/knife/data_bag_create_spec.rb +124 -124
- data/spec/integration/knife/data_bag_delete_spec.rb +58 -58
- data/spec/integration/knife/data_bag_edit_spec.rb +104 -104
- data/spec/integration/knife/data_bag_from_file_spec.rb +115 -115
- data/spec/integration/knife/data_bag_list_spec.rb +43 -43
- data/spec/integration/knife/data_bag_show_spec.rb +94 -94
- data/spec/integration/knife/delete_spec.rb +1017 -1017
- data/spec/integration/knife/deps_spec.rb +702 -702
- data/spec/integration/knife/diff_spec.rb +602 -602
- data/spec/integration/knife/download_spec.rb +1333 -1333
- data/spec/integration/knife/environment_compare_spec.rb +74 -74
- data/spec/integration/knife/environment_create_spec.rb +40 -40
- data/spec/integration/knife/environment_delete_spec.rb +36 -36
- data/spec/integration/knife/environment_from_file_spec.rb +115 -115
- data/spec/integration/knife/environment_list_spec.rb +41 -41
- data/spec/integration/knife/environment_show_spec.rb +76 -76
- data/spec/integration/knife/list_spec.rb +1059 -1059
- data/spec/integration/knife/node_bulk_delete_spec.rb +51 -51
- data/spec/integration/knife/node_create_spec.rb +46 -46
- data/spec/integration/knife/node_delete_spec.rb +47 -47
- data/spec/integration/knife/node_environment_set_spec.rb +45 -45
- data/spec/integration/knife/node_from_file_spec.rb +58 -58
- data/spec/integration/knife/node_list_spec.rb +44 -44
- data/spec/integration/knife/node_run_list_add_spec.rb +53 -53
- data/spec/integration/knife/node_run_list_remove_spec.rb +35 -35
- data/spec/integration/knife/node_run_list_set_spec.rb +40 -40
- data/spec/integration/knife/node_show_spec.rb +35 -35
- data/spec/integration/knife/raw_spec.rb +248 -248
- data/spec/integration/knife/redirection_spec.rb +54 -54
- data/spec/integration/knife/role_bulk_delete_spec.rb +51 -51
- data/spec/integration/knife/role_create_spec.rb +40 -40
- data/spec/integration/knife/role_delete_spec.rb +47 -47
- data/spec/integration/knife/role_from_file_spec.rb +95 -95
- data/spec/integration/knife/role_list_spec.rb +44 -44
- data/spec/integration/knife/role_show_spec.rb +50 -50
- data/spec/integration/knife/search_node_spec.rb +39 -39
- data/spec/integration/knife/serve_spec.rb +93 -93
- data/spec/integration/knife/show_spec.rb +167 -167
- data/spec/integration/knife/upload_spec.rb +1540 -1540
- data/spec/integration/recipes/accumulator_spec.rb +232 -232
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +171 -171
- data/spec/integration/recipes/lwrp_spec.rb +53 -53
- data/spec/integration/recipes/noop_resource_spec.rb +24 -24
- data/spec/integration/recipes/notifies_spec.rb +394 -394
- data/spec/integration/recipes/notifying_block_spec.rb +111 -111
- data/spec/integration/recipes/provider_choice.rb +37 -37
- data/spec/integration/recipes/recipe_dsl_spec.rb +1373 -1373
- data/spec/integration/recipes/remote_directory.rb +74 -74
- data/spec/integration/recipes/resource_action_spec.rb +504 -504
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +552 -552
- data/spec/integration/recipes/resource_load_spec.rb +192 -192
- data/spec/integration/recipes/unified_mode_spec.rb +876 -0
- data/spec/integration/solo/solo_spec.rb +217 -217
- data/spec/rcov.opts +2 -2
- data/spec/scripts/ssl-serve.rb +47 -47
- data/spec/spec_helper.rb +332 -328
- data/spec/stress/.DS_Store +0 -0
- data/spec/stress/win32/file_spec.rb +37 -37
- data/spec/stress/win32/memory_spec.rb +22 -22
- data/spec/stress/win32/security_spec.rb +69 -69
- data/spec/support/.DS_Store +0 -0
- data/spec/support/chef_helpers.rb +115 -115
- data/spec/support/key_helpers.rb +104 -104
- data/spec/support/lib/chef/provider/easy.rb +35 -35
- data/spec/support/lib/chef/provider/openldap_includer.rb +29 -29
- data/spec/support/lib/chef/provider/snakeoil.rb +42 -42
- data/spec/support/lib/chef/resource/cat.rb +39 -39
- data/spec/support/lib/chef/resource/one_two_three_four.rb +36 -36
- data/spec/support/lib/chef/resource/openldap_includer.rb +28 -28
- data/spec/support/lib/chef/resource/with_state.rb +30 -30
- data/spec/support/lib/chef/resource/zen_follower.rb +35 -35
- data/spec/support/lib/chef/resource/zen_master.rb +40 -40
- data/spec/support/lib/library_load_order.rb +20 -20
- data/spec/support/matchers/leak.rb +98 -98
- data/spec/support/mock/constant.rb +52 -52
- data/spec/support/mock/platform.rb +25 -25
- data/spec/support/platform_helpers.rb +276 -268
- data/spec/support/platforms/prof/gc.rb +51 -51
- data/spec/support/platforms/prof/win32.rb +45 -45
- data/spec/support/platforms/win32/spec_service.rb +59 -59
- data/spec/support/shared/context/client.rb +305 -305
- data/spec/support/shared/context/config.rb +21 -21
- data/spec/support/shared/context/win32.rb +34 -34
- data/spec/support/shared/examples/client.rb +104 -104
- data/spec/support/shared/functional/diff_disabled.rb +10 -10
- data/spec/support/shared/functional/directory_resource.rb +178 -178
- data/spec/support/shared/functional/execute_resource.rb +150 -150
- data/spec/support/shared/functional/file_resource.rb +1050 -1050
- data/spec/support/shared/functional/http.rb +248 -248
- data/spec/support/shared/functional/knife.rb +37 -37
- data/spec/support/shared/functional/securable_resource.rb +578 -578
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +394 -394
- data/spec/support/shared/functional/win32_service.rb +57 -57
- data/spec/support/shared/functional/windows_script.rb +272 -272
- data/spec/support/shared/integration/app_server_support.rb +40 -40
- data/spec/support/shared/integration/integration_helper.rb +154 -154
- data/spec/support/shared/integration/knife_support.rb +196 -196
- data/spec/support/shared/matchers/exit_with_code.rb +32 -32
- data/spec/support/shared/matchers/match_environment_variable.rb +17 -17
- data/spec/support/shared/shared_examples.rb +14 -14
- data/spec/support/shared/unit/api_error_inspector.rb +190 -190
- data/spec/support/shared/unit/api_versioning.rb +77 -77
- data/spec/support/shared/unit/application_dot_d.rb +75 -75
- data/spec/support/shared/unit/execute_resource.rb +168 -168
- data/spec/support/shared/unit/file_system_support.rb +69 -69
- data/spec/support/shared/unit/knife_shared.rb +39 -39
- data/spec/support/shared/unit/mock_shellout.rb +49 -49
- data/spec/support/shared/unit/platform_introspector.rb +189 -189
- data/spec/support/shared/unit/provider/file.rb +854 -854
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +402 -402
- data/spec/support/shared/unit/resource/static_provider_resolution.rb +63 -63
- data/spec/support/shared/unit/script_resource.rb +90 -90
- data/spec/support/shared/unit/user_and_client_shared.rb +114 -114
- data/spec/support/shared/unit/windows_script_resource.rb +80 -80
- data/spec/tiny_server.rb +191 -191
- data/spec/unit/.DS_Store +0 -0
- data/spec/unit/api_client/registration_spec.rb +278 -278
- data/spec/unit/api_client_spec.rb +341 -341
- data/spec/unit/api_client_v1_spec.rb +455 -455
- data/spec/unit/application/apply_spec.rb +113 -113
- data/spec/unit/application/client_spec.rb +559 -559
- data/spec/unit/application/exit_code_spec.rb +144 -144
- data/spec/unit/application/knife_spec.rb +229 -229
- data/spec/unit/application/solo_spec.rb +225 -225
- data/spec/unit/application_spec.rb +486 -486
- data/spec/unit/audit/audit_event_proxy_spec.rb +318 -318
- data/spec/unit/audit/audit_reporter_spec.rb +435 -435
- data/spec/unit/audit/control_group_data_spec.rb +482 -482
- data/spec/unit/audit/logger_spec.rb +42 -42
- data/spec/unit/audit/rspec_formatter_spec.rb +29 -29
- data/spec/unit/audit/runner_spec.rb +144 -144
- data/spec/unit/chef_class_spec.rb +240 -240
- data/spec/unit/chef_fs/config_spec.rb +235 -235
- data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +82 -82
- data/spec/unit/chef_fs/data_handler/data_handler_base_spec.rb +65 -65
- data/spec/unit/chef_fs/data_handler/group_handler_spec.rb +63 -63
- data/spec/unit/chef_fs/diff_spec.rb +328 -328
- data/spec/unit/chef_fs/file_pattern_spec.rb +512 -512
- data/spec/unit/chef_fs/file_system/cookbook_subdir_spec.rb +34 -34
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +47 -47
- data/spec/unit/chef_fs/file_system/repository/base_file_spec.rb +126 -126
- data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +175 -175
- data/spec/unit/chef_fs/file_system_spec.rb +148 -148
- data/spec/unit/chef_fs/parallelizer.rb +477 -477
- data/spec/unit/chef_fs/path_util_spec.rb +108 -108
- data/spec/unit/chef_spec.rb +25 -25
- data/spec/unit/client_spec.rb +595 -595
- data/spec/unit/config_fetcher_spec.rb +125 -125
- data/spec/unit/config_spec.rb +31 -31
- data/spec/unit/cookbook/chefignore_spec.rb +49 -49
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +210 -210
- data/spec/unit/cookbook/file_vendor_spec.rb +123 -123
- data/spec/unit/cookbook/gem_installer_spec.rb +113 -92
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -133
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -70
- data/spec/unit/cookbook/metadata_spec.rb +892 -892
- data/spec/unit/cookbook/synchronizer_spec.rb +557 -557
- data/spec/unit/cookbook/syntax_check_spec.rb +226 -226
- data/spec/unit/cookbook_loader_spec.rb +302 -302
- data/spec/unit/cookbook_manifest_spec.rb +228 -228
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +199 -199
- data/spec/unit/cookbook_spec.rb +62 -62
- data/spec/unit/cookbook_uploader_spec.rb +199 -199
- data/spec/unit/cookbook_version_file_specificity_spec.rb +623 -623
- data/spec/unit/cookbook_version_spec.rb +250 -250
- data/spec/unit/daemon_spec.rb +183 -183
- data/spec/unit/data_bag_item_spec.rb +392 -392
- data/spec/unit/data_bag_spec.rb +260 -260
- data/spec/unit/data_collector/messages/helpers_spec.rb +202 -202
- data/spec/unit/data_collector/messages_spec.rb +329 -329
- data/spec/unit/data_collector/resource_report_spec.rb +145 -145
- data/spec/unit/data_collector_spec.rb +876 -876
- data/spec/unit/decorator/lazy_array_spec.rb +58 -58
- data/spec/unit/decorator/lazy_spec.rb +39 -39
- data/spec/unit/decorator_spec.rb +142 -142
- data/spec/unit/deprecated_spec.rb +65 -65
- data/spec/unit/deprecation_spec.rb +129 -129
- data/spec/unit/digester_spec.rb +49 -49
- data/spec/unit/dsl/audit_spec.rb +43 -43
- data/spec/unit/dsl/data_query_spec.rb +107 -107
- data/spec/unit/dsl/declare_resource_spec.rb +374 -374
- data/spec/unit/dsl/platform_introspection_spec.rb +129 -129
- data/spec/unit/dsl/reboot_pending_spec.rb +87 -87
- data/spec/unit/dsl/recipe_spec.rb +76 -76
- data/spec/unit/dsl/registry_helper_spec.rb +52 -52
- data/spec/unit/dsl/resources_spec.rb +85 -85
- data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +96 -96
- data/spec/unit/encrypted_data_bag_item_spec.rb +438 -438
- data/spec/unit/environment_spec.rb +470 -470
- data/spec/unit/event_dispatch/dispatcher_spec.rb +122 -122
- data/spec/unit/event_dispatch/dsl_spec.rb +83 -83
- data/spec/unit/exceptions_spec.rb +132 -132
- data/spec/unit/file_access_control_spec.rb +308 -308
- data/spec/unit/file_cache_spec.rb +114 -114
- data/spec/unit/file_content_management/deploy/cp_spec.rb +44 -44
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +113 -113
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +232 -232
- data/spec/unit/file_content_management/tempfile_spec.rb +115 -115
- data/spec/unit/formatters/base_spec.rb +100 -100
- data/spec/unit/formatters/doc_spec.rb +110 -92
- data/spec/unit/formatters/error_description_spec.rb +141 -141
- data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +76 -76
- data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +265 -265
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +126 -126
- data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +43 -43
- data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +26 -26
- data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +26 -26
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +191 -191
- data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +91 -91
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +155 -155
- data/spec/unit/guard_interpreter_spec.rb +41 -41
- data/spec/unit/handler/json_file_spec.rb +63 -63
- data/spec/unit/handler_spec.rb +302 -302
- data/spec/unit/http/api_versions_spec.rb +82 -82
- data/spec/unit/http/authenticator_spec.rb +125 -125
- data/spec/unit/http/basic_client_spec.rb +72 -72
- data/spec/unit/http/http_request_spec.rb +97 -97
- data/spec/unit/http/json_input_spec.rb +128 -128
- data/spec/unit/http/simple_spec.rb +32 -32
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +174 -174
- data/spec/unit/http/ssl_policies_spec.rb +169 -169
- data/spec/unit/http/validate_content_length_spec.rb +207 -207
- data/spec/unit/http_spec.rb +229 -229
- data/spec/unit/json_compat_spec.rb +73 -73
- data/spec/unit/key_spec.rb +631 -631
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +152 -152
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +207 -207
- data/spec/unit/knife/bootstrap_spec.rb +972 -886
- data/spec/unit/knife/client_bulk_delete_spec.rb +166 -166
- data/spec/unit/knife/client_create_spec.rb +186 -186
- data/spec/unit/knife/client_delete_spec.rb +99 -99
- data/spec/unit/knife/client_edit_spec.rb +53 -53
- data/spec/unit/knife/client_list_spec.rb +34 -34
- data/spec/unit/knife/client_reregister_spec.rb +62 -62
- data/spec/unit/knife/client_show_spec.rb +52 -52
- data/spec/unit/knife/configure_client_spec.rb +81 -81
- data/spec/unit/knife/configure_spec.rb +190 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +87 -87
- data/spec/unit/knife/cookbook_create_spec.rb +42 -42
- data/spec/unit/knife/cookbook_delete_spec.rb +239 -239
- data/spec/unit/knife/cookbook_download_spec.rb +255 -255
- data/spec/unit/knife/cookbook_list_spec.rb +88 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +65 -65
- data/spec/unit/knife/cookbook_metadata_spec.rb +182 -182
- data/spec/unit/knife/cookbook_show_spec.rb +254 -254
- data/spec/unit/knife/cookbook_test_spec.rb +84 -84
- data/spec/unit/knife/cookbook_upload_spec.rb +331 -331
- data/spec/unit/knife/core/bootstrap_context_spec.rb +324 -324
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +187 -187
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +209 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +110 -110
- data/spec/unit/knife/core/node_editor_spec.rb +211 -211
- data/spec/unit/knife/core/object_loader_spec.rb +81 -81
- data/spec/unit/knife/core/subcommand_loader_spec.rb +64 -64
- data/spec/unit/knife/core/ui_spec.rb +639 -639
- data/spec/unit/knife/data_bag_create_spec.rb +175 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +126 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +173 -173
- data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -165
- data/spec/unit/knife/data_bag_show_spec.rb +138 -138
- data/spec/unit/knife/environment_compare_spec.rb +112 -112
- data/spec/unit/knife/environment_create_spec.rb +91 -91
- data/spec/unit/knife/environment_delete_spec.rb +71 -71
- data/spec/unit/knife/environment_edit_spec.rb +79 -79
- data/spec/unit/knife/environment_from_file_spec.rb +90 -90
- data/spec/unit/knife/environment_list_spec.rb +54 -54
- data/spec/unit/knife/environment_show_spec.rb +52 -52
- data/spec/unit/knife/key_create_spec.rb +223 -223
- data/spec/unit/knife/key_delete_spec.rb +133 -133
- data/spec/unit/knife/key_edit_spec.rb +264 -264
- data/spec/unit/knife/key_helper.rb +74 -74
- data/spec/unit/knife/key_list_spec.rb +216 -216
- data/spec/unit/knife/key_show_spec.rb +126 -126
- data/spec/unit/knife/node_bulk_delete_spec.rb +94 -94
- data/spec/unit/knife/node_delete_spec.rb +77 -77
- data/spec/unit/knife/node_edit_spec.rb +116 -116
- data/spec/unit/knife/node_environment_set_spec.rb +56 -56
- data/spec/unit/knife/node_from_file_spec.rb +59 -59
- data/spec/unit/knife/node_list_spec.rb +62 -62
- data/spec/unit/knife/node_policy_set_spec.rb +122 -122
- data/spec/unit/knife/node_run_list_add_spec.rb +145 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +106 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +115 -115
- data/spec/unit/knife/node_show_spec.rb +65 -65
- data/spec/unit/knife/osc_user_create_spec.rb +93 -93
- data/spec/unit/knife/osc_user_delete_spec.rb +44 -44
- data/spec/unit/knife/osc_user_edit_spec.rb +52 -52
- data/spec/unit/knife/osc_user_list_spec.rb +37 -37
- data/spec/unit/knife/osc_user_reregister_spec.rb +58 -58
- data/spec/unit/knife/osc_user_show_spec.rb +46 -46
- data/spec/unit/knife/raw_spec.rb +43 -43
- data/spec/unit/knife/role_bulk_delete_spec.rb +80 -80
- data/spec/unit/knife/role_create_spec.rb +80 -80
- data/spec/unit/knife/role_delete_spec.rb +67 -67
- data/spec/unit/knife/role_edit_spec.rb +77 -77
- data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -217
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +94 -94
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +102 -102
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +105 -105
- data/spec/unit/knife/role_env_run_list_set_spec.rb +99 -99
- data/spec/unit/knife/role_from_file_spec.rb +69 -69
- data/spec/unit/knife/role_list_spec.rb +54 -54
- data/spec/unit/knife/role_run_list_add_spec.rb +179 -179
- data/spec/unit/knife/role_run_list_clear_spec.rb +84 -84
- data/spec/unit/knife/role_run_list_remove_spec.rb +92 -92
- data/spec/unit/knife/role_run_list_replace_spec.rb +98 -98
- data/spec/unit/knife/role_run_list_set_spec.rb +89 -89
- data/spec/unit/knife/role_show_spec.rb +59 -59
- data/spec/unit/knife/ssh_spec.rb +496 -496
- data/spec/unit/knife/ssl_check_spec.rb +256 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +222 -222
- data/spec/unit/knife/status_spec.rb +111 -111
- data/spec/unit/knife/supermarket_download_spec.rb +152 -152
- data/spec/unit/knife/supermarket_install_spec.rb +201 -201
- data/spec/unit/knife/supermarket_share_spec.rb +209 -209
- data/spec/unit/knife/supermarket_unshare_spec.rb +78 -78
- data/spec/unit/knife/tag_create_spec.rb +23 -23
- data/spec/unit/knife/tag_delete_spec.rb +25 -25
- data/spec/unit/knife/tag_list_spec.rb +23 -23
- data/spec/unit/knife/user_create_spec.rb +214 -214
- data/spec/unit/knife/user_delete_spec.rb +65 -65
- data/spec/unit/knife/user_edit_spec.rb +66 -66
- data/spec/unit/knife/user_list_spec.rb +36 -36
- data/spec/unit/knife/user_reregister_spec.rb +74 -74
- data/spec/unit/knife/user_show_spec.rb +65 -65
- data/spec/unit/knife_spec.rb +588 -588
- data/spec/unit/log/syslog_spec.rb +51 -51
- data/spec/unit/log/winevt_spec.rb +54 -54
- data/spec/unit/log_spec.rb +24 -24
- data/spec/unit/lwrp_spec.rb +690 -690
- data/spec/unit/mash_spec.rb +51 -51
- data/spec/unit/mixin/api_version_request_handling_spec.rb +126 -126
- data/spec/unit/mixin/checksum_spec.rb +54 -54
- data/spec/unit/mixin/convert_to_class_name_spec.rb +54 -54
- data/spec/unit/mixin/deep_merge_spec.rb +342 -342
- data/spec/unit/mixin/deprecation_spec.rb +57 -57
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +96 -96
- data/spec/unit/mixin/homebrew_user_spec.rb +96 -96
- data/spec/unit/mixin/lazy_module_include.rb +71 -71
- data/spec/unit/mixin/openssl_helper_spec.rb +857 -857
- data/spec/unit/mixin/params_validate_spec.rb +421 -421
- data/spec/unit/mixin/path_sanity_spec.rb +92 -92
- data/spec/unit/mixin/powershell_exec_spec.rb +43 -43
- data/spec/unit/mixin/powershell_out_spec.rb +94 -94
- data/spec/unit/mixin/powershell_type_coercions_spec.rb +84 -84
- data/spec/unit/mixin/properties_spec.rb +107 -107
- data/spec/unit/mixin/proxified_socket_spec.rb +97 -97
- data/spec/unit/mixin/securable_spec.rb +314 -314
- data/spec/unit/mixin/shell_out_spec.rb +450 -450
- data/spec/unit/mixin/subclass_directive_spec.rb +45 -45
- data/spec/unit/mixin/template_spec.rb +321 -321
- data/spec/unit/mixin/unformatter_spec.rb +61 -61
- data/spec/unit/mixin/uris_spec.rb +57 -57
- data/spec/unit/mixin/user_context_spec.rb +108 -108
- data/spec/unit/mixin/versioned_api_spec.rb +128 -128
- data/spec/unit/mixin/which.rb +160 -160
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +85 -85
- data/spec/unit/mixin/xml_escape_spec.rb +54 -54
- data/spec/unit/monkey_patches/uri_spec.rb +34 -34
- data/spec/unit/monologger_spec.rb +45 -45
- data/spec/unit/node/attribute_spec.rb +1276 -1276
- data/spec/unit/node/immutable_collections_spec.rb +327 -327
- data/spec/unit/node/vivid_mash_spec.rb +353 -353
- data/spec/unit/node_map_spec.rb +242 -242
- data/spec/unit/node_spec.rb +1851 -1851
- data/spec/unit/org_spec.rb +196 -196
- data/spec/unit/platform/query_helpers_spec.rb +207 -207
- data/spec/unit/policy_builder/dynamic_spec.rb +273 -273
- data/spec/unit/policy_builder/expand_node_object_spec.rb +311 -311
- data/spec/unit/policy_builder/policyfile_spec.rb +872 -872
- data/spec/unit/policy_builder_spec.rb +26 -26
- data/spec/unit/property/state_spec.rb +508 -508
- data/spec/unit/property/validation_spec.rb +758 -758
- data/spec/unit/property_spec.rb +1231 -1231
- data/spec/unit/provider/apt_preference_spec.rb +87 -87
- data/spec/unit/provider/apt_repository_spec.rb +254 -254
- data/spec/unit/provider/apt_update_spec.rb +116 -116
- data/spec/unit/provider/cookbook_file/content_spec.rb +39 -39
- data/spec/unit/provider/cookbook_file_spec.rb +59 -59
- data/spec/unit/provider/cron/unix_spec.rb +144 -144
- data/spec/unit/provider/cron_spec.rb +1084 -1084
- data/spec/unit/provider/directory_spec.rb +300 -300
- data/spec/unit/provider/dsc_resource_spec.rb +343 -343
- data/spec/unit/provider/dsc_script_spec.rb +173 -173
- data/spec/unit/provider/execute_spec.rb +251 -251
- data/spec/unit/provider/file/content_spec.rb +114 -114
- data/spec/unit/provider/file_spec.rb +57 -57
- data/spec/unit/provider/git_spec.rb +782 -782
- data/spec/unit/provider/group/dscl_spec.rb +339 -339
- data/spec/unit/provider/group/gpasswd_spec.rb +119 -119
- data/spec/unit/provider/group/groupadd_spec.rb +194 -194
- data/spec/unit/provider/group/groupmod_spec.rb +136 -136
- data/spec/unit/provider/group/pw_spec.rb +141 -141
- data/spec/unit/provider/group/suse_spec.rb +90 -90
- data/spec/unit/provider/group/usermod_spec.rb +115 -115
- data/spec/unit/provider/group/windows_spec.rb +124 -124
- data/spec/unit/provider/group_spec.rb +286 -286
- data/spec/unit/provider/http_request_spec.rb +159 -159
- data/spec/unit/provider/ifconfig/aix_spec.rb +180 -180
- data/spec/unit/provider/ifconfig/debian_spec.rb +332 -332
- data/spec/unit/provider/ifconfig/redhat_spec.rb +83 -83
- data/spec/unit/provider/ifconfig_spec.rb +206 -206
- data/spec/unit/provider/launchd_spec.rb +268 -268
- data/spec/unit/provider/link_spec.rb +409 -409
- data/spec/unit/provider/log_spec.rb +94 -94
- data/spec/unit/provider/mdadm_spec.rb +140 -140
- data/spec/unit/provider/mount/aix_spec.rb +277 -277
- data/spec/unit/provider/mount/mount_spec.rb +527 -527
- data/spec/unit/provider/mount/solaris_spec.rb +822 -822
- data/spec/unit/provider/mount/windows_spec.rb +149 -149
- data/spec/unit/provider/mount_spec.rb +191 -191
- data/spec/unit/provider/ohai_spec.rb +84 -84
- data/spec/unit/provider/osx_profile_spec.rb +257 -257
- data/spec/unit/provider/package/apt_spec.rb +610 -610
- data/spec/unit/provider/package/bff_spec.rb +187 -187
- data/spec/unit/provider/package/cab_spec.rb +272 -272
- data/spec/unit/provider/package/chocolatey_spec.rb +507 -507
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +29 -29
- data/spec/unit/provider/package/dpkg_spec.rb +287 -287
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +274 -274
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +148 -148
- data/spec/unit/provider/package/freebsd/port_spec.rb +163 -163
- data/spec/unit/provider/package/homebrew_spec.rb +293 -293
- data/spec/unit/provider/package/ips_spec.rb +233 -233
- data/spec/unit/provider/package/macports_spec.rb +203 -203
- data/spec/unit/provider/package/msu_spec.rb +283 -283
- data/spec/unit/provider/package/openbsd_spec.rb +132 -132
- data/spec/unit/provider/package/pacman_spec.rb +194 -194
- data/spec/unit/provider/package/paludis_spec.rb +134 -134
- data/spec/unit/provider/package/portage_spec.rb +179 -179
- data/spec/unit/provider/package/powershell_spec.rb +501 -501
- data/spec/unit/provider/package/rpm_spec.rb +429 -429
- data/spec/unit/provider/package/rubygems_spec.rb +981 -981
- data/spec/unit/provider/package/smartos_spec.rb +110 -110
- data/spec/unit/provider/package/solaris_spec.rb +167 -167
- data/spec/unit/provider/package/windows/exe_spec.rb +201 -201
- data/spec/unit/provider/package/windows/msi_spec.rb +168 -168
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +78 -78
- data/spec/unit/provider/package/windows_spec.rb +463 -463
- data/spec/unit/provider/package/yum/python_helper_spec.rb +29 -29
- data/spec/unit/provider/package/yum/yum_cache_spec.rb +109 -109
- data/spec/unit/provider/package/zypper_spec.rb +487 -478
- data/spec/unit/provider/package_spec.rb +1013 -1013
- data/spec/unit/provider/powershell_script_spec.rb +116 -116
- data/spec/unit/provider/registry_key_spec.rb +487 -487
- data/spec/unit/provider/remote_directory_spec.rb +236 -236
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +245 -245
- data/spec/unit/provider/remote_file/content_spec.rb +253 -253
- data/spec/unit/provider/remote_file/fetcher_spec.rb +95 -95
- data/spec/unit/provider/remote_file/ftp_spec.rb +217 -217
- data/spec/unit/provider/remote_file/http_spec.rb +324 -324
- data/spec/unit/provider/remote_file/local_file_spec.rb +105 -105
- data/spec/unit/provider/remote_file/network_file_spec.rb +50 -50
- data/spec/unit/provider/remote_file/sftp_spec.rb +150 -150
- data/spec/unit/provider/remote_file_spec.rb +62 -62
- data/spec/unit/provider/route_spec.rb +270 -270
- data/spec/unit/provider/ruby_block_spec.rb +45 -45
- data/spec/unit/provider/script_spec.rb +157 -157
- data/spec/unit/provider/service/aix_service_spec.rb +195 -195
- data/spec/unit/provider/service/aixinit_service_spec.rb +272 -272
- data/spec/unit/provider/service/arch_service_spec.rb +324 -324
- data/spec/unit/provider/service/debian_service_spec.rb +249 -249
- data/spec/unit/provider/service/freebsd_service_spec.rb +617 -617
- data/spec/unit/provider/service/gentoo_service_spec.rb +144 -144
- data/spec/unit/provider/service/init_service_spec.rb +235 -235
- data/spec/unit/provider/service/insserv_service_spec.rb +75 -75
- data/spec/unit/provider/service/invokercd_service_spec.rb +211 -211
- data/spec/unit/provider/service/macosx_spec.rb +340 -340
- data/spec/unit/provider/service/openbsd_service_spec.rb +549 -549
- data/spec/unit/provider/service/redhat_spec.rb +250 -250
- data/spec/unit/provider/service/simple_service_spec.rb +169 -169
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +292 -292
- data/spec/unit/provider/service/systemd_service_spec.rb +364 -364
- data/spec/unit/provider/service/upstart_service_spec.rb +351 -351
- data/spec/unit/provider/service/windows_spec.rb +910 -910
- data/spec/unit/provider/service_spec.rb +168 -168
- data/spec/unit/provider/subversion_spec.rb +361 -361
- data/spec/unit/provider/systemd_unit_spec.rb +967 -967
- data/spec/unit/provider/template/content_spec.rb +169 -169
- data/spec/unit/provider/template_spec.rb +87 -87
- data/spec/unit/provider/user/aix_spec.rb +96 -96
- data/spec/unit/provider/user/dscl_spec.rb +920 -920
- data/spec/unit/provider/user/linux_spec.rb +74 -74
- data/spec/unit/provider/user/pw_spec.rb +235 -235
- data/spec/unit/provider/user/solaris_spec.rb +177 -177
- data/spec/unit/provider/user/windows_spec.rb +197 -197
- data/spec/unit/provider/user_spec.rb +478 -478
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +46 -46
- data/spec/unit/provider/windows_env_spec.rb +400 -400
- data/spec/unit/provider/windows_path_spec.rb +65 -65
- data/spec/unit/provider/windows_task_spec.rb +430 -430
- data/spec/unit/provider/yum_repository_spec.rb +35 -35
- data/spec/unit/provider/zypper_repository_spec.rb +126 -126
- data/spec/unit/provider_resolver_spec.rb +923 -923
- data/spec/unit/provider_spec.rb +201 -201
- data/spec/unit/pure_application_spec.rb +32 -32
- data/spec/unit/recipe_spec.rb +589 -589
- data/spec/unit/resource/apt_package_spec.rb +56 -56
- data/spec/unit/resource/apt_preference_spec.rb +57 -57
- data/spec/unit/resource/apt_repository_spec.rb +92 -92
- data/spec/unit/resource/apt_update_spec.rb +62 -62
- data/spec/unit/resource/bash_spec.rb +45 -45
- data/spec/unit/resource/batch_spec.rb +46 -46
- data/spec/unit/resource/bff_package_spec.rb +51 -51
- data/spec/unit/resource/breakpoint_spec.rb +64 -64
- data/spec/unit/resource/build_essential_spec.rb +43 -43
- data/spec/unit/resource/cab_package_spec.rb +64 -64
- data/spec/unit/resource/chef_gem_spec.rb +125 -125
- data/spec/unit/resource/chef_handler_spec.rb +40 -40
- data/spec/unit/resource/chocolatey_config_spec.rb +98 -98
- data/spec/unit/resource/chocolatey_package_spec.rb +91 -91
- data/spec/unit/resource/chocolatey_source_spec.rb +102 -102
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -45
- data/spec/unit/resource/conditional_spec.rb +254 -254
- data/spec/unit/resource/cookbook_file_spec.rb +93 -93
- data/spec/unit/resource/cron_access_spec.rb +36 -36
- data/spec/unit/resource/cron_d_spec.rb +90 -90
- data/spec/unit/resource/cron_spec.rb +173 -173
- data/spec/unit/resource/csh_spec.rb +45 -45
- data/spec/unit/resource/directory_spec.rb +69 -69
- data/spec/unit/resource/dmg_package_spec.rb +39 -39
- data/spec/unit/resource/dnf_package_spec.rb +108 -108
- data/spec/unit/resource/dpkg_package_spec.rb +50 -50
- data/spec/unit/resource/dsc_resource_spec.rb +102 -102
- data/spec/unit/resource/dsc_script_spec.rb +134 -134
- data/spec/unit/resource/execute_spec.rb +277 -277
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -103
- data/spec/unit/resource/file/verification_spec.rb +147 -147
- data/spec/unit/resource/file_spec.rb +127 -127
- data/spec/unit/resource/freebsd_package_spec.rb +103 -103
- data/spec/unit/resource/gem_package_spec.rb +67 -67
- data/spec/unit/resource/git_spec.rb +62 -62
- data/spec/unit/resource/group_spec.rb +165 -165
- data/spec/unit/resource/homebrew_cask_spec.rb +40 -40
- data/spec/unit/resource/homebrew_package_spec.rb +68 -68
- data/spec/unit/resource/homebrew_tap_spec.rb +44 -44
- data/spec/unit/resource/hostname_spec.rb +47 -47
- data/spec/unit/resource/http_request_spec.rb +65 -65
- data/spec/unit/resource/ifconfig_spec.rb +109 -109
- data/spec/unit/resource/ips_package_spec.rb +54 -54
- data/spec/unit/resource/kernel_module_spec.rb +48 -48
- data/spec/unit/resource/ksh_spec.rb +45 -45
- data/spec/unit/resource/launchd_spec.rb +40 -40
- data/spec/unit/resource/link_spec.rb +124 -124
- data/spec/unit/resource/locale_spec.rb +60 -60
- data/spec/unit/resource/log_spec.rb +64 -64
- data/spec/unit/resource/macos_user_defaults_spec.rb +35 -35
- data/spec/unit/resource/macports_package_spec.rb +51 -51
- data/spec/unit/resource/mdadm_spec.rb +104 -104
- data/spec/unit/resource/mount_spec.rb +178 -178
- data/spec/unit/resource/msu_package_spec.rb +63 -63
- data/spec/unit/resource/ohai_hint_spec.rb +44 -44
- data/spec/unit/resource/ohai_spec.rb +62 -62
- data/spec/unit/resource/openbsd_package_spec.rb +58 -58
- data/spec/unit/resource/openssl_dhparam.rb +61 -61
- data/spec/unit/resource/openssl_ec_private_key_spec.rb +64 -64
- data/spec/unit/resource/openssl_ec_public_key_spec.rb +43 -43
- data/spec/unit/resource/openssl_rsa_private_key_spec.rb +64 -64
- data/spec/unit/resource/openssl_rsa_public_key_spec.rb +43 -43
- data/spec/unit/resource/openssl_x509_certificate_spec.rb +72 -72
- data/spec/unit/resource/openssl_x509_crl_spec.rb +61 -61
- data/spec/unit/resource/openssl_x509_request.rb +68 -68
- data/spec/unit/resource/osx_profile_spec.rb +60 -60
- data/spec/unit/resource/package_spec.rb +108 -108
- data/spec/unit/resource/pacman_package_spec.rb +46 -46
- data/spec/unit/resource/paludis_package_spec.rb +36 -36
- data/spec/unit/resource/perl_spec.rb +44 -44
- data/spec/unit/resource/portage_package_spec.rb +46 -46
- data/spec/unit/resource/powershell_package_source_spec.rb +219 -219
- data/spec/unit/resource/powershell_package_spec.rb +98 -98
- data/spec/unit/resource/powershell_script_spec.rb +136 -136
- data/spec/unit/resource/python_spec.rb +40 -40
- data/spec/unit/resource/reboot_spec.rb +47 -47
- data/spec/unit/resource/registry_key_spec.rb +215 -215
- data/spec/unit/resource/remote_directory_spec.rb +105 -105
- data/spec/unit/resource/remote_file_spec.rb +220 -220
- data/spec/unit/resource/resource_notification_spec.rb +169 -169
- data/spec/unit/resource/rhsm_errata_level_spec.rb +50 -50
- data/spec/unit/resource/rhsm_errata_spec.rb +39 -39
- data/spec/unit/resource/rhsm_register_spec.rb +204 -204
- data/spec/unit/resource/rhsm_repo_spec.rb +64 -64
- data/spec/unit/resource/rhsm_subscription_spec.rb +98 -98
- data/spec/unit/resource/route_spec.rb +95 -95
- data/spec/unit/resource/rpm_package_spec.rb +62 -62
- data/spec/unit/resource/ruby_block_spec.rb +58 -58
- data/spec/unit/resource/ruby_spec.rb +39 -39
- data/spec/unit/resource/scm_spec.rb +173 -173
- data/spec/unit/resource/script_spec.rb +52 -52
- data/spec/unit/resource/service_spec.rb +206 -206
- data/spec/unit/resource/smartos_package_spec.rb +52 -52
- data/spec/unit/resource/solaris_package_spec.rb +54 -54
- data/spec/unit/resource/ssh_known_hosts_entry_spec.rb +55 -55
- data/spec/unit/resource/subversion_spec.rb +91 -91
- data/spec/unit/resource/sudo_spec.rb +99 -99
- data/spec/unit/resource/swap_file_spec.rb +39 -39
- data/spec/unit/resource/sysctl_spec.rb +54 -54
- data/spec/unit/resource/systemd_unit_spec.rb +130 -130
- data/spec/unit/resource/template_spec.rb +222 -222
- data/spec/unit/resource/timezone.rb +39 -39
- data/spec/unit/resource/user_spec.rb +122 -122
- data/spec/unit/resource/windows_ad_join_spec.rb +51 -51
- data/spec/unit/resource/windows_auto_run_spec.rb +50 -50
- data/spec/unit/resource/windows_certificate.rb +83 -83
- data/spec/unit/resource/windows_env_spec.rb +75 -75
- data/spec/unit/resource/windows_feature.rb +64 -64
- data/spec/unit/resource/windows_feature_dism.rb +72 -72
- data/spec/unit/resource/windows_feature_powershell.rb +72 -72
- data/spec/unit/resource/windows_firewall_rule_spec.rb +401 -401
- data/spec/unit/resource/windows_font_spec.rb +43 -43
- data/spec/unit/resource/windows_package_spec.rb +105 -105
- data/spec/unit/resource/windows_pagefile_spec.rb +49 -49
- data/spec/unit/resource/windows_path_spec.rb +40 -40
- data/spec/unit/resource/windows_printer_port_spec.rb +62 -62
- data/spec/unit/resource/windows_printer_spec.rb +52 -52
- data/spec/unit/resource/windows_service_spec.rb +93 -93
- data/spec/unit/resource/windows_share.rb +39 -39
- data/spec/unit/resource/windows_shortcut_spec.rb +38 -38
- data/spec/unit/resource/windows_task_spec.rb +399 -399
- data/spec/unit/resource/windows_workgroup_spec.rb +74 -74
- data/spec/unit/resource/yum_package_spec.rb +150 -150
- data/spec/unit/resource/yum_repository_spec.rb +152 -152
- data/spec/unit/resource/zypper_package_spec.rb +51 -51
- data/spec/unit/resource/zypper_repository_spec.rb +115 -115
- data/spec/unit/resource_builder_spec.rb +1 -1
- data/spec/unit/resource_collection/resource_list_spec.rb +137 -137
- data/spec/unit/resource_collection/resource_set_spec.rb +244 -244
- data/spec/unit/resource_collection/stepable_iterator_spec.rb +144 -144
- data/spec/unit/resource_collection_spec.rb +408 -408
- data/spec/unit/resource_definition_spec.rb +117 -117
- data/spec/unit/resource_inspector_spec.rb +60 -60
- data/spec/unit/resource_reporter_spec.rb +782 -782
- data/spec/unit/resource_resolver_spec.rb +52 -52
- data/spec/unit/resource_spec.rb +1195 -1195
- data/spec/unit/role_spec.rb +358 -358
- data/spec/unit/run_context/child_run_context_spec.rb +133 -133
- data/spec/unit/run_context/cookbook_compiler_spec.rb +224 -224
- data/spec/unit/run_context_spec.rb +241 -241
- data/spec/unit/run_list/run_list_expansion_spec.rb +144 -144
- data/spec/unit/run_list/run_list_item_spec.rb +117 -117
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +197 -197
- data/spec/unit/run_list_spec.rb +312 -312
- data/spec/unit/run_lock_spec.rb +140 -140
- data/spec/unit/run_status_spec.rb +144 -144
- data/spec/unit/runner_spec.rb +398 -398
- data/spec/unit/scan_access_control_spec.rb +183 -183
- data/spec/unit/search/query_spec.rb +283 -283
- data/spec/unit/server_api_spec.rb +124 -124
- data/spec/unit/server_api_versions_spec.rb +66 -66
- data/spec/unit/shell/model_wrapper_spec.rb +96 -96
- data/spec/unit/shell/shell_ext_spec.rb +153 -153
- data/spec/unit/shell/shell_session_spec.rb +250 -250
- data/spec/unit/shell_spec.rb +162 -162
- data/spec/unit/user_spec.rb +275 -275
- data/spec/unit/user_v1_spec.rb +583 -583
- data/spec/unit/util/backup_spec.rb +141 -141
- data/spec/unit/util/diff_spec.rb +576 -576
- data/spec/unit/util/dsc/configuration_generator_spec.rb +193 -193
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +248 -248
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +200 -200
- data/spec/unit/util/dsc/resource_store.rb +78 -78
- data/spec/unit/util/editor_spec.rb +152 -152
- data/spec/unit/util/file_edit_spec.rb +224 -224
- data/spec/unit/util/powershell/cmdlet_spec.rb +106 -106
- data/spec/unit/util/powershell/ps_credential_spec.rb +44 -44
- data/spec/unit/util/selinux_spec.rb +157 -157
- data/spec/unit/util/threaded_job_queue_spec.rb +51 -51
- data/spec/unit/util/windows/logon_session_spec.rb +285 -285
- data/spec/unit/version/platform_spec.rb +60 -60
- data/spec/unit/version_class_spec.rb +171 -171
- data/spec/unit/version_constraint/platform_spec.rb +45 -45
- data/spec/unit/version_constraint_spec.rb +179 -179
- data/spec/unit/version_string_spec.rb +79 -79
- data/spec/unit/win32/error_spec.rb +77 -77
- data/spec/unit/win32/link_spec.rb +73 -73
- data/spec/unit/win32/registry_spec.rb +394 -394
- data/spec/unit/win32/security_spec.rb +134 -134
- data/spec/unit/windows_service_spec.rb +118 -118
- data/tasks/.DS_Store +0 -0
- data/tasks/announce.rb +58 -58
- data/tasks/bin/run_external_test +29 -29
- data/tasks/dependencies.rb +58 -58
- data/tasks/maintainers.rb +211 -211
- data/tasks/rspec.rb +90 -90
- data/tasks/templates/prerelease.md.erb +35 -35
- data/tasks/templates/release.md.erb +34 -34
- metadata +34 -6
@@ -1,910 +1,910 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Nuo Yan <nuo@chef.io>
|
3
|
-
# Author:: Seth Chisamore <schisamo@chef.io>
|
4
|
-
# Copyright:: Copyright 2010-2016, Chef Software 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
|
-
|
22
|
-
describe Chef::Provider::Service::Windows, "load_current_resource", :windows_only do
|
23
|
-
include_context "Win32"
|
24
|
-
|
25
|
-
let(:logger) { double("Mixlib::Log::Child").as_null_object }
|
26
|
-
|
27
|
-
let(:chef_service_name) { "chef-client" }
|
28
|
-
let(:new_resource) { Chef::Resource::WindowsService.new(chef_service_name) }
|
29
|
-
|
30
|
-
# Actual response from Win32::Service.config_info('chef-client')
|
31
|
-
let(:chef_service_binary_path_name) do
|
32
|
-
'C:\\opscode\\chef\\embedded\\bin\\ruby.exe C:\\opscode\\chef\\bin\\chef-windows-service'
|
33
|
-
end
|
34
|
-
let(:chef_service_config_info) do
|
35
|
-
double("Struct::ServiceConfigInfo",
|
36
|
-
service_type: "own process",
|
37
|
-
start_type: "auto start",
|
38
|
-
error_control: "ignore",
|
39
|
-
binary_path_name: chef_service_binary_path_name,
|
40
|
-
load_order_group: "",
|
41
|
-
tag_id: 0,
|
42
|
-
dependencies: ["Winmgmt"],
|
43
|
-
service_start_name: "LocalSystem",
|
44
|
-
display_name: "Chef Client Service"
|
45
|
-
)
|
46
|
-
end
|
47
|
-
|
48
|
-
# Actual response from Win32::Service.services
|
49
|
-
let(:chef_service_info) do
|
50
|
-
double("Struct::ServiceInfo",
|
51
|
-
service_name: chef_service_name,
|
52
|
-
display_name: "Chef Client Service",
|
53
|
-
service_type: "own process",
|
54
|
-
current_state: "running",
|
55
|
-
controls_accepted: [],
|
56
|
-
win32_exit_code: 1077,
|
57
|
-
service_specific_exit_code: 0,
|
58
|
-
check_point: 0,
|
59
|
-
wait_hint: 0,
|
60
|
-
binary_path_name: chef_service_binary_path_name,
|
61
|
-
start_type: "auto start",
|
62
|
-
error_control: "ignore",
|
63
|
-
load_order_group: "",
|
64
|
-
tag_id: 0,
|
65
|
-
start_name: "LocalSystem",
|
66
|
-
dependencies: ["Winmgmt"],
|
67
|
-
description: "Runs Chef Client on regular, configurable intervals.",
|
68
|
-
interactive: false,
|
69
|
-
pid: 0,
|
70
|
-
service_flags: 0,
|
71
|
-
reset_period: 0,
|
72
|
-
reboot_message: nil,
|
73
|
-
command: nil,
|
74
|
-
num_actions: 0,
|
75
|
-
actions: nil,
|
76
|
-
delayed_start: 1
|
77
|
-
)
|
78
|
-
end
|
79
|
-
|
80
|
-
let(:provider) do
|
81
|
-
run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
|
82
|
-
allow(run_context).to receive(:logger).and_return(logger)
|
83
|
-
prvdr = Chef::Provider::Service::Windows.new(new_resource, run_context)
|
84
|
-
prvdr.current_resource = Chef::Resource::WindowsService.new("current-chef")
|
85
|
-
prvdr
|
86
|
-
end
|
87
|
-
|
88
|
-
let(:service_right) { Chef::Provider::Service::Windows::SERVICE_RIGHT }
|
89
|
-
|
90
|
-
before(:all) do
|
91
|
-
Win32::Service = Class.new
|
92
|
-
end
|
93
|
-
|
94
|
-
before(:each) do
|
95
|
-
Win32::Service::AUTO_START = 0x00000002
|
96
|
-
Win32::Service::DEMAND_START = 0x00000003
|
97
|
-
Win32::Service::DISABLED = 0x00000004
|
98
|
-
|
99
|
-
allow(Win32::Service).to receive(:start).with(any_args).and_return(Win32::Service)
|
100
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
101
|
-
double("StatusStruct", current_state: "running"))
|
102
|
-
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name)
|
103
|
-
.and_return(chef_service_config_info)
|
104
|
-
|
105
|
-
# Real response from Win32::Service.services
|
106
|
-
allow(Win32::Service).to receive(:services).and_return([
|
107
|
-
# Add chef_service_info to our stubbed response so our tests that are expecting the service to exist work
|
108
|
-
chef_service_info,
|
109
|
-
double("Struct::ServiceInfo", service_name: "ACPI", display_name: "Microsoft ACPI Driver", service_type: "kernel driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: '\\SystemRoot\\System32\\drivers\\ACPI.sys', start_type: "boot start", error_control: "critical", load_order_group: "Core", tag_id: 2, start_name: "", dependencies: [], description: "", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
110
|
-
double("Struct::ServiceInfo", service_name: "cdrom", display_name: "CD-ROM Driver", service_type: "kernel driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: '\\SystemRoot\\System32\\drivers\\cdrom.sys', start_type: "system start", error_control: "normal", load_order_group: "SCSI CDROM Class", tag_id: 3, start_name: "", dependencies: [], description: "", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
111
|
-
double("Struct::ServiceInfo", service_name: "CryptSvc", display_name: "Cryptographic Services", service_type: "share process", current_state: "running", controls_accepted: ["shutdown", "stop", "session change"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k NetworkService', start_type: "auto start", error_control: "normal", load_order_group: "", tag_id: 0, start_name: 'NT Authority\\NetworkService', dependencies: ["RpcSs"], description: "Provides three management services: Catalog Database Service, which confirms the signatures of Windows files and allows new programs to be installed; Protected Root Service, which adds and removes Trusted Root Certification Authority certificates from this computer; and Automatic Root Certificate Update Service, which retrieves root certificates from Windows Update and enable scenarios such as SSL. If this service is stopped, these management services will not function properly. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 932, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 60000 }, 2 => { action_type: "none", delay: 0 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
112
|
-
double("Struct::ServiceInfo", service_name: "DcomLaunch", display_name: "DCOM Server Process Launcher", service_type: "share process", current_state: "running", controls_accepted: ["session change"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k DcomLaunch', start_type: "auto start", error_control: "normal", load_order_group: "COM Infrastructure", tag_id: 0, start_name: "LocalSystem", dependencies: [], description: "The DCOMLAUNCH service launches COM and DCOM servers in response to object activation requests. If this service is stopped or disabled, programs using COM or DCOM will not function properly. It is strongly recommended that you have the DCOMLAUNCH service running.", interactive: false, pid: 552, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 1, actions: { 1 => { action_type: "reboot", delay: 60000 } }, delayed_start: 0),
|
113
|
-
double("Struct::ServiceInfo", service_name: "Dfsc", display_name: "DFS Namespace Client Driver", service_type: "file system driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'System32\\Drivers\\dfsc.sys', start_type: "system start", error_control: "normal", load_order_group: "Network", tag_id: 0, start_name: "", dependencies: ["Mup"], description: "Client driver for access to DFS Namespaces", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
114
|
-
double("Struct::ServiceInfo", service_name: "Dhcp", display_name: "DHCP Client", service_type: "share process", current_state: "running", controls_accepted: %w{shutdown stop}, win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted', start_type: "auto start", error_control: "normal", load_order_group: "TDI", tag_id: 0, start_name: 'NT Authority\\LocalService', dependencies: %w{NSI Tdx Afd}, description: "Registers and updates IP addresses and DNS records for this computer. If this service is stopped, this computer will not receive dynamic IP addresses and DNS updates. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 780, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 120000 }, 2 => { action_type: "restart", delay: 300000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
115
|
-
double("Struct::ServiceInfo", service_name: "EventLog", display_name: "Windows Event Log", service_type: "share process", current_state: "running", controls_accepted: %w{shutdown stop}, win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\System32\\svchost.exe -k LocalServiceNetworkRestricted', start_type: "auto start", error_control: "normal", load_order_group: "Event Log", tag_id: 0, start_name: 'NT AUTHORITY\\LocalService', dependencies: [], description: "This service manages events and event logs. It supports logging events, querying events, subscribing to events, archiving event logs, and managing event metadata. It can display events in both XML and plain text format. Stopping this service may compromise security and reliability of the system.", interactive: false, pid: 780, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 60000 }, 2 => { action_type: "restart", delay: 120000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
116
|
-
double("Struct::ServiceInfo", service_name: "EventSystem", display_name: "COM+ Event System", service_type: "share process", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalService', start_type: "auto start", error_control: "normal", load_order_group: "", tag_id: 0, start_name: 'NT AUTHORITY\\LocalService', dependencies: ["rpcss"], description: "Supports System Event Notification Service (SENS), which provides automatic distribution of events to subscribing Component Object Model (COM) components. If the service is stopped, SENS will close and will not be able to provide logon and logoff notifications. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 844, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 1000 }, 2 => { action_type: "restart", delay: 5000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
117
|
-
double("Struct::ServiceInfo", service_name: "LanmanWorkstation", display_name: "Workstation", service_type: "share process", current_state: "running", controls_accepted: ["pause continue", "stop", "power event"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\System32\\svchost.exe -k NetworkService', start_type: "auto start", error_control: "normal", load_order_group: "NetworkProvider", tag_id: 0, start_name: 'NT AUTHORITY\\NetworkService', dependencies: %w{Bowser MRxSmb20 NSI}, description: "Creates and maintains client network connections to remote servers using the SMB protocol. If this service is stopped, these connections will be unavailable. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 932, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 60000 }, 2 => { action_type: "restart", delay: 120000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
118
|
-
double("Struct::ServiceInfo", service_name: "lmhosts", display_name: "TCP/IP NetBIOS Helper", service_type: "share process", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted', start_type: "auto start", error_control: "normal", load_order_group: "TDI", tag_id: 0, start_name: 'NT AUTHORITY\\LocalService', dependencies: %w{NetBT Afd}, description: "Provides support for the NetBIOS over TCP/IP (NetBT) service and NetBIOS name resolution for clients on the network, therefore enabling users to share files, print, and log on to the network. If this service is stopped, these functions might be unavailable. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 780, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 100 }, 2 => { action_type: "restart", delay: 100 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
119
|
-
double("Struct::ServiceInfo", service_name: "MpsSvc", display_name: "Windows Firewall", service_type: "share process", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNoNetwork', start_type: "auto start", error_control: "normal", load_order_group: "NetworkProvider", tag_id: 0, start_name: 'NT Authority\\LocalService', dependencies: %w{mpsdrv bfe}, description: "Windows Firewall helps protect your computer by preventing unauthorized users from gaining access to your computer through the Internet or a network.", interactive: false, pid: 340, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 120000 }, 2 => { action_type: "restart", delay: 300000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
120
|
-
double("Struct::ServiceInfo", service_name: "mrxsmb", display_name: "SMB MiniRedirector Wrapper and Engine", service_type: "file system driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'system32\\DRIVERS\\mrxsmb.sys', start_type: "demand start", error_control: "normal", load_order_group: "Network", tag_id: 5, start_name: "", dependencies: ["rdbss"], description: "Implements the framework for the SMB filesystem redirector", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
121
|
-
double("Struct::ServiceInfo", service_name: "Ntfs", display_name: "Ntfs", service_type: "file system driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: "", start_type: "demand start", error_control: "normal", load_order_group: "Boot File System", tag_id: 0, start_name: "", dependencies: [], description: "", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
122
|
-
double("Struct::ServiceInfo", service_name: "Tcpip", display_name: "TCP/IP Protocol Driver", service_type: "kernel driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: '\\SystemRoot\\System32\\drivers\\tcpip.sys', start_type: "boot start", error_control: "normal", load_order_group: "PNP_TDI", tag_id: 3, start_name: "", dependencies: [], description: "TCP/IP Protocol Driver", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
123
|
-
double("Struct::ServiceInfo", service_name: "W32Time", display_name: "Windows Time", service_type: "share process", current_state: "running", controls_accepted: ["netbind change", "param change", "shutdown", "stop", "hardware profile change", "power event"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalService', start_type: "demand start", error_control: "normal", load_order_group: "", tag_id: 0, start_name: 'NT AUTHORITY\\LocalService', dependencies: [], description: "Maintains date and time synchronization on all clients and servers in the network. If this service is stopped, date and time synchronization will be unavailable. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 844, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 60000 }, 2 => { action_type: "restart", delay: 120000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
124
|
-
double("Struct::ServiceInfo", service_name: "Winmgmt", display_name: "Windows Management Instrumentation", service_type: "share process", current_state: "running", controls_accepted: ["pause continue", "shutdown", "stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k netsvcs', start_type: "auto start", error_control: "ignore", load_order_group: "", tag_id: 0, start_name: "localSystem", dependencies: ["RPCSS"], description: "Provides a common interface and object model to access management information about operating system, devices, applications and services. If this service is stopped, most Windows-based software will not function properly. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 812, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 120000 }, 2 => { action_type: "restart", delay: 300000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
125
|
-
double("Struct::ServiceInfo", service_name: "WinRM", display_name: "Windows Remote Management (WS-Management)", service_type: "share process", current_state: "running", controls_accepted: %w{shutdown stop}, win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\System32\\svchost.exe -k NetworkService', start_type: "auto start", error_control: "normal", load_order_group: "", tag_id: 0, start_name: 'NT AUTHORITY\\NetworkService', dependencies: %w{RPCSS HTTP}, description: "Windows Remote Management (WinRM) service implements the WS-Management protocol for remote management. WS-Management is a standard web services protocol used for remote software and hardware management. The WinRM service listens on the network for WS-Management requests and processes them. The WinRM Service needs to be configured with a listener using winrm.cmd command line tool or through Group Policy in order for it to listen over the network. The WinRM service provides access to WMI data and enables event collection. Event collection and subscription to events require that the service is running. WinRM messages use HTTP and HTTPS as transports. The WinRM service does not depend on IIS but is preconfigured to share a port with IIS on the same machine. The WinRM service reserves the /wsman URL prefix. To prevent conflicts with IIS, administrators should ensure that any websites hosted on IIS do not use the /wsman URL prefix.", interactive: false, pid: 932, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 120000 }, 2 => { action_type: "restart", delay: 300000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
126
|
-
])
|
127
|
-
allow(Win32::Service).to receive(:exists?).and_return(true)
|
128
|
-
allow(Win32::Service).to receive(:configure).and_return(Win32::Service)
|
129
|
-
allow(Chef::ReservedNames::Win32::Security).to receive(:get_account_right).and_return([])
|
130
|
-
allow(Chef::ReservedNames::Win32::Security).to receive(:add_account_right).with("LocalSystem", "SeServiceLogonRight").and_return(0)
|
131
|
-
end
|
132
|
-
|
133
|
-
after(:each) do
|
134
|
-
Win32::Service.send(:remove_const, "AUTO_START") if defined?(Win32::Service::AUTO_START)
|
135
|
-
Win32::Service.send(:remove_const, "DEMAND_START") if defined?(Win32::Service::DEMAND_START)
|
136
|
-
Win32::Service.send(:remove_const, "DISABLED") if defined?(Win32::Service::DISABLED)
|
137
|
-
end
|
138
|
-
|
139
|
-
it "sets the current resources service name to the new resources service name" do
|
140
|
-
provider.load_current_resource
|
141
|
-
expect(provider.current_resource.service_name).to eq(chef_service_name)
|
142
|
-
end
|
143
|
-
|
144
|
-
it "returns the current resource" do
|
145
|
-
expect(provider.load_current_resource).to equal(provider.current_resource)
|
146
|
-
end
|
147
|
-
|
148
|
-
it "sets the current resources start type" do
|
149
|
-
provider.load_current_resource
|
150
|
-
expect(provider.current_resource.enabled).to be_truthy
|
151
|
-
end
|
152
|
-
|
153
|
-
context "service does not exist" do
|
154
|
-
before do
|
155
|
-
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(false)
|
156
|
-
end
|
157
|
-
|
158
|
-
%w{running enabled startup_type error_control binary_path_name
|
159
|
-
load_order_group dependencies run_as_user display_name }.each do |prop|
|
160
|
-
it "does not set #{prop}" do
|
161
|
-
expect(provider.current_resource.running).to be_nil
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
context "service exists" do
|
167
|
-
before do
|
168
|
-
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(true)
|
169
|
-
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
170
|
-
double("Struct::ServiceConfigInfo",
|
171
|
-
service_type: "share process",
|
172
|
-
start_type: "demand start",
|
173
|
-
error_control: "normal",
|
174
|
-
binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted',
|
175
|
-
load_order_group: "TDI",
|
176
|
-
tag_id: 0,
|
177
|
-
dependencies: %w{NSI Tdx Afd},
|
178
|
-
service_start_name: 'NT Authority\\LocalService',
|
179
|
-
display_name: "DHCP Client"
|
180
|
-
))
|
181
|
-
end
|
182
|
-
|
183
|
-
context "startup_type is neither :automatic or :disabled" do
|
184
|
-
before do
|
185
|
-
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
186
|
-
double("Struct::ServiceConfigInfo",
|
187
|
-
service_type: "share process",
|
188
|
-
start_type: "demand start",
|
189
|
-
error_control: "normal",
|
190
|
-
binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted',
|
191
|
-
load_order_group: "TDI",
|
192
|
-
tag_id: 0,
|
193
|
-
dependencies: %w{NSI Tdx Afd},
|
194
|
-
service_start_name: 'NT Authority\\LocalService',
|
195
|
-
display_name: "DHCP Client"
|
196
|
-
))
|
197
|
-
end
|
198
|
-
|
199
|
-
it "does not set the current resources enabled" do
|
200
|
-
provider.load_current_resource
|
201
|
-
expect(provider.current_resource.enabled).to be_nil
|
202
|
-
end
|
203
|
-
end
|
204
|
-
|
205
|
-
it "sets the current resources running to true if it's running" do
|
206
|
-
allow(provider).to receive(:current_state).and_return("running")
|
207
|
-
provider.load_current_resource
|
208
|
-
expect(provider.current_resource.running).to be true
|
209
|
-
end
|
210
|
-
|
211
|
-
it "sets the current resources running to false if it's in any other state" do
|
212
|
-
allow(provider).to receive(:current_state).and_return("other state")
|
213
|
-
provider.load_current_resource
|
214
|
-
expect(provider.current_resource.running).to be false
|
215
|
-
end
|
216
|
-
|
217
|
-
it "sets startup_type" do
|
218
|
-
expect(provider.current_resource.startup_type).to be_truthy
|
219
|
-
end
|
220
|
-
|
221
|
-
it "sets error_control" do
|
222
|
-
provider.load_current_resource
|
223
|
-
expect(provider.current_resource.error_control).to be_truthy
|
224
|
-
end
|
225
|
-
|
226
|
-
it "sets binary_path_name" do
|
227
|
-
provider.load_current_resource
|
228
|
-
expect(provider.current_resource.binary_path_name).to be_truthy
|
229
|
-
end
|
230
|
-
|
231
|
-
it "sets load_order_group" do
|
232
|
-
provider.load_current_resource
|
233
|
-
expect(provider.current_resource.load_order_group).to be_truthy
|
234
|
-
end
|
235
|
-
|
236
|
-
it "sets dependencies" do
|
237
|
-
provider.load_current_resource
|
238
|
-
expect(provider.current_resource.dependencies).to be_truthy
|
239
|
-
end
|
240
|
-
|
241
|
-
it "sets run_as_user" do
|
242
|
-
provider.load_current_resource
|
243
|
-
expect(provider.current_resource.run_as_user).to be_truthy
|
244
|
-
end
|
245
|
-
|
246
|
-
it "sets display_name" do
|
247
|
-
provider.load_current_resource
|
248
|
-
expect(provider.current_resource.display_name).to be_truthy
|
249
|
-
end
|
250
|
-
|
251
|
-
it "sets delayed start to true if delayed start is enabled" do
|
252
|
-
allow(chef_service_info).to receive(:delayed_start).and_return(1)
|
253
|
-
provider.load_current_resource
|
254
|
-
expect(provider.current_resource.delayed_start).to be true
|
255
|
-
end
|
256
|
-
|
257
|
-
it "sets delayed start to false if delayed start is disabled" do
|
258
|
-
allow(chef_service_info).to receive(:delayed_start).and_return(0)
|
259
|
-
provider.load_current_resource
|
260
|
-
expect(provider.current_resource.delayed_start).to be false
|
261
|
-
end
|
262
|
-
end
|
263
|
-
|
264
|
-
describe Chef::Provider::Service::Windows, "action_create" do
|
265
|
-
before do
|
266
|
-
provider.new_resource.binary_path_name = chef_service_binary_path_name
|
267
|
-
end
|
268
|
-
|
269
|
-
context "service exists" do
|
270
|
-
before do
|
271
|
-
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(true)
|
272
|
-
end
|
273
|
-
|
274
|
-
it "logs debug message" do
|
275
|
-
expect(logger).to receive(:trace).with("windows_service[#{chef_service_name}] already exists - nothing to do")
|
276
|
-
provider.action_create
|
277
|
-
end
|
278
|
-
|
279
|
-
it "does not converge" do
|
280
|
-
provider.action_create
|
281
|
-
expect(provider.resource_updated?).to be false
|
282
|
-
end
|
283
|
-
|
284
|
-
it "does not create service" do
|
285
|
-
expect(Win32::Service).to_not receive(:new)
|
286
|
-
provider.action_create
|
287
|
-
end
|
288
|
-
|
289
|
-
it "does not call converge_delayed_start" do
|
290
|
-
expect(provider).to_not receive(:converge_delayed_start)
|
291
|
-
provider.action_create
|
292
|
-
end
|
293
|
-
end
|
294
|
-
|
295
|
-
context "service does not exist" do
|
296
|
-
before do
|
297
|
-
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(false)
|
298
|
-
allow(Win32::Service).to receive(:new).with(anything).and_return(true)
|
299
|
-
end
|
300
|
-
|
301
|
-
it "converges resource" do
|
302
|
-
provider.action_create
|
303
|
-
expect(provider.resource_updated?).to be true
|
304
|
-
end
|
305
|
-
|
306
|
-
it "creates service" do
|
307
|
-
expect(Win32::Service).to receive(:new)
|
308
|
-
provider.action_create
|
309
|
-
end
|
310
|
-
|
311
|
-
it "creates service with correct configuration" do
|
312
|
-
expect(Win32::Service).to receive(:new).with(
|
313
|
-
service_name: chef_service_name,
|
314
|
-
service_type: 16,
|
315
|
-
start_type: 2,
|
316
|
-
error_control: 1,
|
317
|
-
binary_path_name: chef_service_binary_path_name,
|
318
|
-
service_start_name: "LocalSystem",
|
319
|
-
desired_access: 983551
|
320
|
-
)
|
321
|
-
provider.action_create
|
322
|
-
end
|
323
|
-
|
324
|
-
it "calls converge_delayed_start" do
|
325
|
-
expect(provider).to receive(:converge_delayed_start)
|
326
|
-
provider.action_create
|
327
|
-
end
|
328
|
-
end
|
329
|
-
end
|
330
|
-
|
331
|
-
describe Chef::Provider::Service::Windows, "action_delete" do
|
332
|
-
context "service exists" do
|
333
|
-
before do
|
334
|
-
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(true)
|
335
|
-
allow(Win32::Service).to receive(:delete).with(chef_service_name).and_return(true)
|
336
|
-
end
|
337
|
-
|
338
|
-
it "converges resource" do
|
339
|
-
provider.action_delete
|
340
|
-
expect(provider.resource_updated?).to be true
|
341
|
-
end
|
342
|
-
|
343
|
-
it "deletes service" do
|
344
|
-
expect(Win32::Service).to receive(:delete).with(chef_service_name)
|
345
|
-
provider.action_delete
|
346
|
-
end
|
347
|
-
end
|
348
|
-
|
349
|
-
context "service does not exist" do
|
350
|
-
before do
|
351
|
-
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(false)
|
352
|
-
end
|
353
|
-
|
354
|
-
it "logs debug message" do
|
355
|
-
expect(logger).to receive(:trace).with("windows_service[#{chef_service_name}] does not exist - nothing to do")
|
356
|
-
provider.action_delete
|
357
|
-
end
|
358
|
-
|
359
|
-
it "does not converge" do
|
360
|
-
provider.action_delete
|
361
|
-
expect(provider.resource_updated?).to be false
|
362
|
-
end
|
363
|
-
|
364
|
-
it "does not delete service" do
|
365
|
-
expect(Win32::Service).to_not receive(:delete)
|
366
|
-
provider.action_delete
|
367
|
-
end
|
368
|
-
end
|
369
|
-
end
|
370
|
-
|
371
|
-
describe Chef::Provider::Service::Windows, "action_configure" do
|
372
|
-
context "service exists" do
|
373
|
-
before do
|
374
|
-
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(true)
|
375
|
-
allow(Win32::Service).to receive(:configure).with(anything).and_return(true)
|
376
|
-
end
|
377
|
-
|
378
|
-
it "works around #6300 if run_as_user is default" do
|
379
|
-
new_resource.run_as_user = new_resource.class.properties[:run_as_user].default
|
380
|
-
expect(provider.new_resource).to receive(:run_as_user=)
|
381
|
-
.with(new_resource.class.properties[:run_as_user].default)
|
382
|
-
provider.action_configure
|
383
|
-
end
|
384
|
-
|
385
|
-
# properties that are Strings
|
386
|
-
%i{binary_path_name load_order_group dependencies run_as_user
|
387
|
-
display_name description}.each do |attr|
|
388
|
-
it "configures service if #{attr} has changed" do
|
389
|
-
provider.current_resource.send("#{attr}=", "old value")
|
390
|
-
provider.new_resource.send("#{attr}=", "new value")
|
391
|
-
|
392
|
-
expect(Win32::Service).to receive(:configure)
|
393
|
-
provider.action_configure
|
394
|
-
end
|
395
|
-
end
|
396
|
-
|
397
|
-
# properties that are Integers
|
398
|
-
%i{service_type error_control}.each do |attr|
|
399
|
-
it "configures service if #{attr} has changed" do
|
400
|
-
provider.current_resource.send("#{attr}=", 1)
|
401
|
-
provider.new_resource.send("#{attr}=", 2)
|
402
|
-
|
403
|
-
expect(Win32::Service).to receive(:configure)
|
404
|
-
provider.action_configure
|
405
|
-
end
|
406
|
-
end
|
407
|
-
|
408
|
-
it "configures service if startup_type has changed" do
|
409
|
-
provider.current_resource.startup_type = :automatic
|
410
|
-
provider.new_resource.startup_type = :manual
|
411
|
-
|
412
|
-
expect(Win32::Service).to receive(:configure)
|
413
|
-
provider.action_configure
|
414
|
-
end
|
415
|
-
|
416
|
-
it "calls converge_delayed_start" do
|
417
|
-
expect(provider).to receive(:converge_delayed_start)
|
418
|
-
provider.action_configure
|
419
|
-
end
|
420
|
-
end
|
421
|
-
|
422
|
-
context "service does not exist" do
|
423
|
-
before do
|
424
|
-
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(false)
|
425
|
-
end
|
426
|
-
|
427
|
-
it "logs warning" do
|
428
|
-
expect(logger).to receive(:warn)
|
429
|
-
.with("windows_service[#{chef_service_name}] does not exist. Maybe you need to prepend action :create")
|
430
|
-
provider.action_configure
|
431
|
-
end
|
432
|
-
|
433
|
-
it "does not converge" do
|
434
|
-
provider.action_configure
|
435
|
-
expect(provider.resource_updated?).to be false
|
436
|
-
end
|
437
|
-
|
438
|
-
it "does not convigure service" do
|
439
|
-
expect(Win32::Service).to_not receive(:configure)
|
440
|
-
provider.action_configure
|
441
|
-
end
|
442
|
-
|
443
|
-
it "does not call converge_delayed_start" do
|
444
|
-
expect(provider).to_not receive(:converge_delayed_start)
|
445
|
-
provider.action_configure
|
446
|
-
end
|
447
|
-
end
|
448
|
-
end
|
449
|
-
|
450
|
-
describe Chef::Provider::Service::Windows, "converge_delayed_start" do
|
451
|
-
before do
|
452
|
-
allow(Win32::Service).to receive(:configure).and_return(true)
|
453
|
-
end
|
454
|
-
|
455
|
-
it "works around #6300 if delayed_start is default" do
|
456
|
-
new_resource.delayed_start = new_resource.class.properties[:delayed_start].default
|
457
|
-
expect(provider.new_resource).to receive(:delayed_start=)
|
458
|
-
.with(new_resource.class.properties[:delayed_start].default)
|
459
|
-
provider.send(:converge_delayed_start)
|
460
|
-
end
|
461
|
-
|
462
|
-
context "delayed start needs to be updated" do
|
463
|
-
before do
|
464
|
-
provider.current_resource.delayed_start = false
|
465
|
-
provider.new_resource.delayed_start = true
|
466
|
-
end
|
467
|
-
|
468
|
-
it "configures delayed start" do
|
469
|
-
expect(Win32::Service).to receive(:configure)
|
470
|
-
provider.send(:converge_delayed_start)
|
471
|
-
end
|
472
|
-
|
473
|
-
it "configures delayed start with correct params" do
|
474
|
-
expect(Win32::Service).to receive(:configure).with(service_name: chef_service_name, delayed_start: 1)
|
475
|
-
provider.send(:converge_delayed_start)
|
476
|
-
end
|
477
|
-
|
478
|
-
it "converges resource" do
|
479
|
-
provider.send(:converge_delayed_start)
|
480
|
-
expect(provider.resource_updated?).to be true
|
481
|
-
end
|
482
|
-
end
|
483
|
-
|
484
|
-
context "delayed start does not need to be updated" do
|
485
|
-
before do
|
486
|
-
provider.current_resource.delayed_start = false
|
487
|
-
provider.new_resource.delayed_start = false
|
488
|
-
end
|
489
|
-
|
490
|
-
it "does not configure delayed start" do
|
491
|
-
expect(Win32::Service).to_not receive(:configure)
|
492
|
-
provider.send(:converge_delayed_start)
|
493
|
-
end
|
494
|
-
|
495
|
-
it "does not converge" do
|
496
|
-
provider.send(:converge_delayed_start)
|
497
|
-
expect(provider.resource_updated?).to be false
|
498
|
-
end
|
499
|
-
end
|
500
|
-
end
|
501
|
-
|
502
|
-
describe Chef::Provider::Service::Windows, "start_service" do
|
503
|
-
before(:each) do
|
504
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
505
|
-
double("StatusStruct", current_state: "stopped"),
|
506
|
-
double("StatusStruct", current_state: "running"))
|
507
|
-
end
|
508
|
-
|
509
|
-
context "run_as_user user is specified" do
|
510
|
-
let(:run_as_user) { provider.new_resource.class.properties[:run_as_user].default }
|
511
|
-
|
512
|
-
before do
|
513
|
-
provider.new_resource.run_as_user run_as_user
|
514
|
-
end
|
515
|
-
|
516
|
-
it "configures service run_as_user and run_as_password" do
|
517
|
-
expect(provider).to receive(:configure_service_run_as_properties).and_call_original
|
518
|
-
expect(Win32::Service).to receive(:configure)
|
519
|
-
provider.start_service
|
520
|
-
end
|
521
|
-
end
|
522
|
-
|
523
|
-
context "run_as_user user is not specified" do
|
524
|
-
before do
|
525
|
-
expect(provider.new_resource.property_is_set?(:run_as_user)).to be false
|
526
|
-
end
|
527
|
-
|
528
|
-
it "does not configure service run_as_user and run_as_password" do
|
529
|
-
expect(Win32::Service).not_to receive(:configure)
|
530
|
-
provider.start_service
|
531
|
-
end
|
532
|
-
end
|
533
|
-
|
534
|
-
it "calls the start command if one is specified" do
|
535
|
-
new_resource.start_command "sc start #{chef_service_name}"
|
536
|
-
expect(provider).to receive(:shell_out!).with((new_resource.start_command).to_s).and_return("Starting custom service")
|
537
|
-
provider.start_service
|
538
|
-
expect(new_resource.updated_by_last_action?).to be_truthy
|
539
|
-
end
|
540
|
-
|
541
|
-
it "uses the built-in command if no start command is specified" do
|
542
|
-
expect(Win32::Service).to receive(:start).with(new_resource.service_name)
|
543
|
-
provider.start_service
|
544
|
-
expect(new_resource.updated_by_last_action?).to be_truthy
|
545
|
-
end
|
546
|
-
|
547
|
-
it "does nothing if the service does not exist" do
|
548
|
-
allow(Win32::Service).to receive(:exists?).with(new_resource.service_name).and_return(false)
|
549
|
-
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
550
|
-
provider.start_service
|
551
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
552
|
-
end
|
553
|
-
|
554
|
-
it "does nothing if the service is running" do
|
555
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
556
|
-
double("StatusStruct", current_state: "running"))
|
557
|
-
provider.load_current_resource
|
558
|
-
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
559
|
-
provider.start_service
|
560
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
561
|
-
end
|
562
|
-
|
563
|
-
it "raises an error if the service is paused" do
|
564
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
565
|
-
double("StatusStruct", current_state: "paused"))
|
566
|
-
provider.load_current_resource
|
567
|
-
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
568
|
-
expect { provider.start_service }.to raise_error( Chef::Exceptions::Service )
|
569
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
570
|
-
end
|
571
|
-
|
572
|
-
it "waits and continues if the service is in start_pending" do
|
573
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
574
|
-
double("StatusStruct", current_state: "start pending"),
|
575
|
-
double("StatusStruct", current_state: "start pending"),
|
576
|
-
double("StatusStruct", current_state: "running"))
|
577
|
-
provider.load_current_resource
|
578
|
-
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
579
|
-
provider.start_service
|
580
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
581
|
-
end
|
582
|
-
|
583
|
-
it "fails if the service is in stop_pending" do
|
584
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
585
|
-
double("StatusStruct", current_state: "stop pending"))
|
586
|
-
provider.load_current_resource
|
587
|
-
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
588
|
-
expect { provider.start_service }.to raise_error( Chef::Exceptions::Service )
|
589
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
590
|
-
end
|
591
|
-
|
592
|
-
describe "running as a different account" do
|
593
|
-
before do
|
594
|
-
new_resource.run_as_user(".\\wallace")
|
595
|
-
new_resource.run_as_password("Wensleydale")
|
596
|
-
end
|
597
|
-
|
598
|
-
it "calls #grant_service_logon if the :run_as_user and :run_as_password properties are present" do
|
599
|
-
expect(Win32::Service).to receive(:start)
|
600
|
-
expect(provider).to receive(:grant_service_logon).and_return(true)
|
601
|
-
provider.start_service
|
602
|
-
end
|
603
|
-
|
604
|
-
it "does not grant user SeServiceLogonRight if it already has it" do
|
605
|
-
expect(Win32::Service).to receive(:start)
|
606
|
-
expect(Chef::ReservedNames::Win32::Security).to receive(:get_account_right).with("wallace").and_return([service_right])
|
607
|
-
expect(Chef::ReservedNames::Win32::Security).not_to receive(:add_account_right).with("wallace", service_right)
|
608
|
-
provider.start_service
|
609
|
-
end
|
610
|
-
|
611
|
-
it "skips the rights check for LocalSystem" do
|
612
|
-
new_resource.run_as_user("LocalSystem")
|
613
|
-
expect(Win32::Service).to receive(:start)
|
614
|
-
expect(Chef::ReservedNames::Win32::Security).not_to receive(:get_account_right)
|
615
|
-
expect(Chef::ReservedNames::Win32::Security).not_to receive(:add_account_right)
|
616
|
-
provider.start_service
|
617
|
-
end
|
618
|
-
end
|
619
|
-
end
|
620
|
-
|
621
|
-
describe Chef::Provider::Service::Windows, "stop_service" do
|
622
|
-
|
623
|
-
before(:each) do
|
624
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
625
|
-
double("StatusStruct", current_state: "running"),
|
626
|
-
double("StatusStruct", current_state: "stopped"))
|
627
|
-
end
|
628
|
-
|
629
|
-
it "calls the stop command if one is specified" do
|
630
|
-
new_resource.stop_command "sc stop #{chef_service_name}"
|
631
|
-
expect(provider).to receive(:shell_out!).with((new_resource.stop_command).to_s).and_return("Stopping custom service")
|
632
|
-
provider.stop_service
|
633
|
-
expect(new_resource.updated_by_last_action?).to be_truthy
|
634
|
-
end
|
635
|
-
|
636
|
-
it "uses the built-in command if no stop command is specified" do
|
637
|
-
expect(Win32::Service).to receive(:stop).with(new_resource.service_name)
|
638
|
-
provider.stop_service
|
639
|
-
expect(new_resource.updated_by_last_action?).to be_truthy
|
640
|
-
end
|
641
|
-
|
642
|
-
it "does nothing if the service does not exist" do
|
643
|
-
allow(Win32::Service).to receive(:exists?).with(new_resource.service_name).and_return(false)
|
644
|
-
expect(Win32::Service).not_to receive(:stop).with(new_resource.service_name)
|
645
|
-
provider.stop_service
|
646
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
647
|
-
end
|
648
|
-
|
649
|
-
it "does nothing if the service is stopped" do
|
650
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
651
|
-
double("StatusStruct", current_state: "stopped"))
|
652
|
-
provider.load_current_resource
|
653
|
-
expect(Win32::Service).not_to receive(:stop).with(new_resource.service_name)
|
654
|
-
provider.stop_service
|
655
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
656
|
-
end
|
657
|
-
|
658
|
-
it "raises an error if the service is paused" do
|
659
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
660
|
-
double("StatusStruct", current_state: "paused"))
|
661
|
-
provider.load_current_resource
|
662
|
-
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
663
|
-
expect { provider.stop_service }.to raise_error( Chef::Exceptions::Service )
|
664
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
665
|
-
end
|
666
|
-
|
667
|
-
it "waits and continue if the service is in stop_pending" do
|
668
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
669
|
-
double("StatusStruct", current_state: "stop pending"),
|
670
|
-
double("StatusStruct", current_state: "stop pending"),
|
671
|
-
double("StatusStruct", current_state: "stopped"))
|
672
|
-
provider.load_current_resource
|
673
|
-
expect(Win32::Service).not_to receive(:stop).with(new_resource.service_name)
|
674
|
-
provider.stop_service
|
675
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
676
|
-
end
|
677
|
-
|
678
|
-
it "fails if the service is in start_pending" do
|
679
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
680
|
-
double("StatusStruct", current_state: "start pending"))
|
681
|
-
provider.load_current_resource
|
682
|
-
expect(Win32::Service).not_to receive(:stop).with(new_resource.service_name)
|
683
|
-
expect { provider.stop_service }.to raise_error( Chef::Exceptions::Service )
|
684
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
685
|
-
end
|
686
|
-
|
687
|
-
it "passes custom timeout to the stop command if provided" do
|
688
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
689
|
-
double("StatusStruct", current_state: "running"))
|
690
|
-
new_resource.timeout 1
|
691
|
-
expect(Win32::Service).to receive(:stop).with(new_resource.service_name)
|
692
|
-
Timeout.timeout(2) do
|
693
|
-
expect { provider.stop_service }.to raise_error(Timeout::Error)
|
694
|
-
end
|
695
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
696
|
-
end
|
697
|
-
|
698
|
-
end
|
699
|
-
|
700
|
-
describe Chef::Provider::Service::Windows, "restart_service" do
|
701
|
-
|
702
|
-
it "calls the restart command if one is specified" do
|
703
|
-
new_resource.restart_command "sc restart"
|
704
|
-
expect(provider).to receive(:shell_out!).with((new_resource.restart_command).to_s)
|
705
|
-
provider.restart_service
|
706
|
-
expect(new_resource.updated_by_last_action?).to be_truthy
|
707
|
-
end
|
708
|
-
|
709
|
-
it "stops then starts the service if it is running" do
|
710
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
711
|
-
double("StatusStruct", current_state: "running"),
|
712
|
-
double("StatusStruct", current_state: "stopped"),
|
713
|
-
double("StatusStruct", current_state: "stopped"),
|
714
|
-
double("StatusStruct", current_state: "running"))
|
715
|
-
expect(Win32::Service).to receive(:stop).with(new_resource.service_name)
|
716
|
-
expect(Win32::Service).to receive(:start).with(new_resource.service_name)
|
717
|
-
provider.restart_service
|
718
|
-
expect(new_resource.updated_by_last_action?).to be_truthy
|
719
|
-
end
|
720
|
-
|
721
|
-
it "just starts the service if it is stopped" do
|
722
|
-
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
723
|
-
double("StatusStruct", current_state: "stopped"),
|
724
|
-
double("StatusStruct", current_state: "stopped"),
|
725
|
-
double("StatusStruct", current_state: "running"))
|
726
|
-
expect(Win32::Service).to receive(:start).with(new_resource.service_name)
|
727
|
-
provider.restart_service
|
728
|
-
expect(new_resource.updated_by_last_action?).to be_truthy
|
729
|
-
end
|
730
|
-
|
731
|
-
it "does nothing if the service does not exist" do
|
732
|
-
allow(Win32::Service).to receive(:exists?).with(new_resource.service_name).and_return(false)
|
733
|
-
expect(Win32::Service).not_to receive(:stop).with(new_resource.service_name)
|
734
|
-
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
735
|
-
provider.restart_service
|
736
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
737
|
-
end
|
738
|
-
|
739
|
-
end
|
740
|
-
|
741
|
-
describe Chef::Provider::Service::Windows, "enable_service" do
|
742
|
-
before(:each) do
|
743
|
-
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
744
|
-
double("ConfigStruct", start_type: "disabled"))
|
745
|
-
end
|
746
|
-
|
747
|
-
it "enables service" do
|
748
|
-
expect(Win32::Service).to receive(:configure).with(service_name: new_resource.service_name, start_type: Win32::Service::AUTO_START)
|
749
|
-
provider.enable_service
|
750
|
-
expect(new_resource.updated_by_last_action?).to be_truthy
|
751
|
-
end
|
752
|
-
|
753
|
-
it "does nothing if the service does not exist" do
|
754
|
-
allow(Win32::Service).to receive(:exists?).with(new_resource.service_name).and_return(false)
|
755
|
-
expect(Win32::Service).not_to receive(:configure)
|
756
|
-
provider.enable_service
|
757
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
758
|
-
end
|
759
|
-
end
|
760
|
-
|
761
|
-
describe Chef::Provider::Service::Windows, "action_enable" do
|
762
|
-
it "does nothing if the service is enabled" do
|
763
|
-
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
764
|
-
double("ConfigStruct", start_type: "auto start"))
|
765
|
-
expect(provider).not_to receive(:enable_service)
|
766
|
-
provider.action_enable
|
767
|
-
end
|
768
|
-
|
769
|
-
it "enables the service if it is not set to automatic start" do
|
770
|
-
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
771
|
-
double("ConfigStruct", start_type: "disabled"))
|
772
|
-
expect(provider).to receive(:enable_service)
|
773
|
-
provider.action_enable
|
774
|
-
end
|
775
|
-
end
|
776
|
-
|
777
|
-
describe Chef::Provider::Service::Windows, "action_disable" do
|
778
|
-
it "does nothing if the service is disabled" do
|
779
|
-
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
780
|
-
double("ConfigStruct", start_type: "disabled"))
|
781
|
-
expect(provider).not_to receive(:disable_service)
|
782
|
-
provider.action_disable
|
783
|
-
end
|
784
|
-
|
785
|
-
it "disables the service if it is not set to disabled" do
|
786
|
-
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
787
|
-
double("ConfigStruct", start_type: "auto start"))
|
788
|
-
expect(provider).to receive(:disable_service)
|
789
|
-
provider.action_disable
|
790
|
-
end
|
791
|
-
end
|
792
|
-
|
793
|
-
describe Chef::Provider::Service::Windows, "disable_service" do
|
794
|
-
before(:each) do
|
795
|
-
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
796
|
-
double("ConfigStruct", start_type: "auto start"))
|
797
|
-
end
|
798
|
-
|
799
|
-
it "disables service" do
|
800
|
-
expect(Win32::Service).to receive(:configure)
|
801
|
-
provider.disable_service
|
802
|
-
expect(new_resource.updated_by_last_action?).to be_truthy
|
803
|
-
end
|
804
|
-
|
805
|
-
it "does nothing if the service does not exist" do
|
806
|
-
allow(Win32::Service).to receive(:exists?).with(new_resource.service_name).and_return(false)
|
807
|
-
expect(Win32::Service).not_to receive(:configure)
|
808
|
-
provider.disable_service
|
809
|
-
expect(new_resource.updated_by_last_action?).to be_falsey
|
810
|
-
end
|
811
|
-
end
|
812
|
-
|
813
|
-
describe Chef::Provider::Service::Windows, "action_configure_startup" do
|
814
|
-
%i{automatic manual disabled}.each do |type|
|
815
|
-
it "sets the startup type to #{type} if it is something else" do
|
816
|
-
new_resource.startup_type(type)
|
817
|
-
allow(provider).to receive(:current_startup_type).and_return(:fire)
|
818
|
-
expect(provider).to receive(:set_startup_type).with(type)
|
819
|
-
provider.action_configure_startup
|
820
|
-
end
|
821
|
-
|
822
|
-
it "leaves the startup type as #{type} if it is already set" do
|
823
|
-
new_resource.startup_type(type)
|
824
|
-
allow(provider).to receive(:current_startup_type).and_return(type)
|
825
|
-
expect(provider).not_to receive(:set_startup_type).with(type)
|
826
|
-
provider.action_configure_startup
|
827
|
-
end
|
828
|
-
end
|
829
|
-
|
830
|
-
it "calls converge_delayed_start" do
|
831
|
-
expect(provider).to receive(:converge_delayed_start)
|
832
|
-
provider.action_configure_startup
|
833
|
-
end
|
834
|
-
end
|
835
|
-
|
836
|
-
describe Chef::Provider::Service::Windows, "set_start_type" do
|
837
|
-
it "when called with :automatic it calls Win32::Service#configure with Win32::Service::AUTO_START" do
|
838
|
-
expect(Win32::Service).to receive(:configure).with(service_name: new_resource.service_name, start_type: Win32::Service::AUTO_START)
|
839
|
-
provider.send(:set_startup_type, :automatic)
|
840
|
-
end
|
841
|
-
|
842
|
-
it "when called with :manual it calls Win32::Service#configure with Win32::Service::DEMAND_START" do
|
843
|
-
expect(Win32::Service).to receive(:configure).with(service_name: new_resource.service_name, start_type: Win32::Service::DEMAND_START)
|
844
|
-
provider.send(:set_startup_type, :manual)
|
845
|
-
end
|
846
|
-
|
847
|
-
it "when called with :disabled it calls Win32::Service#configure with Win32::Service::DISABLED" do
|
848
|
-
expect(Win32::Service).to receive(:configure).with(service_name: new_resource.service_name, start_type: Win32::Service::DISABLED)
|
849
|
-
provider.send(:set_startup_type, :disabled)
|
850
|
-
end
|
851
|
-
|
852
|
-
it "raises an exception when given an unknown start type" do
|
853
|
-
expect { provider.send(:set_startup_type, :fire_truck) }.to raise_error(Chef::Exceptions::ConfigurationError)
|
854
|
-
end
|
855
|
-
end
|
856
|
-
|
857
|
-
shared_context "testing private methods" do
|
858
|
-
|
859
|
-
let(:private_methods) do
|
860
|
-
described_class.private_instance_methods
|
861
|
-
end
|
862
|
-
|
863
|
-
before do
|
864
|
-
described_class.send(:public, *private_methods)
|
865
|
-
end
|
866
|
-
|
867
|
-
after do
|
868
|
-
described_class.send(:private, *private_methods)
|
869
|
-
end
|
870
|
-
end
|
871
|
-
|
872
|
-
describe "grant_service_logon" do
|
873
|
-
include_context "testing private methods"
|
874
|
-
|
875
|
-
let(:username) { "unit_test_user" }
|
876
|
-
|
877
|
-
it "calls win32 api to grant user SeServiceLogonRight" do
|
878
|
-
expect(Chef::ReservedNames::Win32::Security).to receive(:add_account_right).with(username, service_right)
|
879
|
-
expect(provider.grant_service_logon(username)).to equal true
|
880
|
-
end
|
881
|
-
|
882
|
-
it "strips '.\' from user name when sending to win32 api" do
|
883
|
-
expect(Chef::ReservedNames::Win32::Security).to receive(:add_account_right).with(username, service_right)
|
884
|
-
expect(provider.grant_service_logon(".\\#{username}")).to equal true
|
885
|
-
end
|
886
|
-
|
887
|
-
it "raises an exception when the grant fails" do
|
888
|
-
expect(Chef::ReservedNames::Win32::Security).to receive(:add_account_right).and_raise(Chef::Exceptions::Win32APIError, "barf")
|
889
|
-
expect { provider.grant_service_logon(username) }.to raise_error(Chef::Exceptions::Service)
|
890
|
-
end
|
891
|
-
end
|
892
|
-
|
893
|
-
describe "cleaning usernames" do
|
894
|
-
include_context "testing private methods"
|
895
|
-
|
896
|
-
it "correctly reformats usernames to create valid filenames" do
|
897
|
-
expect(provider.clean_username_for_path("\\\\problem username/oink.txt")).to eq("_problem_username_oink_txt")
|
898
|
-
expect(provider.clean_username_for_path("boring_username")).to eq("boring_username")
|
899
|
-
end
|
900
|
-
|
901
|
-
it "correctly reformats usernames for the policy file" do
|
902
|
-
expect(provider.canonicalize_username(".\\maryann")).to eq("maryann")
|
903
|
-
expect(provider.canonicalize_username("maryann")).to eq("maryann")
|
904
|
-
|
905
|
-
expect(provider.canonicalize_username("\\\\maryann")).to eq("maryann")
|
906
|
-
expect(provider.canonicalize_username("mydomain\\\\maryann")).to eq("mydomain\\\\maryann")
|
907
|
-
expect(provider.canonicalize_username("\\\\mydomain\\\\maryann")).to eq("mydomain\\\\maryann")
|
908
|
-
end
|
909
|
-
end
|
910
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Nuo Yan <nuo@chef.io>
|
3
|
+
# Author:: Seth Chisamore <schisamo@chef.io>
|
4
|
+
# Copyright:: Copyright 2010-2016, Chef Software 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
|
+
|
22
|
+
describe Chef::Provider::Service::Windows, "load_current_resource", :windows_only do
|
23
|
+
include_context "Win32"
|
24
|
+
|
25
|
+
let(:logger) { double("Mixlib::Log::Child").as_null_object }
|
26
|
+
|
27
|
+
let(:chef_service_name) { "chef-client" }
|
28
|
+
let(:new_resource) { Chef::Resource::WindowsService.new(chef_service_name) }
|
29
|
+
|
30
|
+
# Actual response from Win32::Service.config_info('chef-client')
|
31
|
+
let(:chef_service_binary_path_name) do
|
32
|
+
'C:\\opscode\\chef\\embedded\\bin\\ruby.exe C:\\opscode\\chef\\bin\\chef-windows-service'
|
33
|
+
end
|
34
|
+
let(:chef_service_config_info) do
|
35
|
+
double("Struct::ServiceConfigInfo",
|
36
|
+
service_type: "own process",
|
37
|
+
start_type: "auto start",
|
38
|
+
error_control: "ignore",
|
39
|
+
binary_path_name: chef_service_binary_path_name,
|
40
|
+
load_order_group: "",
|
41
|
+
tag_id: 0,
|
42
|
+
dependencies: ["Winmgmt"],
|
43
|
+
service_start_name: "LocalSystem",
|
44
|
+
display_name: "Chef Client Service"
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
# Actual response from Win32::Service.services
|
49
|
+
let(:chef_service_info) do
|
50
|
+
double("Struct::ServiceInfo",
|
51
|
+
service_name: chef_service_name,
|
52
|
+
display_name: "Chef Client Service",
|
53
|
+
service_type: "own process",
|
54
|
+
current_state: "running",
|
55
|
+
controls_accepted: [],
|
56
|
+
win32_exit_code: 1077,
|
57
|
+
service_specific_exit_code: 0,
|
58
|
+
check_point: 0,
|
59
|
+
wait_hint: 0,
|
60
|
+
binary_path_name: chef_service_binary_path_name,
|
61
|
+
start_type: "auto start",
|
62
|
+
error_control: "ignore",
|
63
|
+
load_order_group: "",
|
64
|
+
tag_id: 0,
|
65
|
+
start_name: "LocalSystem",
|
66
|
+
dependencies: ["Winmgmt"],
|
67
|
+
description: "Runs Chef Client on regular, configurable intervals.",
|
68
|
+
interactive: false,
|
69
|
+
pid: 0,
|
70
|
+
service_flags: 0,
|
71
|
+
reset_period: 0,
|
72
|
+
reboot_message: nil,
|
73
|
+
command: nil,
|
74
|
+
num_actions: 0,
|
75
|
+
actions: nil,
|
76
|
+
delayed_start: 1
|
77
|
+
)
|
78
|
+
end
|
79
|
+
|
80
|
+
let(:provider) do
|
81
|
+
run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
|
82
|
+
allow(run_context).to receive(:logger).and_return(logger)
|
83
|
+
prvdr = Chef::Provider::Service::Windows.new(new_resource, run_context)
|
84
|
+
prvdr.current_resource = Chef::Resource::WindowsService.new("current-chef")
|
85
|
+
prvdr
|
86
|
+
end
|
87
|
+
|
88
|
+
let(:service_right) { Chef::Provider::Service::Windows::SERVICE_RIGHT }
|
89
|
+
|
90
|
+
before(:all) do
|
91
|
+
Win32::Service = Class.new
|
92
|
+
end
|
93
|
+
|
94
|
+
before(:each) do
|
95
|
+
Win32::Service::AUTO_START = 0x00000002
|
96
|
+
Win32::Service::DEMAND_START = 0x00000003
|
97
|
+
Win32::Service::DISABLED = 0x00000004
|
98
|
+
|
99
|
+
allow(Win32::Service).to receive(:start).with(any_args).and_return(Win32::Service)
|
100
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
101
|
+
double("StatusStruct", current_state: "running"))
|
102
|
+
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name)
|
103
|
+
.and_return(chef_service_config_info)
|
104
|
+
|
105
|
+
# Real response from Win32::Service.services
|
106
|
+
allow(Win32::Service).to receive(:services).and_return([
|
107
|
+
# Add chef_service_info to our stubbed response so our tests that are expecting the service to exist work
|
108
|
+
chef_service_info,
|
109
|
+
double("Struct::ServiceInfo", service_name: "ACPI", display_name: "Microsoft ACPI Driver", service_type: "kernel driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: '\\SystemRoot\\System32\\drivers\\ACPI.sys', start_type: "boot start", error_control: "critical", load_order_group: "Core", tag_id: 2, start_name: "", dependencies: [], description: "", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
110
|
+
double("Struct::ServiceInfo", service_name: "cdrom", display_name: "CD-ROM Driver", service_type: "kernel driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: '\\SystemRoot\\System32\\drivers\\cdrom.sys', start_type: "system start", error_control: "normal", load_order_group: "SCSI CDROM Class", tag_id: 3, start_name: "", dependencies: [], description: "", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
111
|
+
double("Struct::ServiceInfo", service_name: "CryptSvc", display_name: "Cryptographic Services", service_type: "share process", current_state: "running", controls_accepted: ["shutdown", "stop", "session change"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k NetworkService', start_type: "auto start", error_control: "normal", load_order_group: "", tag_id: 0, start_name: 'NT Authority\\NetworkService', dependencies: ["RpcSs"], description: "Provides three management services: Catalog Database Service, which confirms the signatures of Windows files and allows new programs to be installed; Protected Root Service, which adds and removes Trusted Root Certification Authority certificates from this computer; and Automatic Root Certificate Update Service, which retrieves root certificates from Windows Update and enable scenarios such as SSL. If this service is stopped, these management services will not function properly. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 932, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 60000 }, 2 => { action_type: "none", delay: 0 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
112
|
+
double("Struct::ServiceInfo", service_name: "DcomLaunch", display_name: "DCOM Server Process Launcher", service_type: "share process", current_state: "running", controls_accepted: ["session change"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k DcomLaunch', start_type: "auto start", error_control: "normal", load_order_group: "COM Infrastructure", tag_id: 0, start_name: "LocalSystem", dependencies: [], description: "The DCOMLAUNCH service launches COM and DCOM servers in response to object activation requests. If this service is stopped or disabled, programs using COM or DCOM will not function properly. It is strongly recommended that you have the DCOMLAUNCH service running.", interactive: false, pid: 552, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 1, actions: { 1 => { action_type: "reboot", delay: 60000 } }, delayed_start: 0),
|
113
|
+
double("Struct::ServiceInfo", service_name: "Dfsc", display_name: "DFS Namespace Client Driver", service_type: "file system driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'System32\\Drivers\\dfsc.sys', start_type: "system start", error_control: "normal", load_order_group: "Network", tag_id: 0, start_name: "", dependencies: ["Mup"], description: "Client driver for access to DFS Namespaces", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
114
|
+
double("Struct::ServiceInfo", service_name: "Dhcp", display_name: "DHCP Client", service_type: "share process", current_state: "running", controls_accepted: %w{shutdown stop}, win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted', start_type: "auto start", error_control: "normal", load_order_group: "TDI", tag_id: 0, start_name: 'NT Authority\\LocalService', dependencies: %w{NSI Tdx Afd}, description: "Registers and updates IP addresses and DNS records for this computer. If this service is stopped, this computer will not receive dynamic IP addresses and DNS updates. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 780, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 120000 }, 2 => { action_type: "restart", delay: 300000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
115
|
+
double("Struct::ServiceInfo", service_name: "EventLog", display_name: "Windows Event Log", service_type: "share process", current_state: "running", controls_accepted: %w{shutdown stop}, win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\System32\\svchost.exe -k LocalServiceNetworkRestricted', start_type: "auto start", error_control: "normal", load_order_group: "Event Log", tag_id: 0, start_name: 'NT AUTHORITY\\LocalService', dependencies: [], description: "This service manages events and event logs. It supports logging events, querying events, subscribing to events, archiving event logs, and managing event metadata. It can display events in both XML and plain text format. Stopping this service may compromise security and reliability of the system.", interactive: false, pid: 780, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 60000 }, 2 => { action_type: "restart", delay: 120000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
116
|
+
double("Struct::ServiceInfo", service_name: "EventSystem", display_name: "COM+ Event System", service_type: "share process", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalService', start_type: "auto start", error_control: "normal", load_order_group: "", tag_id: 0, start_name: 'NT AUTHORITY\\LocalService', dependencies: ["rpcss"], description: "Supports System Event Notification Service (SENS), which provides automatic distribution of events to subscribing Component Object Model (COM) components. If the service is stopped, SENS will close and will not be able to provide logon and logoff notifications. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 844, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 1000 }, 2 => { action_type: "restart", delay: 5000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
117
|
+
double("Struct::ServiceInfo", service_name: "LanmanWorkstation", display_name: "Workstation", service_type: "share process", current_state: "running", controls_accepted: ["pause continue", "stop", "power event"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\System32\\svchost.exe -k NetworkService', start_type: "auto start", error_control: "normal", load_order_group: "NetworkProvider", tag_id: 0, start_name: 'NT AUTHORITY\\NetworkService', dependencies: %w{Bowser MRxSmb20 NSI}, description: "Creates and maintains client network connections to remote servers using the SMB protocol. If this service is stopped, these connections will be unavailable. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 932, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 60000 }, 2 => { action_type: "restart", delay: 120000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
118
|
+
double("Struct::ServiceInfo", service_name: "lmhosts", display_name: "TCP/IP NetBIOS Helper", service_type: "share process", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted', start_type: "auto start", error_control: "normal", load_order_group: "TDI", tag_id: 0, start_name: 'NT AUTHORITY\\LocalService', dependencies: %w{NetBT Afd}, description: "Provides support for the NetBIOS over TCP/IP (NetBT) service and NetBIOS name resolution for clients on the network, therefore enabling users to share files, print, and log on to the network. If this service is stopped, these functions might be unavailable. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 780, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 100 }, 2 => { action_type: "restart", delay: 100 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
119
|
+
double("Struct::ServiceInfo", service_name: "MpsSvc", display_name: "Windows Firewall", service_type: "share process", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNoNetwork', start_type: "auto start", error_control: "normal", load_order_group: "NetworkProvider", tag_id: 0, start_name: 'NT Authority\\LocalService', dependencies: %w{mpsdrv bfe}, description: "Windows Firewall helps protect your computer by preventing unauthorized users from gaining access to your computer through the Internet or a network.", interactive: false, pid: 340, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 120000 }, 2 => { action_type: "restart", delay: 300000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
120
|
+
double("Struct::ServiceInfo", service_name: "mrxsmb", display_name: "SMB MiniRedirector Wrapper and Engine", service_type: "file system driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'system32\\DRIVERS\\mrxsmb.sys', start_type: "demand start", error_control: "normal", load_order_group: "Network", tag_id: 5, start_name: "", dependencies: ["rdbss"], description: "Implements the framework for the SMB filesystem redirector", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
121
|
+
double("Struct::ServiceInfo", service_name: "Ntfs", display_name: "Ntfs", service_type: "file system driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: "", start_type: "demand start", error_control: "normal", load_order_group: "Boot File System", tag_id: 0, start_name: "", dependencies: [], description: "", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
122
|
+
double("Struct::ServiceInfo", service_name: "Tcpip", display_name: "TCP/IP Protocol Driver", service_type: "kernel driver", current_state: "running", controls_accepted: ["stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: '\\SystemRoot\\System32\\drivers\\tcpip.sys', start_type: "boot start", error_control: "normal", load_order_group: "PNP_TDI", tag_id: 3, start_name: "", dependencies: [], description: "TCP/IP Protocol Driver", interactive: false, pid: 0, service_flags: 0, reset_period: 0, reboot_message: nil, command: nil, num_actions: 0, actions: nil, delayed_start: 0),
|
123
|
+
double("Struct::ServiceInfo", service_name: "W32Time", display_name: "Windows Time", service_type: "share process", current_state: "running", controls_accepted: ["netbind change", "param change", "shutdown", "stop", "hardware profile change", "power event"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalService', start_type: "demand start", error_control: "normal", load_order_group: "", tag_id: 0, start_name: 'NT AUTHORITY\\LocalService', dependencies: [], description: "Maintains date and time synchronization on all clients and servers in the network. If this service is stopped, date and time synchronization will be unavailable. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 844, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 60000 }, 2 => { action_type: "restart", delay: 120000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
124
|
+
double("Struct::ServiceInfo", service_name: "Winmgmt", display_name: "Windows Management Instrumentation", service_type: "share process", current_state: "running", controls_accepted: ["pause continue", "shutdown", "stop"], win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k netsvcs', start_type: "auto start", error_control: "ignore", load_order_group: "", tag_id: 0, start_name: "localSystem", dependencies: ["RPCSS"], description: "Provides a common interface and object model to access management information about operating system, devices, applications and services. If this service is stopped, most Windows-based software will not function properly. If this service is disabled, any services that explicitly depend on it will fail to start.", interactive: false, pid: 812, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 120000 }, 2 => { action_type: "restart", delay: 300000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
125
|
+
double("Struct::ServiceInfo", service_name: "WinRM", display_name: "Windows Remote Management (WS-Management)", service_type: "share process", current_state: "running", controls_accepted: %w{shutdown stop}, win32_exit_code: 0, service_specific_exit_code: 0, check_point: 0, wait_hint: 0, binary_path_name: 'C:\\Windows\\System32\\svchost.exe -k NetworkService', start_type: "auto start", error_control: "normal", load_order_group: "", tag_id: 0, start_name: 'NT AUTHORITY\\NetworkService', dependencies: %w{RPCSS HTTP}, description: "Windows Remote Management (WinRM) service implements the WS-Management protocol for remote management. WS-Management is a standard web services protocol used for remote software and hardware management. The WinRM service listens on the network for WS-Management requests and processes them. The WinRM Service needs to be configured with a listener using winrm.cmd command line tool or through Group Policy in order for it to listen over the network. The WinRM service provides access to WMI data and enables event collection. Event collection and subscription to events require that the service is running. WinRM messages use HTTP and HTTPS as transports. The WinRM service does not depend on IIS but is preconfigured to share a port with IIS on the same machine. The WinRM service reserves the /wsman URL prefix. To prevent conflicts with IIS, administrators should ensure that any websites hosted on IIS do not use the /wsman URL prefix.", interactive: false, pid: 932, service_flags: 0, reset_period: 86400, reboot_message: nil, command: nil, num_actions: 3, actions: { 1 => { action_type: "restart", delay: 120000 }, 2 => { action_type: "restart", delay: 300000 }, 3 => { action_type: "none", delay: 0 } }, delayed_start: 0),
|
126
|
+
])
|
127
|
+
allow(Win32::Service).to receive(:exists?).and_return(true)
|
128
|
+
allow(Win32::Service).to receive(:configure).and_return(Win32::Service)
|
129
|
+
allow(Chef::ReservedNames::Win32::Security).to receive(:get_account_right).and_return([])
|
130
|
+
allow(Chef::ReservedNames::Win32::Security).to receive(:add_account_right).with("LocalSystem", "SeServiceLogonRight").and_return(0)
|
131
|
+
end
|
132
|
+
|
133
|
+
after(:each) do
|
134
|
+
Win32::Service.send(:remove_const, "AUTO_START") if defined?(Win32::Service::AUTO_START)
|
135
|
+
Win32::Service.send(:remove_const, "DEMAND_START") if defined?(Win32::Service::DEMAND_START)
|
136
|
+
Win32::Service.send(:remove_const, "DISABLED") if defined?(Win32::Service::DISABLED)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "sets the current resources service name to the new resources service name" do
|
140
|
+
provider.load_current_resource
|
141
|
+
expect(provider.current_resource.service_name).to eq(chef_service_name)
|
142
|
+
end
|
143
|
+
|
144
|
+
it "returns the current resource" do
|
145
|
+
expect(provider.load_current_resource).to equal(provider.current_resource)
|
146
|
+
end
|
147
|
+
|
148
|
+
it "sets the current resources start type" do
|
149
|
+
provider.load_current_resource
|
150
|
+
expect(provider.current_resource.enabled).to be_truthy
|
151
|
+
end
|
152
|
+
|
153
|
+
context "service does not exist" do
|
154
|
+
before do
|
155
|
+
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(false)
|
156
|
+
end
|
157
|
+
|
158
|
+
%w{running enabled startup_type error_control binary_path_name
|
159
|
+
load_order_group dependencies run_as_user display_name }.each do |prop|
|
160
|
+
it "does not set #{prop}" do
|
161
|
+
expect(provider.current_resource.running).to be_nil
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
context "service exists" do
|
167
|
+
before do
|
168
|
+
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(true)
|
169
|
+
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
170
|
+
double("Struct::ServiceConfigInfo",
|
171
|
+
service_type: "share process",
|
172
|
+
start_type: "demand start",
|
173
|
+
error_control: "normal",
|
174
|
+
binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted',
|
175
|
+
load_order_group: "TDI",
|
176
|
+
tag_id: 0,
|
177
|
+
dependencies: %w{NSI Tdx Afd},
|
178
|
+
service_start_name: 'NT Authority\\LocalService',
|
179
|
+
display_name: "DHCP Client"
|
180
|
+
))
|
181
|
+
end
|
182
|
+
|
183
|
+
context "startup_type is neither :automatic or :disabled" do
|
184
|
+
before do
|
185
|
+
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
186
|
+
double("Struct::ServiceConfigInfo",
|
187
|
+
service_type: "share process",
|
188
|
+
start_type: "demand start",
|
189
|
+
error_control: "normal",
|
190
|
+
binary_path_name: 'C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted',
|
191
|
+
load_order_group: "TDI",
|
192
|
+
tag_id: 0,
|
193
|
+
dependencies: %w{NSI Tdx Afd},
|
194
|
+
service_start_name: 'NT Authority\\LocalService',
|
195
|
+
display_name: "DHCP Client"
|
196
|
+
))
|
197
|
+
end
|
198
|
+
|
199
|
+
it "does not set the current resources enabled" do
|
200
|
+
provider.load_current_resource
|
201
|
+
expect(provider.current_resource.enabled).to be_nil
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
it "sets the current resources running to true if it's running" do
|
206
|
+
allow(provider).to receive(:current_state).and_return("running")
|
207
|
+
provider.load_current_resource
|
208
|
+
expect(provider.current_resource.running).to be true
|
209
|
+
end
|
210
|
+
|
211
|
+
it "sets the current resources running to false if it's in any other state" do
|
212
|
+
allow(provider).to receive(:current_state).and_return("other state")
|
213
|
+
provider.load_current_resource
|
214
|
+
expect(provider.current_resource.running).to be false
|
215
|
+
end
|
216
|
+
|
217
|
+
it "sets startup_type" do
|
218
|
+
expect(provider.current_resource.startup_type).to be_truthy
|
219
|
+
end
|
220
|
+
|
221
|
+
it "sets error_control" do
|
222
|
+
provider.load_current_resource
|
223
|
+
expect(provider.current_resource.error_control).to be_truthy
|
224
|
+
end
|
225
|
+
|
226
|
+
it "sets binary_path_name" do
|
227
|
+
provider.load_current_resource
|
228
|
+
expect(provider.current_resource.binary_path_name).to be_truthy
|
229
|
+
end
|
230
|
+
|
231
|
+
it "sets load_order_group" do
|
232
|
+
provider.load_current_resource
|
233
|
+
expect(provider.current_resource.load_order_group).to be_truthy
|
234
|
+
end
|
235
|
+
|
236
|
+
it "sets dependencies" do
|
237
|
+
provider.load_current_resource
|
238
|
+
expect(provider.current_resource.dependencies).to be_truthy
|
239
|
+
end
|
240
|
+
|
241
|
+
it "sets run_as_user" do
|
242
|
+
provider.load_current_resource
|
243
|
+
expect(provider.current_resource.run_as_user).to be_truthy
|
244
|
+
end
|
245
|
+
|
246
|
+
it "sets display_name" do
|
247
|
+
provider.load_current_resource
|
248
|
+
expect(provider.current_resource.display_name).to be_truthy
|
249
|
+
end
|
250
|
+
|
251
|
+
it "sets delayed start to true if delayed start is enabled" do
|
252
|
+
allow(chef_service_info).to receive(:delayed_start).and_return(1)
|
253
|
+
provider.load_current_resource
|
254
|
+
expect(provider.current_resource.delayed_start).to be true
|
255
|
+
end
|
256
|
+
|
257
|
+
it "sets delayed start to false if delayed start is disabled" do
|
258
|
+
allow(chef_service_info).to receive(:delayed_start).and_return(0)
|
259
|
+
provider.load_current_resource
|
260
|
+
expect(provider.current_resource.delayed_start).to be false
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
describe Chef::Provider::Service::Windows, "action_create" do
|
265
|
+
before do
|
266
|
+
provider.new_resource.binary_path_name = chef_service_binary_path_name
|
267
|
+
end
|
268
|
+
|
269
|
+
context "service exists" do
|
270
|
+
before do
|
271
|
+
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(true)
|
272
|
+
end
|
273
|
+
|
274
|
+
it "logs debug message" do
|
275
|
+
expect(logger).to receive(:trace).with("windows_service[#{chef_service_name}] already exists - nothing to do")
|
276
|
+
provider.action_create
|
277
|
+
end
|
278
|
+
|
279
|
+
it "does not converge" do
|
280
|
+
provider.action_create
|
281
|
+
expect(provider.resource_updated?).to be false
|
282
|
+
end
|
283
|
+
|
284
|
+
it "does not create service" do
|
285
|
+
expect(Win32::Service).to_not receive(:new)
|
286
|
+
provider.action_create
|
287
|
+
end
|
288
|
+
|
289
|
+
it "does not call converge_delayed_start" do
|
290
|
+
expect(provider).to_not receive(:converge_delayed_start)
|
291
|
+
provider.action_create
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
context "service does not exist" do
|
296
|
+
before do
|
297
|
+
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(false)
|
298
|
+
allow(Win32::Service).to receive(:new).with(anything).and_return(true)
|
299
|
+
end
|
300
|
+
|
301
|
+
it "converges resource" do
|
302
|
+
provider.action_create
|
303
|
+
expect(provider.resource_updated?).to be true
|
304
|
+
end
|
305
|
+
|
306
|
+
it "creates service" do
|
307
|
+
expect(Win32::Service).to receive(:new)
|
308
|
+
provider.action_create
|
309
|
+
end
|
310
|
+
|
311
|
+
it "creates service with correct configuration" do
|
312
|
+
expect(Win32::Service).to receive(:new).with(
|
313
|
+
service_name: chef_service_name,
|
314
|
+
service_type: 16,
|
315
|
+
start_type: 2,
|
316
|
+
error_control: 1,
|
317
|
+
binary_path_name: chef_service_binary_path_name,
|
318
|
+
service_start_name: "LocalSystem",
|
319
|
+
desired_access: 983551
|
320
|
+
)
|
321
|
+
provider.action_create
|
322
|
+
end
|
323
|
+
|
324
|
+
it "calls converge_delayed_start" do
|
325
|
+
expect(provider).to receive(:converge_delayed_start)
|
326
|
+
provider.action_create
|
327
|
+
end
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
331
|
+
describe Chef::Provider::Service::Windows, "action_delete" do
|
332
|
+
context "service exists" do
|
333
|
+
before do
|
334
|
+
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(true)
|
335
|
+
allow(Win32::Service).to receive(:delete).with(chef_service_name).and_return(true)
|
336
|
+
end
|
337
|
+
|
338
|
+
it "converges resource" do
|
339
|
+
provider.action_delete
|
340
|
+
expect(provider.resource_updated?).to be true
|
341
|
+
end
|
342
|
+
|
343
|
+
it "deletes service" do
|
344
|
+
expect(Win32::Service).to receive(:delete).with(chef_service_name)
|
345
|
+
provider.action_delete
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
context "service does not exist" do
|
350
|
+
before do
|
351
|
+
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(false)
|
352
|
+
end
|
353
|
+
|
354
|
+
it "logs debug message" do
|
355
|
+
expect(logger).to receive(:trace).with("windows_service[#{chef_service_name}] does not exist - nothing to do")
|
356
|
+
provider.action_delete
|
357
|
+
end
|
358
|
+
|
359
|
+
it "does not converge" do
|
360
|
+
provider.action_delete
|
361
|
+
expect(provider.resource_updated?).to be false
|
362
|
+
end
|
363
|
+
|
364
|
+
it "does not delete service" do
|
365
|
+
expect(Win32::Service).to_not receive(:delete)
|
366
|
+
provider.action_delete
|
367
|
+
end
|
368
|
+
end
|
369
|
+
end
|
370
|
+
|
371
|
+
describe Chef::Provider::Service::Windows, "action_configure" do
|
372
|
+
context "service exists" do
|
373
|
+
before do
|
374
|
+
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(true)
|
375
|
+
allow(Win32::Service).to receive(:configure).with(anything).and_return(true)
|
376
|
+
end
|
377
|
+
|
378
|
+
it "works around #6300 if run_as_user is default" do
|
379
|
+
new_resource.run_as_user = new_resource.class.properties[:run_as_user].default
|
380
|
+
expect(provider.new_resource).to receive(:run_as_user=)
|
381
|
+
.with(new_resource.class.properties[:run_as_user].default)
|
382
|
+
provider.action_configure
|
383
|
+
end
|
384
|
+
|
385
|
+
# properties that are Strings
|
386
|
+
%i{binary_path_name load_order_group dependencies run_as_user
|
387
|
+
display_name description}.each do |attr|
|
388
|
+
it "configures service if #{attr} has changed" do
|
389
|
+
provider.current_resource.send("#{attr}=", "old value")
|
390
|
+
provider.new_resource.send("#{attr}=", "new value")
|
391
|
+
|
392
|
+
expect(Win32::Service).to receive(:configure)
|
393
|
+
provider.action_configure
|
394
|
+
end
|
395
|
+
end
|
396
|
+
|
397
|
+
# properties that are Integers
|
398
|
+
%i{service_type error_control}.each do |attr|
|
399
|
+
it "configures service if #{attr} has changed" do
|
400
|
+
provider.current_resource.send("#{attr}=", 1)
|
401
|
+
provider.new_resource.send("#{attr}=", 2)
|
402
|
+
|
403
|
+
expect(Win32::Service).to receive(:configure)
|
404
|
+
provider.action_configure
|
405
|
+
end
|
406
|
+
end
|
407
|
+
|
408
|
+
it "configures service if startup_type has changed" do
|
409
|
+
provider.current_resource.startup_type = :automatic
|
410
|
+
provider.new_resource.startup_type = :manual
|
411
|
+
|
412
|
+
expect(Win32::Service).to receive(:configure)
|
413
|
+
provider.action_configure
|
414
|
+
end
|
415
|
+
|
416
|
+
it "calls converge_delayed_start" do
|
417
|
+
expect(provider).to receive(:converge_delayed_start)
|
418
|
+
provider.action_configure
|
419
|
+
end
|
420
|
+
end
|
421
|
+
|
422
|
+
context "service does not exist" do
|
423
|
+
before do
|
424
|
+
allow(Win32::Service).to receive(:exists?).with(chef_service_name).and_return(false)
|
425
|
+
end
|
426
|
+
|
427
|
+
it "logs warning" do
|
428
|
+
expect(logger).to receive(:warn)
|
429
|
+
.with("windows_service[#{chef_service_name}] does not exist. Maybe you need to prepend action :create")
|
430
|
+
provider.action_configure
|
431
|
+
end
|
432
|
+
|
433
|
+
it "does not converge" do
|
434
|
+
provider.action_configure
|
435
|
+
expect(provider.resource_updated?).to be false
|
436
|
+
end
|
437
|
+
|
438
|
+
it "does not convigure service" do
|
439
|
+
expect(Win32::Service).to_not receive(:configure)
|
440
|
+
provider.action_configure
|
441
|
+
end
|
442
|
+
|
443
|
+
it "does not call converge_delayed_start" do
|
444
|
+
expect(provider).to_not receive(:converge_delayed_start)
|
445
|
+
provider.action_configure
|
446
|
+
end
|
447
|
+
end
|
448
|
+
end
|
449
|
+
|
450
|
+
describe Chef::Provider::Service::Windows, "converge_delayed_start" do
|
451
|
+
before do
|
452
|
+
allow(Win32::Service).to receive(:configure).and_return(true)
|
453
|
+
end
|
454
|
+
|
455
|
+
it "works around #6300 if delayed_start is default" do
|
456
|
+
new_resource.delayed_start = new_resource.class.properties[:delayed_start].default
|
457
|
+
expect(provider.new_resource).to receive(:delayed_start=)
|
458
|
+
.with(new_resource.class.properties[:delayed_start].default)
|
459
|
+
provider.send(:converge_delayed_start)
|
460
|
+
end
|
461
|
+
|
462
|
+
context "delayed start needs to be updated" do
|
463
|
+
before do
|
464
|
+
provider.current_resource.delayed_start = false
|
465
|
+
provider.new_resource.delayed_start = true
|
466
|
+
end
|
467
|
+
|
468
|
+
it "configures delayed start" do
|
469
|
+
expect(Win32::Service).to receive(:configure)
|
470
|
+
provider.send(:converge_delayed_start)
|
471
|
+
end
|
472
|
+
|
473
|
+
it "configures delayed start with correct params" do
|
474
|
+
expect(Win32::Service).to receive(:configure).with(service_name: chef_service_name, delayed_start: 1)
|
475
|
+
provider.send(:converge_delayed_start)
|
476
|
+
end
|
477
|
+
|
478
|
+
it "converges resource" do
|
479
|
+
provider.send(:converge_delayed_start)
|
480
|
+
expect(provider.resource_updated?).to be true
|
481
|
+
end
|
482
|
+
end
|
483
|
+
|
484
|
+
context "delayed start does not need to be updated" do
|
485
|
+
before do
|
486
|
+
provider.current_resource.delayed_start = false
|
487
|
+
provider.new_resource.delayed_start = false
|
488
|
+
end
|
489
|
+
|
490
|
+
it "does not configure delayed start" do
|
491
|
+
expect(Win32::Service).to_not receive(:configure)
|
492
|
+
provider.send(:converge_delayed_start)
|
493
|
+
end
|
494
|
+
|
495
|
+
it "does not converge" do
|
496
|
+
provider.send(:converge_delayed_start)
|
497
|
+
expect(provider.resource_updated?).to be false
|
498
|
+
end
|
499
|
+
end
|
500
|
+
end
|
501
|
+
|
502
|
+
describe Chef::Provider::Service::Windows, "start_service" do
|
503
|
+
before(:each) do
|
504
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
505
|
+
double("StatusStruct", current_state: "stopped"),
|
506
|
+
double("StatusStruct", current_state: "running"))
|
507
|
+
end
|
508
|
+
|
509
|
+
context "run_as_user user is specified" do
|
510
|
+
let(:run_as_user) { provider.new_resource.class.properties[:run_as_user].default }
|
511
|
+
|
512
|
+
before do
|
513
|
+
provider.new_resource.run_as_user run_as_user
|
514
|
+
end
|
515
|
+
|
516
|
+
it "configures service run_as_user and run_as_password" do
|
517
|
+
expect(provider).to receive(:configure_service_run_as_properties).and_call_original
|
518
|
+
expect(Win32::Service).to receive(:configure)
|
519
|
+
provider.start_service
|
520
|
+
end
|
521
|
+
end
|
522
|
+
|
523
|
+
context "run_as_user user is not specified" do
|
524
|
+
before do
|
525
|
+
expect(provider.new_resource.property_is_set?(:run_as_user)).to be false
|
526
|
+
end
|
527
|
+
|
528
|
+
it "does not configure service run_as_user and run_as_password" do
|
529
|
+
expect(Win32::Service).not_to receive(:configure)
|
530
|
+
provider.start_service
|
531
|
+
end
|
532
|
+
end
|
533
|
+
|
534
|
+
it "calls the start command if one is specified" do
|
535
|
+
new_resource.start_command "sc start #{chef_service_name}"
|
536
|
+
expect(provider).to receive(:shell_out!).with((new_resource.start_command).to_s).and_return("Starting custom service")
|
537
|
+
provider.start_service
|
538
|
+
expect(new_resource.updated_by_last_action?).to be_truthy
|
539
|
+
end
|
540
|
+
|
541
|
+
it "uses the built-in command if no start command is specified" do
|
542
|
+
expect(Win32::Service).to receive(:start).with(new_resource.service_name)
|
543
|
+
provider.start_service
|
544
|
+
expect(new_resource.updated_by_last_action?).to be_truthy
|
545
|
+
end
|
546
|
+
|
547
|
+
it "does nothing if the service does not exist" do
|
548
|
+
allow(Win32::Service).to receive(:exists?).with(new_resource.service_name).and_return(false)
|
549
|
+
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
550
|
+
provider.start_service
|
551
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
552
|
+
end
|
553
|
+
|
554
|
+
it "does nothing if the service is running" do
|
555
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
556
|
+
double("StatusStruct", current_state: "running"))
|
557
|
+
provider.load_current_resource
|
558
|
+
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
559
|
+
provider.start_service
|
560
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
561
|
+
end
|
562
|
+
|
563
|
+
it "raises an error if the service is paused" do
|
564
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
565
|
+
double("StatusStruct", current_state: "paused"))
|
566
|
+
provider.load_current_resource
|
567
|
+
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
568
|
+
expect { provider.start_service }.to raise_error( Chef::Exceptions::Service )
|
569
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
570
|
+
end
|
571
|
+
|
572
|
+
it "waits and continues if the service is in start_pending" do
|
573
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
574
|
+
double("StatusStruct", current_state: "start pending"),
|
575
|
+
double("StatusStruct", current_state: "start pending"),
|
576
|
+
double("StatusStruct", current_state: "running"))
|
577
|
+
provider.load_current_resource
|
578
|
+
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
579
|
+
provider.start_service
|
580
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
581
|
+
end
|
582
|
+
|
583
|
+
it "fails if the service is in stop_pending" do
|
584
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
585
|
+
double("StatusStruct", current_state: "stop pending"))
|
586
|
+
provider.load_current_resource
|
587
|
+
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
588
|
+
expect { provider.start_service }.to raise_error( Chef::Exceptions::Service )
|
589
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
590
|
+
end
|
591
|
+
|
592
|
+
describe "running as a different account" do
|
593
|
+
before do
|
594
|
+
new_resource.run_as_user(".\\wallace")
|
595
|
+
new_resource.run_as_password("Wensleydale")
|
596
|
+
end
|
597
|
+
|
598
|
+
it "calls #grant_service_logon if the :run_as_user and :run_as_password properties are present" do
|
599
|
+
expect(Win32::Service).to receive(:start)
|
600
|
+
expect(provider).to receive(:grant_service_logon).and_return(true)
|
601
|
+
provider.start_service
|
602
|
+
end
|
603
|
+
|
604
|
+
it "does not grant user SeServiceLogonRight if it already has it" do
|
605
|
+
expect(Win32::Service).to receive(:start)
|
606
|
+
expect(Chef::ReservedNames::Win32::Security).to receive(:get_account_right).with("wallace").and_return([service_right])
|
607
|
+
expect(Chef::ReservedNames::Win32::Security).not_to receive(:add_account_right).with("wallace", service_right)
|
608
|
+
provider.start_service
|
609
|
+
end
|
610
|
+
|
611
|
+
it "skips the rights check for LocalSystem" do
|
612
|
+
new_resource.run_as_user("LocalSystem")
|
613
|
+
expect(Win32::Service).to receive(:start)
|
614
|
+
expect(Chef::ReservedNames::Win32::Security).not_to receive(:get_account_right)
|
615
|
+
expect(Chef::ReservedNames::Win32::Security).not_to receive(:add_account_right)
|
616
|
+
provider.start_service
|
617
|
+
end
|
618
|
+
end
|
619
|
+
end
|
620
|
+
|
621
|
+
describe Chef::Provider::Service::Windows, "stop_service" do
|
622
|
+
|
623
|
+
before(:each) do
|
624
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
625
|
+
double("StatusStruct", current_state: "running"),
|
626
|
+
double("StatusStruct", current_state: "stopped"))
|
627
|
+
end
|
628
|
+
|
629
|
+
it "calls the stop command if one is specified" do
|
630
|
+
new_resource.stop_command "sc stop #{chef_service_name}"
|
631
|
+
expect(provider).to receive(:shell_out!).with((new_resource.stop_command).to_s).and_return("Stopping custom service")
|
632
|
+
provider.stop_service
|
633
|
+
expect(new_resource.updated_by_last_action?).to be_truthy
|
634
|
+
end
|
635
|
+
|
636
|
+
it "uses the built-in command if no stop command is specified" do
|
637
|
+
expect(Win32::Service).to receive(:stop).with(new_resource.service_name)
|
638
|
+
provider.stop_service
|
639
|
+
expect(new_resource.updated_by_last_action?).to be_truthy
|
640
|
+
end
|
641
|
+
|
642
|
+
it "does nothing if the service does not exist" do
|
643
|
+
allow(Win32::Service).to receive(:exists?).with(new_resource.service_name).and_return(false)
|
644
|
+
expect(Win32::Service).not_to receive(:stop).with(new_resource.service_name)
|
645
|
+
provider.stop_service
|
646
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
647
|
+
end
|
648
|
+
|
649
|
+
it "does nothing if the service is stopped" do
|
650
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
651
|
+
double("StatusStruct", current_state: "stopped"))
|
652
|
+
provider.load_current_resource
|
653
|
+
expect(Win32::Service).not_to receive(:stop).with(new_resource.service_name)
|
654
|
+
provider.stop_service
|
655
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
656
|
+
end
|
657
|
+
|
658
|
+
it "raises an error if the service is paused" do
|
659
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
660
|
+
double("StatusStruct", current_state: "paused"))
|
661
|
+
provider.load_current_resource
|
662
|
+
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
663
|
+
expect { provider.stop_service }.to raise_error( Chef::Exceptions::Service )
|
664
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
665
|
+
end
|
666
|
+
|
667
|
+
it "waits and continue if the service is in stop_pending" do
|
668
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
669
|
+
double("StatusStruct", current_state: "stop pending"),
|
670
|
+
double("StatusStruct", current_state: "stop pending"),
|
671
|
+
double("StatusStruct", current_state: "stopped"))
|
672
|
+
provider.load_current_resource
|
673
|
+
expect(Win32::Service).not_to receive(:stop).with(new_resource.service_name)
|
674
|
+
provider.stop_service
|
675
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
676
|
+
end
|
677
|
+
|
678
|
+
it "fails if the service is in start_pending" do
|
679
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
680
|
+
double("StatusStruct", current_state: "start pending"))
|
681
|
+
provider.load_current_resource
|
682
|
+
expect(Win32::Service).not_to receive(:stop).with(new_resource.service_name)
|
683
|
+
expect { provider.stop_service }.to raise_error( Chef::Exceptions::Service )
|
684
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
685
|
+
end
|
686
|
+
|
687
|
+
it "passes custom timeout to the stop command if provided" do
|
688
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
689
|
+
double("StatusStruct", current_state: "running"))
|
690
|
+
new_resource.timeout 1
|
691
|
+
expect(Win32::Service).to receive(:stop).with(new_resource.service_name)
|
692
|
+
Timeout.timeout(2) do
|
693
|
+
expect { provider.stop_service }.to raise_error(Timeout::Error)
|
694
|
+
end
|
695
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
696
|
+
end
|
697
|
+
|
698
|
+
end
|
699
|
+
|
700
|
+
describe Chef::Provider::Service::Windows, "restart_service" do
|
701
|
+
|
702
|
+
it "calls the restart command if one is specified" do
|
703
|
+
new_resource.restart_command "sc restart"
|
704
|
+
expect(provider).to receive(:shell_out!).with((new_resource.restart_command).to_s)
|
705
|
+
provider.restart_service
|
706
|
+
expect(new_resource.updated_by_last_action?).to be_truthy
|
707
|
+
end
|
708
|
+
|
709
|
+
it "stops then starts the service if it is running" do
|
710
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
711
|
+
double("StatusStruct", current_state: "running"),
|
712
|
+
double("StatusStruct", current_state: "stopped"),
|
713
|
+
double("StatusStruct", current_state: "stopped"),
|
714
|
+
double("StatusStruct", current_state: "running"))
|
715
|
+
expect(Win32::Service).to receive(:stop).with(new_resource.service_name)
|
716
|
+
expect(Win32::Service).to receive(:start).with(new_resource.service_name)
|
717
|
+
provider.restart_service
|
718
|
+
expect(new_resource.updated_by_last_action?).to be_truthy
|
719
|
+
end
|
720
|
+
|
721
|
+
it "just starts the service if it is stopped" do
|
722
|
+
allow(Win32::Service).to receive(:status).with(new_resource.service_name).and_return(
|
723
|
+
double("StatusStruct", current_state: "stopped"),
|
724
|
+
double("StatusStruct", current_state: "stopped"),
|
725
|
+
double("StatusStruct", current_state: "running"))
|
726
|
+
expect(Win32::Service).to receive(:start).with(new_resource.service_name)
|
727
|
+
provider.restart_service
|
728
|
+
expect(new_resource.updated_by_last_action?).to be_truthy
|
729
|
+
end
|
730
|
+
|
731
|
+
it "does nothing if the service does not exist" do
|
732
|
+
allow(Win32::Service).to receive(:exists?).with(new_resource.service_name).and_return(false)
|
733
|
+
expect(Win32::Service).not_to receive(:stop).with(new_resource.service_name)
|
734
|
+
expect(Win32::Service).not_to receive(:start).with(new_resource.service_name)
|
735
|
+
provider.restart_service
|
736
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
737
|
+
end
|
738
|
+
|
739
|
+
end
|
740
|
+
|
741
|
+
describe Chef::Provider::Service::Windows, "enable_service" do
|
742
|
+
before(:each) do
|
743
|
+
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
744
|
+
double("ConfigStruct", start_type: "disabled"))
|
745
|
+
end
|
746
|
+
|
747
|
+
it "enables service" do
|
748
|
+
expect(Win32::Service).to receive(:configure).with(service_name: new_resource.service_name, start_type: Win32::Service::AUTO_START)
|
749
|
+
provider.enable_service
|
750
|
+
expect(new_resource.updated_by_last_action?).to be_truthy
|
751
|
+
end
|
752
|
+
|
753
|
+
it "does nothing if the service does not exist" do
|
754
|
+
allow(Win32::Service).to receive(:exists?).with(new_resource.service_name).and_return(false)
|
755
|
+
expect(Win32::Service).not_to receive(:configure)
|
756
|
+
provider.enable_service
|
757
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
758
|
+
end
|
759
|
+
end
|
760
|
+
|
761
|
+
describe Chef::Provider::Service::Windows, "action_enable" do
|
762
|
+
it "does nothing if the service is enabled" do
|
763
|
+
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
764
|
+
double("ConfigStruct", start_type: "auto start"))
|
765
|
+
expect(provider).not_to receive(:enable_service)
|
766
|
+
provider.action_enable
|
767
|
+
end
|
768
|
+
|
769
|
+
it "enables the service if it is not set to automatic start" do
|
770
|
+
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
771
|
+
double("ConfigStruct", start_type: "disabled"))
|
772
|
+
expect(provider).to receive(:enable_service)
|
773
|
+
provider.action_enable
|
774
|
+
end
|
775
|
+
end
|
776
|
+
|
777
|
+
describe Chef::Provider::Service::Windows, "action_disable" do
|
778
|
+
it "does nothing if the service is disabled" do
|
779
|
+
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
780
|
+
double("ConfigStruct", start_type: "disabled"))
|
781
|
+
expect(provider).not_to receive(:disable_service)
|
782
|
+
provider.action_disable
|
783
|
+
end
|
784
|
+
|
785
|
+
it "disables the service if it is not set to disabled" do
|
786
|
+
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
787
|
+
double("ConfigStruct", start_type: "auto start"))
|
788
|
+
expect(provider).to receive(:disable_service)
|
789
|
+
provider.action_disable
|
790
|
+
end
|
791
|
+
end
|
792
|
+
|
793
|
+
describe Chef::Provider::Service::Windows, "disable_service" do
|
794
|
+
before(:each) do
|
795
|
+
allow(Win32::Service).to receive(:config_info).with(new_resource.service_name).and_return(
|
796
|
+
double("ConfigStruct", start_type: "auto start"))
|
797
|
+
end
|
798
|
+
|
799
|
+
it "disables service" do
|
800
|
+
expect(Win32::Service).to receive(:configure)
|
801
|
+
provider.disable_service
|
802
|
+
expect(new_resource.updated_by_last_action?).to be_truthy
|
803
|
+
end
|
804
|
+
|
805
|
+
it "does nothing if the service does not exist" do
|
806
|
+
allow(Win32::Service).to receive(:exists?).with(new_resource.service_name).and_return(false)
|
807
|
+
expect(Win32::Service).not_to receive(:configure)
|
808
|
+
provider.disable_service
|
809
|
+
expect(new_resource.updated_by_last_action?).to be_falsey
|
810
|
+
end
|
811
|
+
end
|
812
|
+
|
813
|
+
describe Chef::Provider::Service::Windows, "action_configure_startup" do
|
814
|
+
%i{automatic manual disabled}.each do |type|
|
815
|
+
it "sets the startup type to #{type} if it is something else" do
|
816
|
+
new_resource.startup_type(type)
|
817
|
+
allow(provider).to receive(:current_startup_type).and_return(:fire)
|
818
|
+
expect(provider).to receive(:set_startup_type).with(type)
|
819
|
+
provider.action_configure_startup
|
820
|
+
end
|
821
|
+
|
822
|
+
it "leaves the startup type as #{type} if it is already set" do
|
823
|
+
new_resource.startup_type(type)
|
824
|
+
allow(provider).to receive(:current_startup_type).and_return(type)
|
825
|
+
expect(provider).not_to receive(:set_startup_type).with(type)
|
826
|
+
provider.action_configure_startup
|
827
|
+
end
|
828
|
+
end
|
829
|
+
|
830
|
+
it "calls converge_delayed_start" do
|
831
|
+
expect(provider).to receive(:converge_delayed_start)
|
832
|
+
provider.action_configure_startup
|
833
|
+
end
|
834
|
+
end
|
835
|
+
|
836
|
+
describe Chef::Provider::Service::Windows, "set_start_type" do
|
837
|
+
it "when called with :automatic it calls Win32::Service#configure with Win32::Service::AUTO_START" do
|
838
|
+
expect(Win32::Service).to receive(:configure).with(service_name: new_resource.service_name, start_type: Win32::Service::AUTO_START)
|
839
|
+
provider.send(:set_startup_type, :automatic)
|
840
|
+
end
|
841
|
+
|
842
|
+
it "when called with :manual it calls Win32::Service#configure with Win32::Service::DEMAND_START" do
|
843
|
+
expect(Win32::Service).to receive(:configure).with(service_name: new_resource.service_name, start_type: Win32::Service::DEMAND_START)
|
844
|
+
provider.send(:set_startup_type, :manual)
|
845
|
+
end
|
846
|
+
|
847
|
+
it "when called with :disabled it calls Win32::Service#configure with Win32::Service::DISABLED" do
|
848
|
+
expect(Win32::Service).to receive(:configure).with(service_name: new_resource.service_name, start_type: Win32::Service::DISABLED)
|
849
|
+
provider.send(:set_startup_type, :disabled)
|
850
|
+
end
|
851
|
+
|
852
|
+
it "raises an exception when given an unknown start type" do
|
853
|
+
expect { provider.send(:set_startup_type, :fire_truck) }.to raise_error(Chef::Exceptions::ConfigurationError)
|
854
|
+
end
|
855
|
+
end
|
856
|
+
|
857
|
+
shared_context "testing private methods" do
|
858
|
+
|
859
|
+
let(:private_methods) do
|
860
|
+
described_class.private_instance_methods
|
861
|
+
end
|
862
|
+
|
863
|
+
before do
|
864
|
+
described_class.send(:public, *private_methods)
|
865
|
+
end
|
866
|
+
|
867
|
+
after do
|
868
|
+
described_class.send(:private, *private_methods)
|
869
|
+
end
|
870
|
+
end
|
871
|
+
|
872
|
+
describe "grant_service_logon" do
|
873
|
+
include_context "testing private methods"
|
874
|
+
|
875
|
+
let(:username) { "unit_test_user" }
|
876
|
+
|
877
|
+
it "calls win32 api to grant user SeServiceLogonRight" do
|
878
|
+
expect(Chef::ReservedNames::Win32::Security).to receive(:add_account_right).with(username, service_right)
|
879
|
+
expect(provider.grant_service_logon(username)).to equal true
|
880
|
+
end
|
881
|
+
|
882
|
+
it "strips '.\' from user name when sending to win32 api" do
|
883
|
+
expect(Chef::ReservedNames::Win32::Security).to receive(:add_account_right).with(username, service_right)
|
884
|
+
expect(provider.grant_service_logon(".\\#{username}")).to equal true
|
885
|
+
end
|
886
|
+
|
887
|
+
it "raises an exception when the grant fails" do
|
888
|
+
expect(Chef::ReservedNames::Win32::Security).to receive(:add_account_right).and_raise(Chef::Exceptions::Win32APIError, "barf")
|
889
|
+
expect { provider.grant_service_logon(username) }.to raise_error(Chef::Exceptions::Service)
|
890
|
+
end
|
891
|
+
end
|
892
|
+
|
893
|
+
describe "cleaning usernames" do
|
894
|
+
include_context "testing private methods"
|
895
|
+
|
896
|
+
it "correctly reformats usernames to create valid filenames" do
|
897
|
+
expect(provider.clean_username_for_path("\\\\problem username/oink.txt")).to eq("_problem_username_oink_txt")
|
898
|
+
expect(provider.clean_username_for_path("boring_username")).to eq("boring_username")
|
899
|
+
end
|
900
|
+
|
901
|
+
it "correctly reformats usernames for the policy file" do
|
902
|
+
expect(provider.canonicalize_username(".\\maryann")).to eq("maryann")
|
903
|
+
expect(provider.canonicalize_username("maryann")).to eq("maryann")
|
904
|
+
|
905
|
+
expect(provider.canonicalize_username("\\\\maryann")).to eq("maryann")
|
906
|
+
expect(provider.canonicalize_username("mydomain\\\\maryann")).to eq("mydomain\\\\maryann")
|
907
|
+
expect(provider.canonicalize_username("\\\\mydomain\\\\maryann")).to eq("mydomain\\\\maryann")
|
908
|
+
end
|
909
|
+
end
|
910
|
+
end
|