chef-dk 2.4.17 → 2.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/Gemfile +121 -119
- data/Gemfile.lock +802 -817
- data/LICENSE +201 -201
- data/README.md +333 -333
- data/Rakefile +74 -74
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +27 -27
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +287 -287
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +52 -52
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +51 -51
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -1
- data/acceptance/Gemfile +21 -20
- data/acceptance/Gemfile.lock +334 -334
- data/acceptance/README.md +132 -132
- data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -2
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
- data/acceptance/trivial/.kitchen.yml +7 -7
- data/acceptance/trivial/test/integration/chefdk-current-install/inspec/chef_client_spec.rb +5 -5
- data/bin/chef +25 -25
- data/chef-dk.gemspec +60 -60
- data/lib/chef-dk.rb +19 -19
- data/lib/chef-dk/authenticated_http.rb +22 -22
- data/lib/chef-dk/builtin_commands.rb +59 -59
- data/lib/chef-dk/chef_runner.rb +114 -114
- data/lib/chef-dk/chef_server_api_multi.rb +73 -73
- data/lib/chef-dk/cli.rb +201 -201
- data/lib/chef-dk/command/base.rb +79 -79
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +114 -114
- data/lib/chef-dk/command/clean_policy_revisions.rb +111 -111
- data/lib/chef-dk/command/delete_policy.rb +120 -120
- data/lib/chef-dk/command/delete_policy_group.rb +120 -120
- data/lib/chef-dk/command/diff.rb +315 -315
- data/lib/chef-dk/command/env.rb +89 -89
- data/lib/chef-dk/command/exec.rb +44 -44
- data/lib/chef-dk/command/export.rb +155 -155
- data/lib/chef-dk/command/gem.rb +47 -47
- data/lib/chef-dk/command/generate.rb +125 -125
- data/lib/chef-dk/command/generator_commands.rb +83 -83
- data/lib/chef-dk/command/generator_commands/app.rb +106 -106
- data/lib/chef-dk/command/generator_commands/attribute.rb +36 -36
- data/lib/chef-dk/command/generator_commands/base.rb +157 -157
- data/lib/chef-dk/command/generator_commands/build_cookbook.rb +125 -125
- data/lib/chef-dk/command/generator_commands/chef_exts/generator_desc_resource.rb +85 -85
- data/lib/chef-dk/command/generator_commands/chef_exts/quieter_doc_formatter.rb +38 -38
- data/lib/chef-dk/command/generator_commands/chef_exts/recipe_dsl_ext.rb +39 -39
- data/lib/chef-dk/command/generator_commands/cookbook.rb +241 -241
- data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +100 -100
- data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -45
- data/lib/chef-dk/command/generator_commands/generator_generator.rb +174 -174
- data/lib/chef-dk/command/generator_commands/helpers.rb +36 -36
- data/lib/chef-dk/command/generator_commands/policyfile.rb +126 -126
- data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
- data/lib/chef-dk/command/generator_commands/repo.rb +123 -123
- data/lib/chef-dk/command/generator_commands/resource.rb +36 -36
- data/lib/chef-dk/command/generator_commands/template.rb +46 -46
- data/lib/chef-dk/command/install.rb +120 -120
- data/lib/chef-dk/command/provision.rb +436 -436
- data/lib/chef-dk/command/push.rb +117 -117
- data/lib/chef-dk/command/push_archive.rb +125 -125
- data/lib/chef-dk/command/shell_init.rb +179 -179
- data/lib/chef-dk/command/show_policy.rb +163 -163
- data/lib/chef-dk/command/undelete.rb +154 -154
- data/lib/chef-dk/command/update.rb +133 -133
- data/lib/chef-dk/command/verify.rb +629 -629
- data/lib/chef-dk/commands_map.rb +113 -113
- data/lib/chef-dk/completions/bash.sh.erb +5 -5
- data/lib/chef-dk/completions/chef.fish.erb +10 -10
- data/lib/chef-dk/completions/zsh.zsh.erb +21 -21
- data/lib/chef-dk/component_test.rb +227 -227
- data/lib/chef-dk/configurable.rb +88 -88
- data/lib/chef-dk/cookbook_metadata.rb +45 -45
- data/lib/chef-dk/cookbook_omnifetch.rb +32 -32
- data/lib/chef-dk/cookbook_profiler/git.rb +151 -151
- data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
- data/lib/chef-dk/cookbook_profiler/null_scm.rb +31 -31
- data/lib/chef-dk/exceptions.rb +150 -150
- data/lib/chef-dk/generator.rb +165 -165
- data/lib/chef-dk/helpers.rb +176 -176
- data/lib/chef-dk/pager.rb +105 -105
- data/lib/chef-dk/policyfile/artifactory_cookbook_source.rb +102 -102
- data/lib/chef-dk/policyfile/attribute_merge_checker.rb +110 -110
- data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -138
- data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +99 -99
- data/lib/chef-dk/policyfile/chef_server_lock_fetcher.rb +164 -164
- data/lib/chef-dk/policyfile/community_cookbook_source.rb +95 -95
- data/lib/chef-dk/policyfile/comparison_base.rb +123 -123
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +154 -154
- data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
- data/lib/chef-dk/policyfile/cookbook_sources.rb +23 -23
- data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +89 -89
- data/lib/chef-dk/policyfile/differ.rb +263 -263
- data/lib/chef-dk/policyfile/dsl.rb +288 -288
- data/lib/chef-dk/policyfile/included_policies_cookbook_source.rb +156 -156
- data/lib/chef-dk/policyfile/lister.rb +229 -229
- data/lib/chef-dk/policyfile/local_lock_fetcher.rb +123 -122
- data/lib/chef-dk/policyfile/lock_applier.rb +80 -80
- data/lib/chef-dk/policyfile/null_cookbook_source.rb +49 -49
- data/lib/chef-dk/policyfile/policyfile_location_specification.rb +122 -122
- data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
- data/lib/chef-dk/policyfile/reports/install.rb +69 -69
- data/lib/chef-dk/policyfile/reports/table_printer.rb +57 -57
- data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
- data/lib/chef-dk/policyfile/solution_dependencies.rb +312 -312
- data/lib/chef-dk/policyfile/source_uri.rb +57 -57
- data/lib/chef-dk/policyfile/storage_config.rb +102 -102
- data/lib/chef-dk/policyfile/undo_record.rb +139 -139
- data/lib/chef-dk/policyfile/undo_stack.rb +128 -128
- data/lib/chef-dk/policyfile/uploader.rb +213 -213
- data/lib/chef-dk/policyfile_compiler.rb +528 -528
- data/lib/chef-dk/policyfile_lock.rb +581 -581
- data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
- data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +123 -123
- data/lib/chef-dk/policyfile_services/export_repo.rb +420 -420
- data/lib/chef-dk/policyfile_services/install.rb +162 -162
- data/lib/chef-dk/policyfile_services/push.rb +112 -112
- data/lib/chef-dk/policyfile_services/push_archive.rb +200 -200
- data/lib/chef-dk/policyfile_services/rm_policy.rb +141 -141
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +85 -85
- data/lib/chef-dk/policyfile_services/show_policy.rb +236 -236
- data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
- data/lib/chef-dk/policyfile_services/update_attributes.rb +110 -110
- data/lib/chef-dk/service_exception_inspectors.rb +24 -24
- data/lib/chef-dk/service_exception_inspectors/base.rb +39 -39
- data/lib/chef-dk/service_exception_inspectors/http.rb +119 -119
- data/lib/chef-dk/service_exceptions.rb +142 -142
- data/lib/chef-dk/shell_out.rb +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +4 -4
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/.kitchen.yml +21 -21
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/README.md +146 -146
- data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/test-fixture-recipe.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +107 -107
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +54 -54
- data/lib/chef-dk/skeletons/code_generator/files/default/delivery-config.json +17 -17
- data/lib/chef-dk/skeletons/code_generator/files/default/delivery-project.toml +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +22 -22
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +24 -24
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -27
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +7 -7
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +56 -56
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/dot-chef-repo.txt +6 -6
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/policies/README.md +24 -24
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +9 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +89 -89
- data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +13 -13
- data/lib/chef-dk/skeletons/code_generator/recipes/build_cookbook.rb +177 -177
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +152 -152
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +25 -25
- data/lib/chef-dk/skeletons/code_generator/recipes/helpers.rb +21 -21
- data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +52 -52
- data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +68 -68
- data/lib/chef-dk/skeletons/code_generator/recipes/resource.rb +13 -13
- data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -3
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.apachev2.erb +201 -201
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -339
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -674
- data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -21
- data/lib/chef-dk/skeletons/code_generator/templates/default/Policyfile.rb.erb +25 -25
- data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -4
- data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/Berksfile.erb +7 -7
- data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/metadata.rb.erb +10 -10
- data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/recipe.rb.erb +8 -8
- data/lib/chef-dk/skeletons/code_generator/templates/default/helpers.rb.erb +39 -39
- data/lib/chef-dk/skeletons/code_generator/templates/default/inspec_default_test.rb.erb +18 -18
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +26 -26
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +33 -33
- data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +20 -20
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +5 -5
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +35 -35
- data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +128 -128
- data/lib/chef-dk/skeletons/code_generator/templates/default/resource.rb.erb +1 -1
- data/lib/chef-dk/ui.rb +57 -57
- data/lib/chef-dk/version.rb +20 -20
- data/lib/kitchen/provisioner/policyfile_zero.rb +195 -195
- data/omnibus_overrides.rb +22 -22
- data/spec/shared/a_file_generator.rb +125 -125
- data/spec/shared/a_generated_file.rb +12 -12
- data/spec/shared/command_with_ui_object.rb +11 -11
- data/spec/shared/custom_generator_cookbook.rb +136 -136
- data/spec/shared/fixture_cookbook_checksums.rb +46 -46
- data/spec/shared/setup_git_committer_config.rb +54 -54
- data/spec/shared/setup_git_cookbooks.rb +53 -53
- data/spec/spec_helper.rb +51 -51
- data/spec/test_helpers.rb +84 -84
- data/spec/unit/chef_runner_spec.rb +139 -139
- data/spec/unit/chef_server_api_multi_spec.rb +120 -120
- data/spec/unit/cli_spec.rb +377 -377
- data/spec/unit/command/base_spec.rb +172 -172
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +180 -180
- data/spec/unit/command/clean_policy_revisions_spec.rb +180 -180
- data/spec/unit/command/delete_policy_group_spec.rb +206 -206
- data/spec/unit/command/delete_policy_spec.rb +206 -206
- data/spec/unit/command/diff_spec.rb +311 -311
- data/spec/unit/command/env_spec.rb +52 -52
- data/spec/unit/command/exec_spec.rb +178 -178
- data/spec/unit/command/export_spec.rb +199 -199
- data/spec/unit/command/generate_spec.rb +142 -142
- data/spec/unit/command/generator_commands/app_spec.rb +166 -166
- data/spec/unit/command/generator_commands/attribute_spec.rb +31 -31
- data/spec/unit/command/generator_commands/base_spec.rb +181 -181
- data/spec/unit/command/generator_commands/build_cookbook_spec.rb +377 -377
- data/spec/unit/command/generator_commands/chef_exts/generator_desc_resource_spec.rb +97 -97
- data/spec/unit/command/generator_commands/chef_exts/recipe_dsl_ext_spec.rb +111 -111
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +31 -31
- data/spec/unit/command/generator_commands/cookbook_spec.rb +756 -756
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +227 -227
- data/spec/unit/command/generator_commands/helpers_spec.rb +31 -31
- data/spec/unit/command/generator_commands/policyfile_spec.rb +223 -223
- data/spec/unit/command/generator_commands/recipe_spec.rb +37 -37
- data/spec/unit/command/generator_commands/repo_spec.rb +374 -374
- data/spec/unit/command/generator_commands/resource_spec.rb +31 -31
- data/spec/unit/command/generator_commands/template_spec.rb +31 -31
- data/spec/unit/command/install_spec.rb +179 -179
- data/spec/unit/command/provision_spec.rb +589 -589
- data/spec/unit/command/push_archive_spec.rb +153 -153
- data/spec/unit/command/push_spec.rb +198 -198
- data/spec/unit/command/shell_init_spec.rb +339 -339
- data/spec/unit/command/show_policy_spec.rb +234 -234
- data/spec/unit/command/undelete_spec.rb +244 -244
- data/spec/unit/command/update_spec.rb +283 -283
- data/spec/unit/command/verify_spec.rb +341 -341
- data/spec/unit/commands_map_spec.rb +57 -57
- data/spec/unit/component_test_spec.rb +128 -128
- data/spec/unit/configurable_spec.rb +68 -68
- data/spec/unit/cookbook_metadata_spec.rb +96 -96
- data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +81 -81
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -9
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -9
- data/spec/unit/fixtures/command/cli_test_command.rb +26 -26
- data/spec/unit/fixtures/command/explicit_path_example.rb +7 -7
- data/spec/unit/fixtures/configurable/test_config_loader.rb +5 -5
- data/spec/unit/fixtures/configurable/test_configurable.rb +10 -10
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -16
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -3
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -4
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -96
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -8
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -8
- data/spec/unit/fixtures/cookbooks_api/chef_server_universe.json +56 -56
- data/spec/unit/fixtures/cookbooks_api/pruned_chef_server_universe.json +30 -30
- data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1321 -1321
- data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -2987
- data/spec/unit/fixtures/cookbooks_api/universe.json +1 -1
- data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +33 -33
- data/spec/unit/fixtures/dev_cookbooks/README.md +16 -16
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -2
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -5
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -3
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -2
- data/spec/unit/fixtures/example_cookbook/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -5
- data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -8
- data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -17
- data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -16
- data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -3
- data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -4
- data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -96
- data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -9
- data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -3
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -96
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -2
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
- data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
- data/spec/unit/generator_spec.rb +119 -119
- data/spec/unit/pager_spec.rb +117 -117
- data/spec/unit/policyfile/artifactory_cookbook_source_spec.rb +59 -59
- data/spec/unit/policyfile/attribute_merge_checker_spec.rb +80 -80
- data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -93
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +55 -55
- data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +161 -161
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +83 -83
- data/spec/unit/policyfile/comparison_base_spec.rb +340 -340
- data/spec/unit/policyfile/cookbook_location_specification_spec.rb +347 -347
- data/spec/unit/policyfile/cookbook_locks_spec.rb +527 -527
- data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +129 -129
- data/spec/unit/policyfile/differ_spec.rb +686 -686
- data/spec/unit/policyfile/included_policies_cookbook_source_spec.rb +242 -242
- data/spec/unit/policyfile/lister_spec.rb +268 -268
- data/spec/unit/policyfile/local_lock_fetcher_spec.rb +173 -161
- data/spec/unit/policyfile/lock_applier_spec.rb +100 -100
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +34 -34
- data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
- data/spec/unit/policyfile/reports/install_spec.rb +114 -114
- data/spec/unit/policyfile/reports/upload_spec.rb +94 -94
- data/spec/unit/policyfile/solution_dependencies_spec.rb +170 -170
- data/spec/unit/policyfile/source_uri_spec.rb +36 -36
- data/spec/unit/policyfile/storage_config_spec.rb +180 -180
- data/spec/unit/policyfile/undo_record_spec.rb +258 -258
- data/spec/unit/policyfile/undo_stack_spec.rb +265 -265
- data/spec/unit/policyfile/uploader_spec.rb +409 -409
- data/spec/unit/policyfile_demands_spec.rb +1197 -1197
- data/spec/unit/policyfile_evaluation_spec.rb +638 -638
- data/spec/unit/policyfile_includes_dsl_spec.rb +159 -159
- data/spec/unit/policyfile_includes_spec.rb +720 -720
- data/spec/unit/policyfile_install_with_includes_spec.rb +232 -232
- data/spec/unit/policyfile_lock_build_spec.rb +1065 -1065
- data/spec/unit/policyfile_lock_install_spec.rb +137 -137
- data/spec/unit/policyfile_lock_serialization_spec.rb +424 -424
- data/spec/unit/policyfile_lock_validation_spec.rb +608 -608
- data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +272 -272
- data/spec/unit/policyfile_services/export_repo_spec.rb +478 -478
- data/spec/unit/policyfile_services/install_spec.rb +209 -209
- data/spec/unit/policyfile_services/push_archive_spec.rb +374 -374
- data/spec/unit/policyfile_services/push_spec.rb +249 -249
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +237 -237
- data/spec/unit/policyfile_services/rm_policy_spec.rb +263 -263
- data/spec/unit/policyfile_services/show_policy_spec.rb +887 -887
- data/spec/unit/policyfile_services/undelete_spec.rb +302 -302
- data/spec/unit/policyfile_services/update_attributes_spec.rb +229 -229
- data/spec/unit/policyfile_services/update_spec.rb +140 -140
- data/spec/unit/service_exception_inspectors/base_spec.rb +41 -41
- data/spec/unit/service_exception_inspectors/http_spec.rb +138 -138
- data/spec/unit/shell_out_spec.rb +34 -34
- data/tasks/announce.rb +57 -57
- data/tasks/bin/bundle-platform.bat +2 -2
- data/tasks/dependencies.rb +89 -89
- data/tasks/templates/prerelease.md.erb +35 -35
- data/tasks/templates/release.md.erb +34 -34
- data/warning.txt +9 -9
- metadata +5 -5
|
@@ -1,140 +1,140 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require "spec_helper"
|
|
19
|
-
require "chef-dk/policyfile_services/install"
|
|
20
|
-
require "chef-dk/policyfile/cookbook_sources"
|
|
21
|
-
|
|
22
|
-
describe ChefDK::PolicyfileServices::Install do
|
|
23
|
-
|
|
24
|
-
include ChefDK::Helpers
|
|
25
|
-
|
|
26
|
-
let(:working_dir) do
|
|
27
|
-
path = File.join(tempdir, "policyfile_services_test_working_dir")
|
|
28
|
-
Dir.mkdir(path)
|
|
29
|
-
path
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
let(:policyfile_rb_explicit_name) { nil }
|
|
33
|
-
|
|
34
|
-
let(:policyfile_rb_name) { policyfile_rb_explicit_name || "Policyfile.rb" }
|
|
35
|
-
|
|
36
|
-
let(:policyfile_rb_path) { File.join(working_dir, policyfile_rb_name) }
|
|
37
|
-
|
|
38
|
-
let(:policyfile_lock_name) { "Policyfile.lock.json" }
|
|
39
|
-
|
|
40
|
-
let(:policyfile_lock_path) { File.join(working_dir, policyfile_lock_name) }
|
|
41
|
-
|
|
42
|
-
let(:ui) { TestHelpers::TestUI.new }
|
|
43
|
-
|
|
44
|
-
let(:install_service) { described_class.new(policyfile: policyfile_rb_name, ui: ui, root_dir: working_dir, overwrite: true) }
|
|
45
|
-
|
|
46
|
-
let(:storage_config) do
|
|
47
|
-
ChefDK::Policyfile::StorageConfig.new( cache_path: nil, relative_paths_root: local_cookbooks_root )
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
let(:policyfile_content) do
|
|
51
|
-
<<-EOH
|
|
52
|
-
default_source :community
|
|
53
|
-
name 'install-example'
|
|
54
|
-
|
|
55
|
-
run_list 'top-level'
|
|
56
|
-
|
|
57
|
-
cookbook 'top-level'
|
|
58
|
-
cookbook 'top-level-bis'
|
|
59
|
-
cookbook 'b', '>= 1.2.3'
|
|
60
|
-
EOH
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def cookbook_lock(name, version)
|
|
64
|
-
{
|
|
65
|
-
"version" => version,
|
|
66
|
-
"identifier" => Digest::SHA256.new.hexdigest(version),
|
|
67
|
-
"dotted_decimal_identifier" => "55385045718000942.66835911167097593.12604218968062",
|
|
68
|
-
"cache_key" => "#{name}-#{version}-supermarket.chef.io",
|
|
69
|
-
"origin" => "https://supermarket.chef.io:443/api/v1/cookbooks/#{name}/versions/#{version}/download",
|
|
70
|
-
"source_options" => {
|
|
71
|
-
"artifactserver" => "https://supermarket.chef.io:443/api/v1/cookbooks/#{name}/versions/#{version}/download",
|
|
72
|
-
"version" => version,
|
|
73
|
-
},
|
|
74
|
-
}
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
let(:policyfile_lock_content) do
|
|
78
|
-
{
|
|
79
|
-
"revision_id" => "b33cb73a52bee7254eb53138ee44",
|
|
80
|
-
"name" => "install-example",
|
|
81
|
-
"run_list" => [ "recipe[top-level::default]" ],
|
|
82
|
-
"cookbook_locks" => {
|
|
83
|
-
"top-level" => cookbook_lock("top-level", "1.2.0"),
|
|
84
|
-
"a" => cookbook_lock("a", "2.1.0"),
|
|
85
|
-
"b" => cookbook_lock("b", "1.2.3"),
|
|
86
|
-
"top-level-bis" => cookbook_lock("top-level-bis", "1.0.0"),
|
|
87
|
-
},
|
|
88
|
-
"default_attributes" => {},
|
|
89
|
-
"override_attributes" => {},
|
|
90
|
-
"solution_dependencies" => {
|
|
91
|
-
"Policyfile" => [
|
|
92
|
-
[ "top-level", "= 1.2.0" ],
|
|
93
|
-
[ "a", "= 2.1.0" ],
|
|
94
|
-
[ "b", "= 1.2.3" ],
|
|
95
|
-
[ "top-level-bis", "= 1.0.0" ],
|
|
96
|
-
],
|
|
97
|
-
"dependencies" => {
|
|
98
|
-
"top-level (1.2.0)" => [ [ "a", "~> 2.1" ], [ "b", "~> 1.0" ] ],
|
|
99
|
-
"a (2.1.0)" => [],
|
|
100
|
-
"b (1.2.3)" => [],
|
|
101
|
-
"top-level-bis (1.0.0)" => [],
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
}.to_json
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
context "when given one cookbook to update" do
|
|
108
|
-
before(:each) do
|
|
109
|
-
# stub access to Policyfile.rb and Policyfile.lock.json
|
|
110
|
-
expect(File).to receive(:exist?).at_least(:once).with(policyfile_rb_path).and_return(true)
|
|
111
|
-
expect(File).to receive(:exist?).at_least(:once).with(policyfile_lock_path).and_return(true)
|
|
112
|
-
|
|
113
|
-
expect(IO).to receive(:read).with(policyfile_rb_path).and_return(policyfile_content)
|
|
114
|
-
expect(IO).to receive(:read).with(policyfile_lock_path).and_return(policyfile_lock_content)
|
|
115
|
-
|
|
116
|
-
# lock generation is a no-op. Its behavior is already tested
|
|
117
|
-
# elsewhere. We only check constraints changes
|
|
118
|
-
expect(install_service).to receive(:generate_lock_and_install)
|
|
119
|
-
|
|
120
|
-
expect { install_service.run(["top-level"]) }.not_to raise_error
|
|
121
|
-
end
|
|
122
|
-
it "allows update on cookbook to update" do
|
|
123
|
-
expect(install_service.policyfile_compiler.dsl.cookbook_location_specs["top-level"].version_constraint.to_s).to eq(">= 0.0.0")
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
it "does not update unrelated cookbooks" do
|
|
127
|
-
expect(install_service.policyfile_compiler.dsl.cookbook_location_specs["top-level-bis"].version_constraint.to_s).to eq("= 1.0.0")
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
it "allows update on dependencies" do
|
|
131
|
-
expect(install_service.policyfile_compiler.dsl.cookbook_location_specs["a"]).to be_nil
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
it "preserves existing constraints from Policyfile" do
|
|
135
|
-
expect(install_service.policyfile_compiler.dsl.cookbook_location_specs["b"].version_constraint.to_s).to eq(">= 1.2.3")
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require "spec_helper"
|
|
19
|
+
require "chef-dk/policyfile_services/install"
|
|
20
|
+
require "chef-dk/policyfile/cookbook_sources"
|
|
21
|
+
|
|
22
|
+
describe ChefDK::PolicyfileServices::Install do
|
|
23
|
+
|
|
24
|
+
include ChefDK::Helpers
|
|
25
|
+
|
|
26
|
+
let(:working_dir) do
|
|
27
|
+
path = File.join(tempdir, "policyfile_services_test_working_dir")
|
|
28
|
+
Dir.mkdir(path)
|
|
29
|
+
path
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
let(:policyfile_rb_explicit_name) { nil }
|
|
33
|
+
|
|
34
|
+
let(:policyfile_rb_name) { policyfile_rb_explicit_name || "Policyfile.rb" }
|
|
35
|
+
|
|
36
|
+
let(:policyfile_rb_path) { File.join(working_dir, policyfile_rb_name) }
|
|
37
|
+
|
|
38
|
+
let(:policyfile_lock_name) { "Policyfile.lock.json" }
|
|
39
|
+
|
|
40
|
+
let(:policyfile_lock_path) { File.join(working_dir, policyfile_lock_name) }
|
|
41
|
+
|
|
42
|
+
let(:ui) { TestHelpers::TestUI.new }
|
|
43
|
+
|
|
44
|
+
let(:install_service) { described_class.new(policyfile: policyfile_rb_name, ui: ui, root_dir: working_dir, overwrite: true) }
|
|
45
|
+
|
|
46
|
+
let(:storage_config) do
|
|
47
|
+
ChefDK::Policyfile::StorageConfig.new( cache_path: nil, relative_paths_root: local_cookbooks_root )
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
let(:policyfile_content) do
|
|
51
|
+
<<-EOH
|
|
52
|
+
default_source :community
|
|
53
|
+
name 'install-example'
|
|
54
|
+
|
|
55
|
+
run_list 'top-level'
|
|
56
|
+
|
|
57
|
+
cookbook 'top-level'
|
|
58
|
+
cookbook 'top-level-bis'
|
|
59
|
+
cookbook 'b', '>= 1.2.3'
|
|
60
|
+
EOH
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def cookbook_lock(name, version)
|
|
64
|
+
{
|
|
65
|
+
"version" => version,
|
|
66
|
+
"identifier" => Digest::SHA256.new.hexdigest(version),
|
|
67
|
+
"dotted_decimal_identifier" => "55385045718000942.66835911167097593.12604218968062",
|
|
68
|
+
"cache_key" => "#{name}-#{version}-supermarket.chef.io",
|
|
69
|
+
"origin" => "https://supermarket.chef.io:443/api/v1/cookbooks/#{name}/versions/#{version}/download",
|
|
70
|
+
"source_options" => {
|
|
71
|
+
"artifactserver" => "https://supermarket.chef.io:443/api/v1/cookbooks/#{name}/versions/#{version}/download",
|
|
72
|
+
"version" => version,
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
let(:policyfile_lock_content) do
|
|
78
|
+
{
|
|
79
|
+
"revision_id" => "b33cb73a52bee7254eb53138ee44",
|
|
80
|
+
"name" => "install-example",
|
|
81
|
+
"run_list" => [ "recipe[top-level::default]" ],
|
|
82
|
+
"cookbook_locks" => {
|
|
83
|
+
"top-level" => cookbook_lock("top-level", "1.2.0"),
|
|
84
|
+
"a" => cookbook_lock("a", "2.1.0"),
|
|
85
|
+
"b" => cookbook_lock("b", "1.2.3"),
|
|
86
|
+
"top-level-bis" => cookbook_lock("top-level-bis", "1.0.0"),
|
|
87
|
+
},
|
|
88
|
+
"default_attributes" => {},
|
|
89
|
+
"override_attributes" => {},
|
|
90
|
+
"solution_dependencies" => {
|
|
91
|
+
"Policyfile" => [
|
|
92
|
+
[ "top-level", "= 1.2.0" ],
|
|
93
|
+
[ "a", "= 2.1.0" ],
|
|
94
|
+
[ "b", "= 1.2.3" ],
|
|
95
|
+
[ "top-level-bis", "= 1.0.0" ],
|
|
96
|
+
],
|
|
97
|
+
"dependencies" => {
|
|
98
|
+
"top-level (1.2.0)" => [ [ "a", "~> 2.1" ], [ "b", "~> 1.0" ] ],
|
|
99
|
+
"a (2.1.0)" => [],
|
|
100
|
+
"b (1.2.3)" => [],
|
|
101
|
+
"top-level-bis (1.0.0)" => [],
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
}.to_json
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
context "when given one cookbook to update" do
|
|
108
|
+
before(:each) do
|
|
109
|
+
# stub access to Policyfile.rb and Policyfile.lock.json
|
|
110
|
+
expect(File).to receive(:exist?).at_least(:once).with(policyfile_rb_path).and_return(true)
|
|
111
|
+
expect(File).to receive(:exist?).at_least(:once).with(policyfile_lock_path).and_return(true)
|
|
112
|
+
|
|
113
|
+
expect(IO).to receive(:read).with(policyfile_rb_path).and_return(policyfile_content)
|
|
114
|
+
expect(IO).to receive(:read).with(policyfile_lock_path).and_return(policyfile_lock_content)
|
|
115
|
+
|
|
116
|
+
# lock generation is a no-op. Its behavior is already tested
|
|
117
|
+
# elsewhere. We only check constraints changes
|
|
118
|
+
expect(install_service).to receive(:generate_lock_and_install)
|
|
119
|
+
|
|
120
|
+
expect { install_service.run(["top-level"]) }.not_to raise_error
|
|
121
|
+
end
|
|
122
|
+
it "allows update on cookbook to update" do
|
|
123
|
+
expect(install_service.policyfile_compiler.dsl.cookbook_location_specs["top-level"].version_constraint.to_s).to eq(">= 0.0.0")
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it "does not update unrelated cookbooks" do
|
|
127
|
+
expect(install_service.policyfile_compiler.dsl.cookbook_location_specs["top-level-bis"].version_constraint.to_s).to eq("= 1.0.0")
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "allows update on dependencies" do
|
|
131
|
+
expect(install_service.policyfile_compiler.dsl.cookbook_location_specs["a"]).to be_nil
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "preserves existing constraints from Policyfile" do
|
|
135
|
+
expect(install_service.policyfile_compiler.dsl.cookbook_location_specs["b"].version_constraint.to_s).to eq(">= 1.2.3")
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
end
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require "spec_helper"
|
|
19
|
-
require "chef-dk/service_exception_inspectors/base"
|
|
20
|
-
|
|
21
|
-
describe ChefDK::ServiceExceptionInspectors::Base do
|
|
22
|
-
|
|
23
|
-
let(:message) { "something went wrong, oops" }
|
|
24
|
-
|
|
25
|
-
let(:exception) { StandardError.new(message) }
|
|
26
|
-
|
|
27
|
-
subject(:inspector) { described_class.new(exception) }
|
|
28
|
-
|
|
29
|
-
it "has an exception" do
|
|
30
|
-
expect(inspector.exception).to eq(exception)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
it "gives the exception's message" do
|
|
34
|
-
expect(inspector.message).to eq(message)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it "has no extended error information" do
|
|
38
|
-
expect(inspector.extended_error_info).to eq("")
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require "spec_helper"
|
|
19
|
+
require "chef-dk/service_exception_inspectors/base"
|
|
20
|
+
|
|
21
|
+
describe ChefDK::ServiceExceptionInspectors::Base do
|
|
22
|
+
|
|
23
|
+
let(:message) { "something went wrong, oops" }
|
|
24
|
+
|
|
25
|
+
let(:exception) { StandardError.new(message) }
|
|
26
|
+
|
|
27
|
+
subject(:inspector) { described_class.new(exception) }
|
|
28
|
+
|
|
29
|
+
it "has an exception" do
|
|
30
|
+
expect(inspector.exception).to eq(exception)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "gives the exception's message" do
|
|
34
|
+
expect(inspector.message).to eq(message)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "has no extended error information" do
|
|
38
|
+
expect(inspector.extended_error_info).to eq("")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
-
# License:: Apache License, Version 2.0
|
|
4
|
-
#
|
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
# you may not use this file except in compliance with the License.
|
|
7
|
-
# You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
# See the License for the specific language governing permissions and
|
|
15
|
-
# limitations under the License.
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require "spec_helper"
|
|
19
|
-
require "net/http"
|
|
20
|
-
require "chef/monkey_patches/net_http"
|
|
21
|
-
require "chef-dk/service_exception_inspectors/http"
|
|
22
|
-
|
|
23
|
-
describe ChefDK::ServiceExceptionInspectors::HTTP do
|
|
24
|
-
|
|
25
|
-
let(:message) { "something went wrong, oops" }
|
|
26
|
-
|
|
27
|
-
let(:response_body) { "" }
|
|
28
|
-
|
|
29
|
-
let(:request_headers) do
|
|
30
|
-
{
|
|
31
|
-
"content-type" => "application/json",
|
|
32
|
-
"accept" => "application/json",
|
|
33
|
-
}
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
let(:request_body) { "this is the request" }
|
|
37
|
-
|
|
38
|
-
let(:request) do
|
|
39
|
-
r = instance_double(Net::HTTP::Post,
|
|
40
|
-
method: "POST",
|
|
41
|
-
uri: nil,
|
|
42
|
-
path: "/organizations/chef-oss-dev/cookbooks",
|
|
43
|
-
body: request_body)
|
|
44
|
-
stub = allow(r).to(receive(:each_header))
|
|
45
|
-
request_headers.each { |k, v| stub.and_yield(k, v) }
|
|
46
|
-
r
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
let(:response_headers) do
|
|
50
|
-
{
|
|
51
|
-
"server" => "ngx_openresty",
|
|
52
|
-
"date" => "Wed, 29 Oct 2014 22:27:47 GMT",
|
|
53
|
-
}
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
let(:response) do
|
|
57
|
-
r = instance_double(Net::HTTPClientError,
|
|
58
|
-
code: "400",
|
|
59
|
-
message: "Bad Request",
|
|
60
|
-
body: response_body)
|
|
61
|
-
stub = allow(r).to(receive(:each_header))
|
|
62
|
-
response_headers.each { |k, v| stub.and_yield(k, v) }
|
|
63
|
-
r
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
let(:exception) do
|
|
67
|
-
Net::HTTPServerException.new(message, response).tap { |e| e.chef_rest_request = request }
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
subject(:inspector) { described_class.new(exception) }
|
|
71
|
-
|
|
72
|
-
it "has an exception" do
|
|
73
|
-
expect(inspector.exception).to eq(exception)
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
context "with a string response body" do
|
|
77
|
-
|
|
78
|
-
let(:response_body) { "No sir, I didn't like it" }
|
|
79
|
-
|
|
80
|
-
it "gives a customized exception message including the server response" do
|
|
81
|
-
expect(inspector.message).to eq("HTTP 400 Bad Request: No sir, I didn't like it")
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
context "with an empty response body" do
|
|
87
|
-
|
|
88
|
-
let(:response_body) { "" }
|
|
89
|
-
|
|
90
|
-
it "gives a customized exception message including the server response" do
|
|
91
|
-
expect(inspector.message).to eq("HTTP 400 Bad Request: (No explanation provided by server)")
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
context "with a JSON response body in the standard Chef Server format" do
|
|
97
|
-
|
|
98
|
-
let(:response_body) { %q[{"error":["Field 'name' invalid"]}] }
|
|
99
|
-
|
|
100
|
-
it "gives a customized exception message including the server response" do
|
|
101
|
-
expect(inspector.message).to eq("HTTP 400 Bad Request: Field 'name' invalid")
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
describe "showing the request and response in extended error info" do
|
|
107
|
-
|
|
108
|
-
let(:response_body) { "this is the response" }
|
|
109
|
-
|
|
110
|
-
it "shows the request in a format similar to HTTP messages" do
|
|
111
|
-
expected_request_string = <<-E
|
|
112
|
-
--- REQUEST DATA ----
|
|
113
|
-
POST /organizations/chef-oss-dev/cookbooks
|
|
114
|
-
content-type: application/json
|
|
115
|
-
accept: application/json
|
|
116
|
-
|
|
117
|
-
this is the request
|
|
118
|
-
|
|
119
|
-
E
|
|
120
|
-
expect(inspector.extended_error_info).to include(expected_request_string)
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it "shows the response in a format similar to HTTP messages" do
|
|
124
|
-
expected_response_string = <<-E
|
|
125
|
-
--- RESPONSE DATA ---
|
|
126
|
-
400 Bad Request
|
|
127
|
-
server: ngx_openresty
|
|
128
|
-
date: Wed, 29 Oct 2014 22:27:47 GMT
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
this is the response
|
|
132
|
-
E
|
|
133
|
-
expect(inspector.extended_error_info).to include(expected_response_string)
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
end
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require "spec_helper"
|
|
19
|
+
require "net/http"
|
|
20
|
+
require "chef/monkey_patches/net_http"
|
|
21
|
+
require "chef-dk/service_exception_inspectors/http"
|
|
22
|
+
|
|
23
|
+
describe ChefDK::ServiceExceptionInspectors::HTTP do
|
|
24
|
+
|
|
25
|
+
let(:message) { "something went wrong, oops" }
|
|
26
|
+
|
|
27
|
+
let(:response_body) { "" }
|
|
28
|
+
|
|
29
|
+
let(:request_headers) do
|
|
30
|
+
{
|
|
31
|
+
"content-type" => "application/json",
|
|
32
|
+
"accept" => "application/json",
|
|
33
|
+
}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
let(:request_body) { "this is the request" }
|
|
37
|
+
|
|
38
|
+
let(:request) do
|
|
39
|
+
r = instance_double(Net::HTTP::Post,
|
|
40
|
+
method: "POST",
|
|
41
|
+
uri: nil,
|
|
42
|
+
path: "/organizations/chef-oss-dev/cookbooks",
|
|
43
|
+
body: request_body)
|
|
44
|
+
stub = allow(r).to(receive(:each_header))
|
|
45
|
+
request_headers.each { |k, v| stub.and_yield(k, v) }
|
|
46
|
+
r
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
let(:response_headers) do
|
|
50
|
+
{
|
|
51
|
+
"server" => "ngx_openresty",
|
|
52
|
+
"date" => "Wed, 29 Oct 2014 22:27:47 GMT",
|
|
53
|
+
}
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
let(:response) do
|
|
57
|
+
r = instance_double(Net::HTTPClientError,
|
|
58
|
+
code: "400",
|
|
59
|
+
message: "Bad Request",
|
|
60
|
+
body: response_body)
|
|
61
|
+
stub = allow(r).to(receive(:each_header))
|
|
62
|
+
response_headers.each { |k, v| stub.and_yield(k, v) }
|
|
63
|
+
r
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
let(:exception) do
|
|
67
|
+
Net::HTTPServerException.new(message, response).tap { |e| e.chef_rest_request = request }
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
subject(:inspector) { described_class.new(exception) }
|
|
71
|
+
|
|
72
|
+
it "has an exception" do
|
|
73
|
+
expect(inspector.exception).to eq(exception)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
context "with a string response body" do
|
|
77
|
+
|
|
78
|
+
let(:response_body) { "No sir, I didn't like it" }
|
|
79
|
+
|
|
80
|
+
it "gives a customized exception message including the server response" do
|
|
81
|
+
expect(inspector.message).to eq("HTTP 400 Bad Request: No sir, I didn't like it")
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
context "with an empty response body" do
|
|
87
|
+
|
|
88
|
+
let(:response_body) { "" }
|
|
89
|
+
|
|
90
|
+
it "gives a customized exception message including the server response" do
|
|
91
|
+
expect(inspector.message).to eq("HTTP 400 Bad Request: (No explanation provided by server)")
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
context "with a JSON response body in the standard Chef Server format" do
|
|
97
|
+
|
|
98
|
+
let(:response_body) { %q[{"error":["Field 'name' invalid"]}] }
|
|
99
|
+
|
|
100
|
+
it "gives a customized exception message including the server response" do
|
|
101
|
+
expect(inspector.message).to eq("HTTP 400 Bad Request: Field 'name' invalid")
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe "showing the request and response in extended error info" do
|
|
107
|
+
|
|
108
|
+
let(:response_body) { "this is the response" }
|
|
109
|
+
|
|
110
|
+
it "shows the request in a format similar to HTTP messages" do
|
|
111
|
+
expected_request_string = <<-E
|
|
112
|
+
--- REQUEST DATA ----
|
|
113
|
+
POST /organizations/chef-oss-dev/cookbooks
|
|
114
|
+
content-type: application/json
|
|
115
|
+
accept: application/json
|
|
116
|
+
|
|
117
|
+
this is the request
|
|
118
|
+
|
|
119
|
+
E
|
|
120
|
+
expect(inspector.extended_error_info).to include(expected_request_string)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it "shows the response in a format similar to HTTP messages" do
|
|
124
|
+
expected_response_string = <<-E
|
|
125
|
+
--- RESPONSE DATA ---
|
|
126
|
+
400 Bad Request
|
|
127
|
+
server: ngx_openresty
|
|
128
|
+
date: Wed, 29 Oct 2014 22:27:47 GMT
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
this is the response
|
|
132
|
+
E
|
|
133
|
+
expect(inspector.extended_error_info).to include(expected_response_string)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
end
|