chef-dk 0.13.21 → 0.14.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +186 -186
- data/Gemfile +37 -14
- data/Gemfile.lock +178 -72
- data/LICENSE +201 -201
- data/README.md +11 -148
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +27 -27
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +288 -288
- 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 +2 -1
- data/acceptance/Gemfile.lock +39 -42
- 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/lib/chef-dk.rb +19 -19
- data/lib/chef-dk/authenticated_http.rb +40 -40
- data/lib/chef-dk/chef_runner.rb +107 -107
- data/lib/chef-dk/cli.rb +200 -200
- data/lib/chef-dk/command/base.rb +79 -79
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +116 -116
- data/lib/chef-dk/command/clean_policy_revisions.rb +113 -113
- data/lib/chef-dk/command/delete_policy.rb +122 -122
- data/lib/chef-dk/command/delete_policy_group.rb +122 -122
- data/lib/chef-dk/command/diff.rb +316 -316
- data/lib/chef-dk/command/env.rb +90 -90
- data/lib/chef-dk/command/exec.rb +45 -45
- data/lib/chef-dk/command/export.rb +157 -157
- data/lib/chef-dk/command/gem.rb +47 -47
- data/lib/chef-dk/command/generate.rb +120 -120
- data/lib/chef-dk/command/generator_commands.rb +83 -80
- data/lib/chef-dk/command/generator_commands/app.rb +107 -107
- data/lib/chef-dk/command/generator_commands/attribute.rb +37 -37
- data/lib/chef-dk/command/generator_commands/base.rb +148 -148
- data/lib/chef-dk/command/generator_commands/cookbook.rb +153 -153
- 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 +177 -177
- data/lib/chef-dk/command/generator_commands/lwrp.rb +36 -36
- data/lib/chef-dk/command/generator_commands/policyfile.rb +127 -127
- data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
- data/lib/chef-dk/command/generator_commands/repo.rb +125 -125
- data/lib/chef-dk/command/generator_commands/template.rb +46 -46
- data/lib/chef-dk/command/install.rb +121 -121
- data/lib/chef-dk/command/provision.rb +438 -438
- data/lib/chef-dk/command/push.rb +118 -118
- data/lib/chef-dk/command/push_archive.rb +126 -126
- data/lib/chef-dk/command/shell_init.rb +180 -180
- data/lib/chef-dk/command/show_policy.rb +165 -165
- data/lib/chef-dk/command/undelete.rb +155 -155
- data/lib/chef-dk/command/update.rb +148 -148
- data/lib/chef-dk/command/verify.rb +106 -29
- 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 +30 -1
- data/lib/chef-dk/configurable.rb +69 -69
- 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 +32 -32
- data/lib/chef-dk/exceptions.rb +129 -129
- data/lib/chef-dk/generator.rb +163 -163
- data/lib/chef-dk/helpers.rb +159 -159
- data/lib/chef-dk/pager.rb +106 -106
- data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -138
- data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +54 -54
- data/lib/chef-dk/policyfile/community_cookbook_source.rb +97 -97
- data/lib/chef-dk/policyfile/comparison_base.rb +124 -124
- 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 +22 -22
- data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +90 -90
- data/lib/chef-dk/policyfile/differ.rb +266 -266
- data/lib/chef-dk/policyfile/dsl.rb +261 -261
- data/lib/chef-dk/policyfile/lister.rb +232 -232
- data/lib/chef-dk/policyfile/null_cookbook_source.rb +45 -45
- data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
- data/lib/chef-dk/policyfile/reports/install.rb +70 -70
- data/lib/chef-dk/policyfile/reports/table_printer.rb +58 -58
- data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
- data/lib/chef-dk/policyfile/solution_dependencies.rb +298 -298
- data/lib/chef-dk/policyfile/storage_config.rb +100 -100
- data/lib/chef-dk/policyfile/undo_record.rb +142 -142
- data/lib/chef-dk/policyfile/undo_stack.rb +130 -130
- data/lib/chef-dk/policyfile/uploader.rb +213 -213
- data/lib/chef-dk/policyfile_compiler.rb +419 -419
- data/lib/chef-dk/policyfile_lock.rb +552 -552
- data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
- data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +125 -125
- data/lib/chef-dk/policyfile_services/export_repo.rb +421 -421
- data/lib/chef-dk/policyfile_services/install.rb +126 -126
- data/lib/chef-dk/policyfile_services/push.rb +114 -114
- data/lib/chef-dk/policyfile_services/push_archive.rb +204 -204
- data/lib/chef-dk/policyfile_services/rm_policy.rb +142 -142
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +86 -86
- data/lib/chef-dk/policyfile_services/show_policy.rb +237 -237
- data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
- data/lib/chef-dk/policyfile_services/update_attributes.rb +104 -104
- data/lib/chef-dk/service_exception_inspectors.rb +25 -25
- data/lib/chef-dk/service_exception_inspectors/base.rb +40 -40
- data/lib/chef-dk/service_exception_inspectors/http.rb +121 -121
- data/lib/chef-dk/service_exceptions.rb +143 -143
- data/lib/chef-dk/shell_out.rb +36 -36
- data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +102 -102
- 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/gitignore +16 -16
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +28 -28
- 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 +7 -7
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +3 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +58 -58
- 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/serverspec_spec_helper.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +2 -2
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +2 -2
- data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +97 -97
- data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +12 -12
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +117 -117
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +24 -24
- data/lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb +23 -23
- data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +8 -8
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +27 -27
- data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +67 -67
- 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.apache2.erb → 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/kitchen.yml.erb +21 -21
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +32 -32
- data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +7 -7
- 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 +20 -20
- data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +11 -11
- data/lib/chef-dk/skeletons/code_generator/templates/default/serverspec_default_spec.rb.erb +9 -9
- data/lib/chef-dk/ui.rb +58 -58
- data/lib/chef-dk/version.rb +1 -1
- data/lib/kitchen/provisioner/policyfile_zero.rb +195 -195
- data/omnibus_overrides.rb +19 -11
- 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 +130 -130
- data/spec/shared/fixture_cookbook_checksums.rb +47 -47
- 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/cli_spec.rb +357 -357
- data/spec/unit/command/base_spec.rb +173 -169
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +181 -181
- data/spec/unit/command/clean_policy_revisions_spec.rb +181 -181
- data/spec/unit/command/delete_policy_group_spec.rb +207 -207
- data/spec/unit/command/delete_policy_spec.rb +207 -207
- data/spec/unit/command/diff_spec.rb +312 -312
- data/spec/unit/command/env_spec.rb +52 -52
- data/spec/unit/command/exec_spec.rb +179 -179
- data/spec/unit/command/export_spec.rb +200 -200
- data/spec/unit/command/generate_spec.rb +142 -142
- data/spec/unit/command/generator_commands/app_spec.rb +169 -169
- data/spec/unit/command/generator_commands/attribute_spec.rb +32 -32
- data/spec/unit/command/generator_commands/base_spec.rb +136 -136
- data/spec/unit/command/generator_commands/cookbook_file_spec.rb +32 -32
- data/spec/unit/command/generator_commands/cookbook_spec.rb +450 -450
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +229 -229
- data/spec/unit/command/generator_commands/lwrp_spec.rb +32 -32
- data/spec/unit/command/generator_commands/policyfile_spec.rb +225 -225
- data/spec/unit/command/generator_commands/recipe_spec.rb +34 -34
- data/spec/unit/command/generator_commands/repo_spec.rb +374 -367
- data/spec/unit/command/generator_commands/template_spec.rb +32 -32
- data/spec/unit/command/install_spec.rb +179 -179
- data/spec/unit/command/provision_spec.rb +592 -592
- data/spec/unit/command/push_archive_spec.rb +153 -153
- data/spec/unit/command/push_spec.rb +199 -199
- data/spec/unit/command/shell_init_spec.rb +329 -329
- data/spec/unit/command/show_policy_spec.rb +235 -235
- data/spec/unit/command/undelete_spec.rb +246 -246
- data/spec/unit/command/update_spec.rb +275 -275
- data/spec/unit/command/verify_spec.rb +15 -6
- data/spec/unit/commands_map_spec.rb +57 -57
- data/spec/unit/component_test_spec.rb +128 -126
- data/spec/unit/configurable_spec.rb +41 -41
- data/spec/unit/cookbook_metadata_spec.rb +98 -98
- data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +83 -83
- 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/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 +36 -36
- 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 -120
- data/spec/unit/helpers_spec.rb +92 -92
- data/spec/unit/pager_spec.rb +119 -119
- data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -93
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +34 -34
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +84 -84
- data/spec/unit/policyfile/comparison_base_spec.rb +343 -343
- data/spec/unit/policyfile/cookbook_location_specification_spec.rb +277 -277
- data/spec/unit/policyfile/cookbook_locks_spec.rb +529 -529
- data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +130 -130
- data/spec/unit/policyfile/differ_spec.rb +687 -687
- data/spec/unit/policyfile/lister_spec.rb +272 -272
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +35 -35
- data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
- data/spec/unit/policyfile/reports/install_spec.rb +115 -115
- data/spec/unit/policyfile/reports/upload_spec.rb +96 -96
- data/spec/unit/policyfile/solution_dependencies_spec.rb +145 -145
- data/spec/unit/policyfile/storage_config_spec.rb +172 -172
- data/spec/unit/policyfile/undo_record_spec.rb +260 -260
- data/spec/unit/policyfile/undo_stack_spec.rb +266 -266
- data/spec/unit/policyfile/uploader_spec.rb +410 -410
- data/spec/unit/policyfile_demands_spec.rb +1203 -1203
- data/spec/unit/policyfile_evaluation_spec.rb +642 -642
- data/spec/unit/policyfile_lock_build_spec.rb +1056 -1056
- data/spec/unit/policyfile_lock_install_spec.rb +138 -138
- data/spec/unit/policyfile_lock_serialization_spec.rb +425 -425
- data/spec/unit/policyfile_lock_validation_spec.rb +611 -611
- data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +275 -275
- data/spec/unit/policyfile_services/export_repo_spec.rb +481 -481
- data/spec/unit/policyfile_services/install_spec.rb +211 -211
- data/spec/unit/policyfile_services/push_archive_spec.rb +378 -378
- data/spec/unit/policyfile_services/push_spec.rb +233 -233
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +241 -241
- data/spec/unit/policyfile_services/rm_policy_spec.rb +266 -266
- data/spec/unit/policyfile_services/show_policy_spec.rb +889 -889
- data/spec/unit/policyfile_services/undelete_spec.rb +304 -304
- data/spec/unit/policyfile_services/update_attributes_spec.rb +217 -217
- data/spec/unit/service_exception_inspectors/base_spec.rb +43 -43
- data/spec/unit/service_exception_inspectors/http_spec.rb +140 -140
- data/spec/unit/shell_out_spec.rb +34 -34
- data/spec/unit/tasks/helpers_spec.rb +75 -0
- data/tasks/bin/bundle-platform +0 -0
- data/tasks/bin/bundle-platform.bat +0 -0
- data/tasks/bin/create-override-gemfile +110 -0
- data/tasks/bundle.rb +27 -11
- data/tasks/bundle_util.rb +6 -5
- data/tasks/dependencies.rb +97 -122
- data/tasks/gemfile_util.rb +357 -66
- data/tasks/helpers.rb +47 -0
- data/tasks/version.rb +1 -5
- data/version_policy.rb +66 -41
- data/warning.txt +9 -9
- metadata +7 -5
- data/Gemfile.windows +0 -34
- data/Gemfile.windows.lock +0 -936
|
@@ -1,172 +1,172 @@
|
|
|
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/storage_config'
|
|
20
|
-
|
|
21
|
-
describe ChefDK::Policyfile::StorageConfig do
|
|
22
|
-
|
|
23
|
-
let(:config_options) { {} }
|
|
24
|
-
|
|
25
|
-
let(:storage_config) do
|
|
26
|
-
described_class.new(config_options)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
context "with explicit path options" do
|
|
30
|
-
|
|
31
|
-
let(:cache_path) do
|
|
32
|
-
File.expand_path("spec/unit/fixtures/cookbook_cache", project_root)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
let(:relative_paths_root) do
|
|
36
|
-
File.expand_path("spec/unit/fixtures/", project_root)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
let(:config_options) do
|
|
40
|
-
{ cache_path: cache_path, relative_paths_root: relative_paths_root }
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it "uses the provided option for relative_paths_root" do
|
|
44
|
-
expect(storage_config.relative_paths_root).to eq(relative_paths_root)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it "uses the provided cache_path" do
|
|
48
|
-
expect(storage_config.cache_path).to eq(cache_path)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
context "with default options" do
|
|
53
|
-
|
|
54
|
-
it "defaults to the CookbookOmnifetch configured cache path" do
|
|
55
|
-
expect(storage_config.cache_path).to eq(CookbookOmnifetch.storage_path)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it "defaults to the current working directory for relative_paths_root" do
|
|
59
|
-
expect(storage_config.relative_paths_root).to eq(Dir.pwd)
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
describe "updating storage config for policyfile location" do
|
|
64
|
-
|
|
65
|
-
before do
|
|
66
|
-
storage_config.use_policyfile("/path/to/Policyfile.rb")
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
it "updates the relative_paths_root to be relative to a policyfile" do
|
|
70
|
-
expect(storage_config.relative_paths_root).to eq("/path/to")
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it "stores the location of the policyfile" do
|
|
74
|
-
expect(storage_config.policyfile_filename).to eq("/path/to/Policyfile.rb")
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it "generates the location of the policyfile lock" do
|
|
78
|
-
expect(storage_config.policyfile_lock_filename).to eq("/path/to/Policyfile.lock.json")
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it "gives the expanded path to the policyfile" do
|
|
82
|
-
expect(storage_config.policyfile_expanded_path).to eq(File.expand_path('/path/to/Policyfile.rb'))
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
context "when the policyfile is given as a relative path" do
|
|
86
|
-
|
|
87
|
-
before do
|
|
88
|
-
storage_config.use_policyfile("Policyfile.rb")
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
it "updates the relative_paths_root to be relative to a policyfile" do
|
|
92
|
-
expect(storage_config.relative_paths_root).to eq(".")
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
it "stores the location of the policyfile" do
|
|
96
|
-
expect(storage_config.policyfile_filename).to eq("Policyfile.rb")
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
it "generates the location of the policyfile lock" do
|
|
100
|
-
expect(storage_config.policyfile_lock_filename).to eq("Policyfile.lock.json")
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
it "gives the expanded path to the policyfile" do
|
|
104
|
-
expect(storage_config.policyfile_expanded_path).to eq(File.expand_path("Policyfile.rb", "."))
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
context "when the policyfile file name doesn't have a .rb extension" do
|
|
110
|
-
|
|
111
|
-
it "raises an error" do
|
|
112
|
-
err_string = %q{Policyfile filenames must end with `.rb' extension (you gave: `Policyfile')}
|
|
113
|
-
expect { storage_config.use_policyfile("Policyfile") }.to raise_error(ChefDK::InvalidPolicyfileFilename, err_string)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
describe "updating storage config for policyfile lock location" do
|
|
122
|
-
|
|
123
|
-
before do
|
|
124
|
-
storage_config.use_policyfile_lock("/path/to/Policyfile.lock.json")
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
it "updates the relative_paths_root to be relative to a policyfile" do
|
|
128
|
-
expect(storage_config.relative_paths_root).to eq("/path/to")
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
it "stores the location of the policyfile lock" do
|
|
132
|
-
expect(storage_config.policyfile_lock_filename).to eq("/path/to/Policyfile.lock.json")
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
it "stores the location of the policyfile" do
|
|
136
|
-
expect(storage_config.policyfile_filename).to eq("/path/to/Policyfile.rb")
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
it "gives the expanded path to the policyfile lock" do
|
|
140
|
-
expect(storage_config.policyfile_lock_expanded_path).to eq(File.expand_path("/path/to/Policyfile.lock.json"))
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
context "when given a relative path to the policyfile lock" do
|
|
144
|
-
|
|
145
|
-
before do
|
|
146
|
-
storage_config.use_policyfile_lock("Policyfile.lock.json")
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
it "updates the relative_paths_root to be relative to a policyfile" do
|
|
150
|
-
expect(storage_config.relative_paths_root).to eq(".")
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
it "stores the location of the policyfile" do
|
|
154
|
-
expect(storage_config.policyfile_filename).to eq("Policyfile.rb")
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
it "generates the location of the policyfile lock" do
|
|
158
|
-
expect(storage_config.policyfile_lock_filename).to eq("Policyfile.lock.json")
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
it "gives the expanded path to the policyfile" do
|
|
162
|
-
expect(storage_config.policyfile_lock_expanded_path).to eq(File.expand_path("Policyfile.lock.json", "."))
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
end
|
|
172
|
-
|
|
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/storage_config'
|
|
20
|
+
|
|
21
|
+
describe ChefDK::Policyfile::StorageConfig do
|
|
22
|
+
|
|
23
|
+
let(:config_options) { {} }
|
|
24
|
+
|
|
25
|
+
let(:storage_config) do
|
|
26
|
+
described_class.new(config_options)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context "with explicit path options" do
|
|
30
|
+
|
|
31
|
+
let(:cache_path) do
|
|
32
|
+
File.expand_path("spec/unit/fixtures/cookbook_cache", project_root)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
let(:relative_paths_root) do
|
|
36
|
+
File.expand_path("spec/unit/fixtures/", project_root)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
let(:config_options) do
|
|
40
|
+
{ cache_path: cache_path, relative_paths_root: relative_paths_root }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "uses the provided option for relative_paths_root" do
|
|
44
|
+
expect(storage_config.relative_paths_root).to eq(relative_paths_root)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "uses the provided cache_path" do
|
|
48
|
+
expect(storage_config.cache_path).to eq(cache_path)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
context "with default options" do
|
|
53
|
+
|
|
54
|
+
it "defaults to the CookbookOmnifetch configured cache path" do
|
|
55
|
+
expect(storage_config.cache_path).to eq(CookbookOmnifetch.storage_path)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "defaults to the current working directory for relative_paths_root" do
|
|
59
|
+
expect(storage_config.relative_paths_root).to eq(Dir.pwd)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe "updating storage config for policyfile location" do
|
|
64
|
+
|
|
65
|
+
before do
|
|
66
|
+
storage_config.use_policyfile("/path/to/Policyfile.rb")
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "updates the relative_paths_root to be relative to a policyfile" do
|
|
70
|
+
expect(storage_config.relative_paths_root).to eq("/path/to")
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "stores the location of the policyfile" do
|
|
74
|
+
expect(storage_config.policyfile_filename).to eq("/path/to/Policyfile.rb")
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "generates the location of the policyfile lock" do
|
|
78
|
+
expect(storage_config.policyfile_lock_filename).to eq("/path/to/Policyfile.lock.json")
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "gives the expanded path to the policyfile" do
|
|
82
|
+
expect(storage_config.policyfile_expanded_path).to eq(File.expand_path('/path/to/Policyfile.rb'))
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
context "when the policyfile is given as a relative path" do
|
|
86
|
+
|
|
87
|
+
before do
|
|
88
|
+
storage_config.use_policyfile("Policyfile.rb")
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it "updates the relative_paths_root to be relative to a policyfile" do
|
|
92
|
+
expect(storage_config.relative_paths_root).to eq(".")
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "stores the location of the policyfile" do
|
|
96
|
+
expect(storage_config.policyfile_filename).to eq("Policyfile.rb")
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "generates the location of the policyfile lock" do
|
|
100
|
+
expect(storage_config.policyfile_lock_filename).to eq("Policyfile.lock.json")
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "gives the expanded path to the policyfile" do
|
|
104
|
+
expect(storage_config.policyfile_expanded_path).to eq(File.expand_path("Policyfile.rb", "."))
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
context "when the policyfile file name doesn't have a .rb extension" do
|
|
110
|
+
|
|
111
|
+
it "raises an error" do
|
|
112
|
+
err_string = %q{Policyfile filenames must end with `.rb' extension (you gave: `Policyfile')}
|
|
113
|
+
expect { storage_config.use_policyfile("Policyfile") }.to raise_error(ChefDK::InvalidPolicyfileFilename, err_string)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
describe "updating storage config for policyfile lock location" do
|
|
122
|
+
|
|
123
|
+
before do
|
|
124
|
+
storage_config.use_policyfile_lock("/path/to/Policyfile.lock.json")
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it "updates the relative_paths_root to be relative to a policyfile" do
|
|
128
|
+
expect(storage_config.relative_paths_root).to eq("/path/to")
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it "stores the location of the policyfile lock" do
|
|
132
|
+
expect(storage_config.policyfile_lock_filename).to eq("/path/to/Policyfile.lock.json")
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it "stores the location of the policyfile" do
|
|
136
|
+
expect(storage_config.policyfile_filename).to eq("/path/to/Policyfile.rb")
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
it "gives the expanded path to the policyfile lock" do
|
|
140
|
+
expect(storage_config.policyfile_lock_expanded_path).to eq(File.expand_path("/path/to/Policyfile.lock.json"))
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
context "when given a relative path to the policyfile lock" do
|
|
144
|
+
|
|
145
|
+
before do
|
|
146
|
+
storage_config.use_policyfile_lock("Policyfile.lock.json")
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
it "updates the relative_paths_root to be relative to a policyfile" do
|
|
150
|
+
expect(storage_config.relative_paths_root).to eq(".")
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it "stores the location of the policyfile" do
|
|
154
|
+
expect(storage_config.policyfile_filename).to eq("Policyfile.rb")
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it "generates the location of the policyfile lock" do
|
|
158
|
+
expect(storage_config.policyfile_lock_filename).to eq("Policyfile.lock.json")
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it "gives the expanded path to the policyfile" do
|
|
162
|
+
expect(storage_config.policyfile_lock_expanded_path).to eq(File.expand_path("Policyfile.lock.json", "."))
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
end
|
|
172
|
+
|
|
@@ -1,260 +1,260 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright:: Copyright (c) 2015 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/undo_record'
|
|
20
|
-
|
|
21
|
-
describe ChefDK::Policyfile::UndoRecord do
|
|
22
|
-
|
|
23
|
-
subject(:undo_record) { described_class.new }
|
|
24
|
-
|
|
25
|
-
let(:policy_revision) do
|
|
26
|
-
{
|
|
27
|
-
"name" => "appserver",
|
|
28
|
-
"revision_id" => "1111111111111111111111111111111111111111111111111111111111111111"
|
|
29
|
-
}
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
context "when empty" do
|
|
33
|
-
|
|
34
|
-
it "has an empty description" do
|
|
35
|
-
expect(undo_record.description).to eq("")
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "has an empty set of policy groups" do
|
|
39
|
-
expect(undo_record.policy_groups).to eq([])
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it "has an empty set of policy revisions" do
|
|
43
|
-
expect(undo_record.policy_revisions).to eq([])
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "converts to a serializable data structure" do
|
|
47
|
-
expected = {
|
|
48
|
-
"format_version" => 1,
|
|
49
|
-
"description" => "",
|
|
50
|
-
"backup_data" => {
|
|
51
|
-
"policy_groups" => [],
|
|
52
|
-
"policy_revisions" => []
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
expect(undo_record.for_serialization).to eq(expected)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
context "with policy data" do
|
|
60
|
-
|
|
61
|
-
before do
|
|
62
|
-
undo_record.description = "delete-policy-group preprod"
|
|
63
|
-
undo_record.add_policy_group("preprod")
|
|
64
|
-
undo_record.add_policy_revision("appserver", "preprod", policy_revision)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
it "has a description" do
|
|
68
|
-
expect(undo_record.description).to eq("delete-policy-group preprod")
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it "has a policy group" do
|
|
72
|
-
expect(undo_record.policy_groups).to eq( [ "preprod" ] )
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
it "has a policy revision" do
|
|
76
|
-
expect(undo_record.policy_revisions.size).to eq(1)
|
|
77
|
-
revision_info = undo_record.policy_revisions.first
|
|
78
|
-
expect(revision_info.policy_name).to eq("appserver")
|
|
79
|
-
expect(revision_info.policy_group).to eq("preprod")
|
|
80
|
-
expect(revision_info.data).to eq(policy_revision)
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
it "converts to a serializable data structure" do
|
|
84
|
-
expected = {
|
|
85
|
-
"format_version" => 1,
|
|
86
|
-
"description" => "delete-policy-group preprod",
|
|
87
|
-
"backup_data" => {
|
|
88
|
-
"policy_groups" => [ "preprod" ],
|
|
89
|
-
"policy_revisions" => [
|
|
90
|
-
{
|
|
91
|
-
"policy_name" => "appserver",
|
|
92
|
-
"policy_group" => "preprod",
|
|
93
|
-
"data" => policy_revision
|
|
94
|
-
}
|
|
95
|
-
]
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
expect(undo_record.for_serialization).to eq(expected)
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
describe "loading from serialized data" do
|
|
104
|
-
|
|
105
|
-
context "with invalid data" do
|
|
106
|
-
|
|
107
|
-
context "with an invalid object type" do
|
|
108
|
-
|
|
109
|
-
let(:serialized_data) { [] }
|
|
110
|
-
|
|
111
|
-
it "raises an error" do
|
|
112
|
-
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
context "when required top-level keys aren't present" do
|
|
118
|
-
|
|
119
|
-
let(:serialized_data) { {} }
|
|
120
|
-
|
|
121
|
-
it "raises an error" do
|
|
122
|
-
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
context "when backup_data is an invalid type" do
|
|
128
|
-
|
|
129
|
-
let(:serialized_data) do
|
|
130
|
-
{
|
|
131
|
-
"format_version" => 1,
|
|
132
|
-
"description" => "delete-policy-group preprod",
|
|
133
|
-
"backup_data" => []
|
|
134
|
-
}
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
it "raises an error" do
|
|
138
|
-
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
context "when backup_data is missing required fields" do
|
|
144
|
-
|
|
145
|
-
let(:serialized_data) do
|
|
146
|
-
{
|
|
147
|
-
"format_version" => 1,
|
|
148
|
-
"description" => "delete-policy-group preprod",
|
|
149
|
-
"backup_data" => {}
|
|
150
|
-
}
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
it "raises an error" do
|
|
154
|
-
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
context "when backup_data has invalid policy_groups data" do
|
|
160
|
-
|
|
161
|
-
let(:serialized_data) do
|
|
162
|
-
{
|
|
163
|
-
"format_version" => 1,
|
|
164
|
-
"description" => "delete-policy-group preprod",
|
|
165
|
-
"backup_data" => {
|
|
166
|
-
"policy_groups" => nil,
|
|
167
|
-
"policy_revisions" => []
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
it "raises an error" do
|
|
173
|
-
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
context "when backup_data has and invalid type for policy_revisions" do
|
|
179
|
-
|
|
180
|
-
let(:serialized_data) do
|
|
181
|
-
{
|
|
182
|
-
"format_version" => 1,
|
|
183
|
-
"description" => "delete-policy-group preprod",
|
|
184
|
-
"backup_data" => {
|
|
185
|
-
"policy_groups" => [],
|
|
186
|
-
"policy_revisions" => nil
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
it "raises an error" do
|
|
192
|
-
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
context "when the backup_data has an invalid item in policy revisions" do
|
|
198
|
-
|
|
199
|
-
let(:serialized_data) do
|
|
200
|
-
{
|
|
201
|
-
"format_version" => 1,
|
|
202
|
-
"description" => "delete-policy-group preprod",
|
|
203
|
-
"backup_data" => {
|
|
204
|
-
"policy_groups" => [],
|
|
205
|
-
"policy_revisions" => [ nil ]
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
it "raises an error" do
|
|
211
|
-
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
end
|
|
215
|
-
end
|
|
216
|
-
|
|
217
|
-
context "with valid data" do
|
|
218
|
-
let(:serialized_data) do
|
|
219
|
-
{
|
|
220
|
-
"format_version" => 1,
|
|
221
|
-
"description" => "delete-policy-group preprod",
|
|
222
|
-
"backup_data" => {
|
|
223
|
-
"policy_groups" => [ "preprod" ],
|
|
224
|
-
"policy_revisions" => [
|
|
225
|
-
{
|
|
226
|
-
"policy_name" => "appserver",
|
|
227
|
-
"policy_group" => "preprod",
|
|
228
|
-
"data" => policy_revision
|
|
229
|
-
}
|
|
230
|
-
]
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
before do
|
|
236
|
-
undo_record.load(serialized_data)
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
it "has a policy group" do
|
|
240
|
-
expect(undo_record.policy_groups).to eq( [ "preprod" ] )
|
|
241
|
-
end
|
|
242
|
-
|
|
243
|
-
it "has a policy revision" do
|
|
244
|
-
expect(undo_record.policy_revisions.size).to eq(1)
|
|
245
|
-
revision_info = undo_record.policy_revisions.first
|
|
246
|
-
expect(revision_info.policy_name).to eq("appserver")
|
|
247
|
-
expect(revision_info.policy_group).to eq("preprod")
|
|
248
|
-
expect(revision_info.data).to eq(policy_revision)
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
it "converts to a serializable data structure" do
|
|
252
|
-
expect(undo_record.for_serialization).to eq(serialized_data)
|
|
253
|
-
end
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
end
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
end
|
|
260
|
-
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright (c) 2015 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/undo_record'
|
|
20
|
+
|
|
21
|
+
describe ChefDK::Policyfile::UndoRecord do
|
|
22
|
+
|
|
23
|
+
subject(:undo_record) { described_class.new }
|
|
24
|
+
|
|
25
|
+
let(:policy_revision) do
|
|
26
|
+
{
|
|
27
|
+
"name" => "appserver",
|
|
28
|
+
"revision_id" => "1111111111111111111111111111111111111111111111111111111111111111"
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context "when empty" do
|
|
33
|
+
|
|
34
|
+
it "has an empty description" do
|
|
35
|
+
expect(undo_record.description).to eq("")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "has an empty set of policy groups" do
|
|
39
|
+
expect(undo_record.policy_groups).to eq([])
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "has an empty set of policy revisions" do
|
|
43
|
+
expect(undo_record.policy_revisions).to eq([])
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "converts to a serializable data structure" do
|
|
47
|
+
expected = {
|
|
48
|
+
"format_version" => 1,
|
|
49
|
+
"description" => "",
|
|
50
|
+
"backup_data" => {
|
|
51
|
+
"policy_groups" => [],
|
|
52
|
+
"policy_revisions" => []
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
expect(undo_record.for_serialization).to eq(expected)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
context "with policy data" do
|
|
60
|
+
|
|
61
|
+
before do
|
|
62
|
+
undo_record.description = "delete-policy-group preprod"
|
|
63
|
+
undo_record.add_policy_group("preprod")
|
|
64
|
+
undo_record.add_policy_revision("appserver", "preprod", policy_revision)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "has a description" do
|
|
68
|
+
expect(undo_record.description).to eq("delete-policy-group preprod")
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "has a policy group" do
|
|
72
|
+
expect(undo_record.policy_groups).to eq( [ "preprod" ] )
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "has a policy revision" do
|
|
76
|
+
expect(undo_record.policy_revisions.size).to eq(1)
|
|
77
|
+
revision_info = undo_record.policy_revisions.first
|
|
78
|
+
expect(revision_info.policy_name).to eq("appserver")
|
|
79
|
+
expect(revision_info.policy_group).to eq("preprod")
|
|
80
|
+
expect(revision_info.data).to eq(policy_revision)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "converts to a serializable data structure" do
|
|
84
|
+
expected = {
|
|
85
|
+
"format_version" => 1,
|
|
86
|
+
"description" => "delete-policy-group preprod",
|
|
87
|
+
"backup_data" => {
|
|
88
|
+
"policy_groups" => [ "preprod" ],
|
|
89
|
+
"policy_revisions" => [
|
|
90
|
+
{
|
|
91
|
+
"policy_name" => "appserver",
|
|
92
|
+
"policy_group" => "preprod",
|
|
93
|
+
"data" => policy_revision
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
expect(undo_record.for_serialization).to eq(expected)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
describe "loading from serialized data" do
|
|
104
|
+
|
|
105
|
+
context "with invalid data" do
|
|
106
|
+
|
|
107
|
+
context "with an invalid object type" do
|
|
108
|
+
|
|
109
|
+
let(:serialized_data) { [] }
|
|
110
|
+
|
|
111
|
+
it "raises an error" do
|
|
112
|
+
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
context "when required top-level keys aren't present" do
|
|
118
|
+
|
|
119
|
+
let(:serialized_data) { {} }
|
|
120
|
+
|
|
121
|
+
it "raises an error" do
|
|
122
|
+
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
context "when backup_data is an invalid type" do
|
|
128
|
+
|
|
129
|
+
let(:serialized_data) do
|
|
130
|
+
{
|
|
131
|
+
"format_version" => 1,
|
|
132
|
+
"description" => "delete-policy-group preprod",
|
|
133
|
+
"backup_data" => []
|
|
134
|
+
}
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
it "raises an error" do
|
|
138
|
+
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
context "when backup_data is missing required fields" do
|
|
144
|
+
|
|
145
|
+
let(:serialized_data) do
|
|
146
|
+
{
|
|
147
|
+
"format_version" => 1,
|
|
148
|
+
"description" => "delete-policy-group preprod",
|
|
149
|
+
"backup_data" => {}
|
|
150
|
+
}
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it "raises an error" do
|
|
154
|
+
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
context "when backup_data has invalid policy_groups data" do
|
|
160
|
+
|
|
161
|
+
let(:serialized_data) do
|
|
162
|
+
{
|
|
163
|
+
"format_version" => 1,
|
|
164
|
+
"description" => "delete-policy-group preprod",
|
|
165
|
+
"backup_data" => {
|
|
166
|
+
"policy_groups" => nil,
|
|
167
|
+
"policy_revisions" => []
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
it "raises an error" do
|
|
173
|
+
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
context "when backup_data has and invalid type for policy_revisions" do
|
|
179
|
+
|
|
180
|
+
let(:serialized_data) do
|
|
181
|
+
{
|
|
182
|
+
"format_version" => 1,
|
|
183
|
+
"description" => "delete-policy-group preprod",
|
|
184
|
+
"backup_data" => {
|
|
185
|
+
"policy_groups" => [],
|
|
186
|
+
"policy_revisions" => nil
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
it "raises an error" do
|
|
192
|
+
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
context "when the backup_data has an invalid item in policy revisions" do
|
|
198
|
+
|
|
199
|
+
let(:serialized_data) do
|
|
200
|
+
{
|
|
201
|
+
"format_version" => 1,
|
|
202
|
+
"description" => "delete-policy-group preprod",
|
|
203
|
+
"backup_data" => {
|
|
204
|
+
"policy_groups" => [],
|
|
205
|
+
"policy_revisions" => [ nil ]
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
it "raises an error" do
|
|
211
|
+
expect { undo_record.load(serialized_data) }.to raise_error(ChefDK::InvalidUndoRecord)
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
context "with valid data" do
|
|
218
|
+
let(:serialized_data) do
|
|
219
|
+
{
|
|
220
|
+
"format_version" => 1,
|
|
221
|
+
"description" => "delete-policy-group preprod",
|
|
222
|
+
"backup_data" => {
|
|
223
|
+
"policy_groups" => [ "preprod" ],
|
|
224
|
+
"policy_revisions" => [
|
|
225
|
+
{
|
|
226
|
+
"policy_name" => "appserver",
|
|
227
|
+
"policy_group" => "preprod",
|
|
228
|
+
"data" => policy_revision
|
|
229
|
+
}
|
|
230
|
+
]
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
before do
|
|
236
|
+
undo_record.load(serialized_data)
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
it "has a policy group" do
|
|
240
|
+
expect(undo_record.policy_groups).to eq( [ "preprod" ] )
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
it "has a policy revision" do
|
|
244
|
+
expect(undo_record.policy_revisions.size).to eq(1)
|
|
245
|
+
revision_info = undo_record.policy_revisions.first
|
|
246
|
+
expect(revision_info.policy_name).to eq("appserver")
|
|
247
|
+
expect(revision_info.policy_group).to eq("preprod")
|
|
248
|
+
expect(revision_info.data).to eq(policy_revision)
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
it "converts to a serializable data structure" do
|
|
252
|
+
expect(undo_record.for_serialization).to eq(serialized_data)
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
end
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
end
|
|
260
|
+
|