chef-dk 3.3.23 → 3.4.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +7 -7
- data/Gemfile.lock +91 -82
- data/lib/chef-dk/cli.rb +13 -13
- data/lib/chef-dk/command/base.rb +8 -8
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +10 -10
- data/lib/chef-dk/command/clean_policy_revisions.rb +9 -9
- data/lib/chef-dk/command/delete_policy.rb +9 -9
- data/lib/chef-dk/command/delete_policy_group.rb +9 -9
- data/lib/chef-dk/command/diff.rb +35 -35
- data/lib/chef-dk/command/export.rb +11 -11
- data/lib/chef-dk/command/generate.rb +3 -3
- data/lib/chef-dk/command/generator_commands.rb +24 -24
- data/lib/chef-dk/command/generator_commands/build_cookbook.rb +3 -3
- data/lib/chef-dk/command/generator_commands/chef_exts/generator_desc_resource.rb +1 -1
- data/lib/chef-dk/command/generator_commands/cookbook.rb +3 -3
- data/lib/chef-dk/command/generator_commands/cookbook_file.rb +3 -3
- data/lib/chef-dk/command/generator_commands/generator_generator.rb +5 -5
- data/lib/chef-dk/command/generator_commands/template.rb +3 -3
- data/lib/chef-dk/command/install.rb +11 -11
- data/lib/chef-dk/command/provision.rb +32 -32
- data/lib/chef-dk/command/push.rb +9 -9
- data/lib/chef-dk/command/push_archive.rb +9 -9
- data/lib/chef-dk/command/shell_init.rb +21 -21
- data/lib/chef-dk/command/show_policy.rb +11 -11
- data/lib/chef-dk/command/undelete.rb +17 -17
- data/lib/chef-dk/command/update.rb +12 -12
- data/lib/chef-dk/command/verify.rb +63 -63
- data/lib/chef-dk/component_test.rb +3 -3
- data/lib/chef-dk/exceptions.rb +5 -5
- data/lib/chef-dk/generator.rb +61 -61
- data/lib/chef-dk/helpers.rb +1 -1
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +1 -1
- data/lib/chef-dk/policyfile/cookbook_locks.rb +1 -1
- data/lib/chef-dk/policyfile/git_lock_fetcher.rb +7 -7
- data/lib/chef-dk/policyfile/policyfile_location_specification.rb +1 -1
- data/lib/chef-dk/policyfile/uploader.rb +4 -4
- data/lib/chef-dk/policyfile_compiler.rb +1 -1
- data/lib/chef-dk/policyfile_services/export_repo.rb +49 -49
- data/lib/chef-dk/policyfile_services/install.rb +3 -3
- data/lib/chef-dk/policyfile_services/push_archive.rb +5 -5
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +1 -1
- data/lib/chef-dk/policyfile_services/update_attributes.rb +2 -2
- data/lib/chef-dk/service_exception_inspectors/http.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +6 -6
- data/lib/chef-dk/version.rb +1 -1
- data/lib/kitchen/provisioner/policyfile_zero.rb +9 -9
- data/omnibus_overrides.rb +1 -1
- data/spec/spec_helper.rb +3 -3
- data/spec/unit/cli_spec.rb +9 -9
- data/spec/unit/command/base_spec.rb +25 -25
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +6 -6
- data/spec/unit/command/clean_policy_revisions_spec.rb +6 -6
- data/spec/unit/command/delete_policy_group_spec.rb +6 -6
- data/spec/unit/command/delete_policy_spec.rb +6 -6
- data/spec/unit/command/export_spec.rb +10 -10
- data/spec/unit/command/generate_spec.rb +5 -5
- data/spec/unit/command/generator_commands/build_cookbook_spec.rb +15 -15
- data/spec/unit/command/generator_commands/cookbook_spec.rb +174 -174
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +5 -5
- data/spec/unit/command/generator_commands/policyfile_spec.rb +15 -15
- data/spec/unit/command/generator_commands/repo_spec.rb +16 -16
- data/spec/unit/command/install_spec.rb +15 -15
- data/spec/unit/command/provision_spec.rb +25 -25
- data/spec/unit/command/push_spec.rb +12 -12
- data/spec/unit/command/shell_init_spec.rb +59 -59
- data/spec/unit/command/show_policy_spec.rb +6 -6
- data/spec/unit/command/undelete_spec.rb +6 -6
- data/spec/unit/command/update_spec.rb +30 -30
- data/spec/unit/fixtures/command/cli_test_command.rb +1 -1
- data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +41 -41
- data/spec/unit/policyfile/comparison_base_spec.rb +38 -38
- data/spec/unit/policyfile/cookbook_locks_spec.rb +3 -3
- data/spec/unit/policyfile/differ_spec.rb +361 -361
- data/spec/unit/policyfile/git_lock_fetcher_spec.rb +34 -34
- data/spec/unit/policyfile/included_policies_cookbook_source_spec.rb +6 -6
- data/spec/unit/policyfile/local_lock_fetcher_spec.rb +35 -35
- data/spec/unit/policyfile/lock_applier_spec.rb +6 -6
- data/spec/unit/policyfile/reports/upload_spec.rb +5 -5
- data/spec/unit/policyfile/uploader_spec.rb +27 -27
- data/spec/unit/policyfile_demands_spec.rb +84 -84
- data/spec/unit/policyfile_evaluation_spec.rb +14 -14
- data/spec/unit/policyfile_includes_spec.rb +1 -1
- data/spec/unit/policyfile_install_with_includes_spec.rb +3 -3
- data/spec/unit/policyfile_lock_build_spec.rb +58 -58
- data/spec/unit/policyfile_lock_validation_spec.rb +108 -108
- data/spec/unit/policyfile_services/clean_policies_spec.rb +12 -12
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +9 -9
- data/spec/unit/policyfile_services/export_repo_spec.rb +64 -64
- data/spec/unit/policyfile_services/install_spec.rb +4 -4
- data/spec/unit/policyfile_services/push_archive_spec.rb +41 -41
- data/spec/unit/policyfile_services/push_spec.rb +38 -38
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +12 -12
- data/spec/unit/policyfile_services/rm_policy_spec.rb +6 -6
- data/spec/unit/policyfile_services/show_policy_spec.rb +161 -161
- data/spec/unit/policyfile_services/undelete_spec.rb +13 -13
- data/spec/unit/policyfile_services/update_attributes_spec.rb +6 -6
- data/spec/unit/policyfile_services/update_spec.rb +7 -7
- data/spec/unit/service_exception_inspectors/http_spec.rb +12 -12
- metadata +2 -2
|
@@ -29,41 +29,41 @@ describe ChefDK::Policyfile::GitLockFetcher do
|
|
|
29
29
|
let(:repo) { "https://github.com/monkeynews/bananas" }
|
|
30
30
|
|
|
31
31
|
let(:minimal_lockfile_json) do
|
|
32
|
-
|
|
33
|
-
{
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
32
|
+
<<~E
|
|
33
|
+
{
|
|
34
|
+
"revision_id": "#{revision_id}",
|
|
35
|
+
"name": "install-example",
|
|
36
|
+
"run_list": [
|
|
37
|
+
"recipe[#{cookbook_name}::default]"
|
|
38
|
+
],
|
|
39
|
+
"cookbook_locks": {
|
|
40
|
+
"#{cookbook_name}": {
|
|
41
|
+
"version": "2.3.4",
|
|
42
|
+
"identifier": "#{identifier}",
|
|
43
|
+
"dotted_decimal_identifier": "70567763561641081.489844270461035.258281553147148",
|
|
44
|
+
"cache_key": "#{cookbook_name}-#{git_revision}",
|
|
45
|
+
"source_options": {
|
|
46
|
+
"git": "#{repo}",
|
|
47
|
+
"revision": "#{git_revision}"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"default_attributes": {},
|
|
52
|
+
"override_attributes": {},
|
|
53
|
+
"solution_dependencies": {
|
|
54
|
+
"Policyfile": [
|
|
55
|
+
[
|
|
56
|
+
"#{cookbook_name}",
|
|
57
|
+
">= 0.0.0"
|
|
58
|
+
]
|
|
59
|
+
],
|
|
60
|
+
"dependencies": {
|
|
61
|
+
"#{cookbook_name} (2.3.4)": [
|
|
62
|
+
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
}
|
|
48
66
|
}
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
"default_attributes": {},
|
|
52
|
-
"override_attributes": {},
|
|
53
|
-
"solution_dependencies": {
|
|
54
|
-
"Policyfile": [
|
|
55
|
-
[
|
|
56
|
-
"#{cookbook_name}",
|
|
57
|
-
">= 0.0.0"
|
|
58
|
-
]
|
|
59
|
-
],
|
|
60
|
-
"dependencies": {
|
|
61
|
-
"#{cookbook_name} (2.3.4)": [
|
|
62
|
-
|
|
63
|
-
]
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
67
|
E
|
|
68
68
|
end
|
|
69
69
|
|
|
@@ -124,14 +124,14 @@ describe ChefDK::Policyfile::IncludedPoliciesCookbookSource do
|
|
|
124
124
|
end
|
|
125
125
|
|
|
126
126
|
let(:policy1_location_spec) do
|
|
127
|
-
ChefDK::Policyfile::PolicyfileLocationSpecification.new("policy1", { :
|
|
127
|
+
ChefDK::Policyfile::PolicyfileLocationSpecification.new("policy1", { path: "somelocation" }, nil).tap do |spec|
|
|
128
128
|
allow(spec).to receive(:valid?).and_return(true)
|
|
129
129
|
allow(spec).to receive(:fetcher).and_return(policy1_fetcher)
|
|
130
130
|
end
|
|
131
131
|
end
|
|
132
132
|
|
|
133
133
|
let(:policy2_location_spec) do
|
|
134
|
-
ChefDK::Policyfile::PolicyfileLocationSpecification.new("policy2", { :
|
|
134
|
+
ChefDK::Policyfile::PolicyfileLocationSpecification.new("policy2", { path: "somelocation" }, nil).tap do |spec|
|
|
135
135
|
allow(spec).to receive(:valid?).and_return(true)
|
|
136
136
|
allow(spec).to receive(:fetcher).and_return(policy2_fetcher)
|
|
137
137
|
end
|
|
@@ -168,8 +168,8 @@ describe ChefDK::Policyfile::IncludedPoliciesCookbookSource do
|
|
|
168
168
|
end
|
|
169
169
|
|
|
170
170
|
it "returns the correct source options when the cookbook is included" do
|
|
171
|
-
expect(cookbook_source.source_options_for("cookbookA", "2.0.0")).to eq({ :
|
|
172
|
-
expect(cookbook_source.source_options_for("cookbookB", "1.0.0")).to eq({ :
|
|
171
|
+
expect(cookbook_source.source_options_for("cookbookA", "2.0.0")).to eq({ version: "2.0.0" })
|
|
172
|
+
expect(cookbook_source.source_options_for("cookbookB", "1.0.0")).to eq({ version: "1.0.0" })
|
|
173
173
|
end
|
|
174
174
|
|
|
175
175
|
it "has a universe with the used cookbooks" do
|
|
@@ -197,8 +197,8 @@ describe ChefDK::Policyfile::IncludedPoliciesCookbookSource do
|
|
|
197
197
|
end
|
|
198
198
|
|
|
199
199
|
it "returns the correct source options when the cookbook is included" do
|
|
200
|
-
expect(cookbook_source.source_options_for("cookbookA", "2.0.0")).to eq({ :
|
|
201
|
-
expect(cookbook_source.source_options_for("cookbookB", "1.0.0")).to eq({ :
|
|
200
|
+
expect(cookbook_source.source_options_for("cookbookA", "2.0.0")).to eq({ version: "2.0.0" })
|
|
201
|
+
expect(cookbook_source.source_options_for("cookbookB", "1.0.0")).to eq({ version: "1.0.0" })
|
|
202
202
|
end
|
|
203
203
|
|
|
204
204
|
it "has a universe with the used cookbooks" do
|
|
@@ -21,42 +21,42 @@ require "chef-dk/policyfile/local_lock_fetcher"
|
|
|
21
21
|
describe ChefDK::Policyfile::LocalLockFetcher do
|
|
22
22
|
|
|
23
23
|
let(:minimal_lockfile_json) do
|
|
24
|
-
|
|
25
|
-
{
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
24
|
+
<<~E
|
|
25
|
+
{
|
|
26
|
+
"revision_id": "6fe753184c8946052d3231bb4212116df28d89a3a5f7ae52832ad408419dd5eb",
|
|
27
|
+
"name": "install-example",
|
|
28
|
+
"run_list": [
|
|
29
|
+
"recipe[local-cookbook::default]"
|
|
30
|
+
],
|
|
31
|
+
"cookbook_locks": {
|
|
32
|
+
"local-cookbook": {
|
|
33
|
+
"version": "2.3.4",
|
|
34
|
+
"identifier": "fab501cfaf747901bd82c1bc706beae7dc3a350c",
|
|
35
|
+
"dotted_decimal_identifier": "70567763561641081.489844270461035.258281553147148",
|
|
36
|
+
"source": "cookbooks/local-cookbook",
|
|
37
|
+
"cache_key": null,
|
|
38
|
+
"scm_info": null,
|
|
39
|
+
"source_options": {
|
|
40
|
+
"path": "../cookbooks/local-cookbook"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"default_attributes": {},
|
|
45
|
+
"override_attributes": {},
|
|
46
|
+
"solution_dependencies": {
|
|
47
|
+
"Policyfile": [
|
|
48
|
+
[
|
|
49
|
+
"local-cookbook",
|
|
50
|
+
">= 0.0.0"
|
|
51
|
+
]
|
|
52
|
+
],
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"local-cookbook (2.3.4)": [
|
|
55
|
+
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
}
|
|
41
59
|
}
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
"default_attributes": {},
|
|
45
|
-
"override_attributes": {},
|
|
46
|
-
"solution_dependencies": {
|
|
47
|
-
"Policyfile": [
|
|
48
|
-
[
|
|
49
|
-
"local-cookbook",
|
|
50
|
-
">= 0.0.0"
|
|
51
|
-
]
|
|
52
|
-
],
|
|
53
|
-
"dependencies": {
|
|
54
|
-
"local-cookbook (2.3.4)": [
|
|
55
|
-
|
|
56
|
-
]
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
60
|
E
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -79,9 +79,9 @@ describe ChefDK::Policyfile::LockApplier do
|
|
|
79
79
|
it "does not provide the locked source options for that policy" do
|
|
80
80
|
expect(included_policy_1).not_to receive(:apply_locked_source_options)
|
|
81
81
|
expect(included_policy_2).to receive(:apply_locked_source_options).with(included_policy_lock_2["source_options"])
|
|
82
|
-
lock_applier
|
|
83
|
-
with_unlocked_policies(["policy1"])
|
|
84
|
-
apply!
|
|
82
|
+
lock_applier
|
|
83
|
+
.with_unlocked_policies(["policy1"])
|
|
84
|
+
.apply!
|
|
85
85
|
end
|
|
86
86
|
end
|
|
87
87
|
|
|
@@ -92,9 +92,9 @@ describe ChefDK::Policyfile::LockApplier do
|
|
|
92
92
|
it "does not provide locked source options for any policies" do
|
|
93
93
|
expect(included_policy_1).not_to receive(:apply_locked_source_options)
|
|
94
94
|
expect(included_policy_2).not_to receive(:apply_locked_source_options).with(included_policy_lock_2["source_options"])
|
|
95
|
-
lock_applier
|
|
96
|
-
with_unlocked_policies(:all)
|
|
97
|
-
apply!
|
|
95
|
+
lock_applier
|
|
96
|
+
.with_unlocked_policies(:all)
|
|
97
|
+
.apply!
|
|
98
98
|
end
|
|
99
99
|
end
|
|
100
100
|
end
|
|
@@ -80,11 +80,11 @@ describe ChefDK::Policyfile::Reports::Upload do
|
|
|
80
80
|
it "prints a table showing the re-used and uploaded cookbooks" do
|
|
81
81
|
upload_report.show
|
|
82
82
|
|
|
83
|
-
expected_output =
|
|
84
|
-
Using short-name 10.11.12 (49582c3d)
|
|
85
|
-
Using a-longer-named-cookbook 1.0.0 (e4ac353b)
|
|
86
|
-
Uploaded foo 1.2.42 (cb61daeb)
|
|
87
|
-
Uploaded barbazqux 12.34.5678 (1241ea6f)
|
|
83
|
+
expected_output = <<~E
|
|
84
|
+
Using short-name 10.11.12 (49582c3d)
|
|
85
|
+
Using a-longer-named-cookbook 1.0.0 (e4ac353b)
|
|
86
|
+
Uploaded foo 1.2.42 (cb61daeb)
|
|
87
|
+
Uploaded barbazqux 12.34.5678 (1241ea6f)
|
|
88
88
|
E
|
|
89
89
|
expect(ui.output).to eq(expected_output)
|
|
90
90
|
end
|
|
@@ -114,15 +114,15 @@ describe ChefDK::Policyfile::Uploader do
|
|
|
114
114
|
|
|
115
115
|
allow(cookbook_version).to receive(:identifier=).with(lock.identifier)
|
|
116
116
|
|
|
117
|
-
allow(ChefDK::Policyfile::ReadCookbookForCompatModeUpload)
|
|
118
|
-
to receive(:load)
|
|
119
|
-
with(name, dotted_decimal_id, cache_path)
|
|
120
|
-
and_return(cookbook_version)
|
|
117
|
+
allow(ChefDK::Policyfile::ReadCookbookForCompatModeUpload)
|
|
118
|
+
.to receive(:load)
|
|
119
|
+
.with(name, dotted_decimal_id, cache_path)
|
|
120
|
+
.and_return(cookbook_version)
|
|
121
121
|
|
|
122
|
-
allow(ChefDK::Policyfile::CookbookLoaderWithChefignore)
|
|
123
|
-
to receive(:load)
|
|
124
|
-
with(name, cache_path)
|
|
125
|
-
and_return(cookbook_version)
|
|
122
|
+
allow(ChefDK::Policyfile::CookbookLoaderWithChefignore)
|
|
123
|
+
.to receive(:load)
|
|
124
|
+
.with(name, cache_path)
|
|
125
|
+
.and_return(cookbook_version)
|
|
126
126
|
|
|
127
127
|
cookbook_versions[name] = cookbook_version
|
|
128
128
|
cookbook_locks[name] = lock
|
|
@@ -186,9 +186,9 @@ describe ChefDK::Policyfile::Uploader do
|
|
|
186
186
|
expect(http_client).to receive(:get).with(list_cookbooks_url).and_return(existing_cookbook_on_remote)
|
|
187
187
|
|
|
188
188
|
cookbook_uploader = instance_double("Chef::CookbookUploader")
|
|
189
|
-
expect(Chef::CookbookUploader).to receive(:new)
|
|
190
|
-
with(cookbook_versions.values, rest: http_client, policy_mode: policy_document_native_api)
|
|
191
|
-
and_return(cookbook_uploader)
|
|
189
|
+
expect(Chef::CookbookUploader).to receive(:new)
|
|
190
|
+
.with(cookbook_versions.values, rest: http_client, policy_mode: policy_document_native_api)
|
|
191
|
+
.and_return(cookbook_uploader)
|
|
192
192
|
expect(cookbook_uploader).to receive(:upload_cookbooks)
|
|
193
193
|
|
|
194
194
|
expect_policyfile_upload
|
|
@@ -228,9 +228,9 @@ describe ChefDK::Policyfile::Uploader do
|
|
|
228
228
|
expect(http_client).to receive(:get).with(list_cookbooks_url).and_return(existing_cookbook_on_remote)
|
|
229
229
|
|
|
230
230
|
cookbook_uploader = instance_double("Chef::CookbookUploader")
|
|
231
|
-
expect(Chef::CookbookUploader).to receive(:new)
|
|
232
|
-
with(expected_cookbooks_for_upload, rest: http_client, policy_mode: policy_document_native_api)
|
|
233
|
-
and_return(cookbook_uploader)
|
|
231
|
+
expect(Chef::CookbookUploader).to receive(:new)
|
|
232
|
+
.with(expected_cookbooks_for_upload, rest: http_client, policy_mode: policy_document_native_api)
|
|
233
|
+
.and_return(cookbook_uploader)
|
|
234
234
|
expect(cookbook_uploader).to receive(:upload_cookbooks)
|
|
235
235
|
|
|
236
236
|
expect_policyfile_upload
|
|
@@ -326,25 +326,25 @@ describe ChefDK::Policyfile::Uploader do
|
|
|
326
326
|
it "uploads the policyfile as a data bag item" do
|
|
327
327
|
response = double("Net::HTTP response", code: "404")
|
|
328
328
|
error = Net::HTTPServerException.new("Not Found", response)
|
|
329
|
-
expect(http_client).to receive(:put)
|
|
330
|
-
with("data/policyfiles/example-unit-test", policyfile_as_data_bag_item)
|
|
331
|
-
and_raise(error)
|
|
332
|
-
expect(http_client).to receive(:post)
|
|
333
|
-
with("data/policyfiles", policyfile_as_data_bag_item)
|
|
329
|
+
expect(http_client).to receive(:put)
|
|
330
|
+
.with("data/policyfiles/example-unit-test", policyfile_as_data_bag_item)
|
|
331
|
+
.and_raise(error)
|
|
332
|
+
expect(http_client).to receive(:post)
|
|
333
|
+
.with("data/policyfiles", policyfile_as_data_bag_item)
|
|
334
334
|
|
|
335
335
|
uploader.data_bag_item_create
|
|
336
336
|
end
|
|
337
337
|
|
|
338
338
|
it "replaces an existing policyfile on the server if it exists" do
|
|
339
|
-
expect(http_client).to receive(:put)
|
|
340
|
-
with("data/policyfiles/example-unit-test", policyfile_as_data_bag_item)
|
|
339
|
+
expect(http_client).to receive(:put)
|
|
340
|
+
.with("data/policyfiles/example-unit-test", policyfile_as_data_bag_item)
|
|
341
341
|
uploader.data_bag_item_create
|
|
342
342
|
end
|
|
343
343
|
|
|
344
344
|
it "creates the data bag and item to upload the policy" do
|
|
345
345
|
expect(http_client).to receive(:post).with("data", policyfiles_data_bag)
|
|
346
|
-
expect(http_client).to receive(:put)
|
|
347
|
-
with("data/policyfiles/example-unit-test", policyfile_as_data_bag_item)
|
|
346
|
+
expect(http_client).to receive(:put)
|
|
347
|
+
.with("data/policyfiles/example-unit-test", policyfile_as_data_bag_item)
|
|
348
348
|
uploader.upload_policy
|
|
349
349
|
end
|
|
350
350
|
|
|
@@ -386,8 +386,8 @@ describe ChefDK::Policyfile::Uploader do
|
|
|
386
386
|
}
|
|
387
387
|
end
|
|
388
388
|
def expect_policyfile_upload
|
|
389
|
-
expect(http_client).to receive(:put)
|
|
390
|
-
with("/policy_groups/unit-test/policies/example", policyfile_lock_data)
|
|
389
|
+
expect(http_client).to receive(:put)
|
|
390
|
+
.with("/policy_groups/unit-test/policies/example", policyfile_lock_data)
|
|
391
391
|
end
|
|
392
392
|
|
|
393
393
|
it "enables native document mode for policyfiles" do
|
|
@@ -395,8 +395,8 @@ describe ChefDK::Policyfile::Uploader do
|
|
|
395
395
|
end
|
|
396
396
|
|
|
397
397
|
it "uploads the policyfile to the native API" do
|
|
398
|
-
expect(http_client).to receive(:put)
|
|
399
|
-
with("/policy_groups/unit-test/policies/example", policyfile_lock_data)
|
|
398
|
+
expect(http_client).to receive(:put)
|
|
399
|
+
.with("/policy_groups/unit-test/policies/example", policyfile_lock_data)
|
|
400
400
|
|
|
401
401
|
uploader.upload_policy
|
|
402
402
|
end
|
|
@@ -217,20 +217,20 @@ describe ChefDK::PolicyfileCompiler, "when expressing the Policyfile graph deman
|
|
|
217
217
|
before do
|
|
218
218
|
allow(policyfile).to receive(:default_source).and_return([default_source_obj])
|
|
219
219
|
|
|
220
|
-
allow(default_source_obj).to receive(:universe_graph)
|
|
221
|
-
and_return(trimmed_cookbook_universe)
|
|
220
|
+
allow(default_source_obj).to receive(:universe_graph)
|
|
221
|
+
.and_return(trimmed_cookbook_universe)
|
|
222
222
|
|
|
223
|
-
allow(default_source_obj).to receive(:preferred_source_for?)
|
|
224
|
-
with("remote-cb")
|
|
225
|
-
and_return(true)
|
|
223
|
+
allow(default_source_obj).to receive(:preferred_source_for?)
|
|
224
|
+
.with("remote-cb")
|
|
225
|
+
.and_return(true)
|
|
226
226
|
|
|
227
|
-
allow(default_source_obj).to receive(:source_options_for)
|
|
228
|
-
with("remote-cb", "1.1.1")
|
|
229
|
-
and_return(remote_cb_source_opts)
|
|
227
|
+
allow(default_source_obj).to receive(:source_options_for)
|
|
228
|
+
.with("remote-cb", "1.1.1")
|
|
229
|
+
.and_return(remote_cb_source_opts)
|
|
230
230
|
|
|
231
|
-
allow(ChefDK::Policyfile::CookbookLocationSpecification).to receive(:new)
|
|
232
|
-
with("remote-cb", "= 1.1.1", remote_cb_source_opts, policyfile.storage_config)
|
|
233
|
-
and_return(cb_location_spec)
|
|
231
|
+
allow(ChefDK::Policyfile::CookbookLocationSpecification).to receive(:new)
|
|
232
|
+
.with("remote-cb", "= 1.1.1", remote_cb_source_opts, policyfile.storage_config)
|
|
233
|
+
.and_return(cb_location_spec)
|
|
234
234
|
|
|
235
235
|
allow(cb_location_spec).to receive(:installed?).and_return(true)
|
|
236
236
|
end
|
|
@@ -240,9 +240,9 @@ describe ChefDK::PolicyfileCompiler, "when expressing the Policyfile graph deman
|
|
|
240
240
|
context "with an implied default recipe" do
|
|
241
241
|
|
|
242
242
|
before do
|
|
243
|
-
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
244
|
-
with("default")
|
|
245
|
-
and_return(true)
|
|
243
|
+
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
244
|
+
.with("default")
|
|
245
|
+
.and_return(true)
|
|
246
246
|
end
|
|
247
247
|
|
|
248
248
|
let(:run_list) { ["remote-cb"] }
|
|
@@ -256,9 +256,9 @@ describe ChefDK::PolicyfileCompiler, "when expressing the Policyfile graph deman
|
|
|
256
256
|
context "with an explicit recipe name" do
|
|
257
257
|
|
|
258
258
|
before do
|
|
259
|
-
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
260
|
-
with("this_exists")
|
|
261
|
-
and_return(true)
|
|
259
|
+
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
260
|
+
.with("this_exists")
|
|
261
|
+
.and_return(true)
|
|
262
262
|
end
|
|
263
263
|
|
|
264
264
|
let(:run_list) { ["remote-cb::this_exists"] }
|
|
@@ -272,9 +272,9 @@ describe ChefDK::PolicyfileCompiler, "when expressing the Policyfile graph deman
|
|
|
272
272
|
context "with a fully qualified recipe name" do
|
|
273
273
|
|
|
274
274
|
before do
|
|
275
|
-
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
276
|
-
with("this_exists")
|
|
277
|
-
and_return(true)
|
|
275
|
+
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
276
|
+
.with("this_exists")
|
|
277
|
+
.and_return(true)
|
|
278
278
|
end
|
|
279
279
|
|
|
280
280
|
let(:run_list) { ["recipe[remote-cb::this_exists]"] }
|
|
@@ -291,22 +291,22 @@ describe ChefDK::PolicyfileCompiler, "when expressing the Policyfile graph deman
|
|
|
291
291
|
|
|
292
292
|
context "when the cookbook with a missing recipe appears once in the run list" do
|
|
293
293
|
before do
|
|
294
|
-
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
295
|
-
with("this_recipe_doesnt_exist")
|
|
296
|
-
and_return(false)
|
|
294
|
+
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
295
|
+
.with("this_recipe_doesnt_exist")
|
|
296
|
+
.and_return(false)
|
|
297
297
|
end
|
|
298
298
|
|
|
299
299
|
let(:run_list) { ["remote-cb::this_recipe_doesnt_exist"] }
|
|
300
300
|
|
|
301
301
|
it "emits an error" do
|
|
302
|
-
message =
|
|
303
|
-
The installed cookbooks do not contain all the recipes required by your run list(s):
|
|
304
|
-
Cookbook 'remote-cb' = 1.1.1 {:artifactserver=>"https://supermarket.example/c/remote-cb/1.1.1/download", :version=>"1.1.1"}
|
|
305
|
-
is missing the following required recipes:
|
|
306
|
-
* this_recipe_doesnt_exist
|
|
307
|
-
|
|
308
|
-
You may have specified an incorrect recipe in your run list,
|
|
309
|
-
or this recipe may not be available in that version of the cookbook
|
|
302
|
+
message = <<~MESSAGE
|
|
303
|
+
The installed cookbooks do not contain all the recipes required by your run list(s):
|
|
304
|
+
Cookbook 'remote-cb' = 1.1.1 {:artifactserver=>"https://supermarket.example/c/remote-cb/1.1.1/download", :version=>"1.1.1"}
|
|
305
|
+
is missing the following required recipes:
|
|
306
|
+
* this_recipe_doesnt_exist
|
|
307
|
+
|
|
308
|
+
You may have specified an incorrect recipe in your run list,
|
|
309
|
+
or this recipe may not be available in that version of the cookbook
|
|
310
310
|
MESSAGE
|
|
311
311
|
|
|
312
312
|
expect { policyfile.install }.to raise_error do |e|
|
|
@@ -319,25 +319,25 @@ MESSAGE
|
|
|
319
319
|
context "when there is one valid item and one invalid item in the run list" do
|
|
320
320
|
|
|
321
321
|
before do
|
|
322
|
-
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
323
|
-
with("default")
|
|
324
|
-
and_return(true)
|
|
325
|
-
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
326
|
-
with("this_recipe_doesnt_exist")
|
|
327
|
-
and_return(false)
|
|
322
|
+
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
323
|
+
.with("default")
|
|
324
|
+
.and_return(true)
|
|
325
|
+
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
326
|
+
.with("this_recipe_doesnt_exist")
|
|
327
|
+
.and_return(false)
|
|
328
328
|
end
|
|
329
329
|
|
|
330
330
|
let(:run_list) { ["remote-cb::default", "remote-cb::this_recipe_doesnt_exist"] }
|
|
331
331
|
|
|
332
332
|
it "emits an error" do
|
|
333
|
-
message =
|
|
334
|
-
The installed cookbooks do not contain all the recipes required by your run list(s):
|
|
335
|
-
Cookbook 'remote-cb' = 1.1.1 {:artifactserver=>"https://supermarket.example/c/remote-cb/1.1.1/download", :version=>"1.1.1"}
|
|
336
|
-
is missing the following required recipes:
|
|
337
|
-
* this_recipe_doesnt_exist
|
|
338
|
-
|
|
339
|
-
You may have specified an incorrect recipe in your run list,
|
|
340
|
-
or this recipe may not be available in that version of the cookbook
|
|
333
|
+
message = <<~MESSAGE
|
|
334
|
+
The installed cookbooks do not contain all the recipes required by your run list(s):
|
|
335
|
+
Cookbook 'remote-cb' = 1.1.1 {:artifactserver=>"https://supermarket.example/c/remote-cb/1.1.1/download", :version=>"1.1.1"}
|
|
336
|
+
is missing the following required recipes:
|
|
337
|
+
* this_recipe_doesnt_exist
|
|
338
|
+
|
|
339
|
+
You may have specified an incorrect recipe in your run list,
|
|
340
|
+
or this recipe may not be available in that version of the cookbook
|
|
341
341
|
MESSAGE
|
|
342
342
|
|
|
343
343
|
expect { policyfile.install }.to raise_error do |e|
|
|
@@ -351,26 +351,26 @@ MESSAGE
|
|
|
351
351
|
context "when there are multiple invalid items in the run list" do
|
|
352
352
|
|
|
353
353
|
before do
|
|
354
|
-
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
355
|
-
with("this_recipe_doesnt_exist")
|
|
356
|
-
and_return(false)
|
|
357
|
-
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
358
|
-
with("this_also_doesnt_exist")
|
|
359
|
-
and_return(false)
|
|
354
|
+
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
355
|
+
.with("this_recipe_doesnt_exist")
|
|
356
|
+
.and_return(false)
|
|
357
|
+
expect(cb_location_spec).to receive(:cookbook_has_recipe?)
|
|
358
|
+
.with("this_also_doesnt_exist")
|
|
359
|
+
.and_return(false)
|
|
360
360
|
end
|
|
361
361
|
|
|
362
362
|
let(:run_list) { ["remote-cb::this_recipe_doesnt_exist", "remote-cb::this_also_doesnt_exist"] }
|
|
363
363
|
|
|
364
364
|
it "emits an error" do
|
|
365
|
-
message =
|
|
366
|
-
The installed cookbooks do not contain all the recipes required by your run list(s):
|
|
367
|
-
Cookbook 'remote-cb' = 1.1.1 {:artifactserver=>"https://supermarket.example/c/remote-cb/1.1.1/download", :version=>"1.1.1"}
|
|
368
|
-
is missing the following required recipes:
|
|
369
|
-
* this_recipe_doesnt_exist
|
|
370
|
-
* this_also_doesnt_exist
|
|
371
|
-
|
|
372
|
-
You may have specified an incorrect recipe in your run list,
|
|
373
|
-
or this recipe may not be available in that version of the cookbook
|
|
365
|
+
message = <<~MESSAGE
|
|
366
|
+
The installed cookbooks do not contain all the recipes required by your run list(s):
|
|
367
|
+
Cookbook 'remote-cb' = 1.1.1 {:artifactserver=>"https://supermarket.example/c/remote-cb/1.1.1/download", :version=>"1.1.1"}
|
|
368
|
+
is missing the following required recipes:
|
|
369
|
+
* this_recipe_doesnt_exist
|
|
370
|
+
* this_also_doesnt_exist
|
|
371
|
+
|
|
372
|
+
You may have specified an incorrect recipe in your run list,
|
|
373
|
+
or this recipe may not be available in that version of the cookbook
|
|
374
374
|
MESSAGE
|
|
375
375
|
|
|
376
376
|
expect { policyfile.install }.to raise_error do |e|
|
|
@@ -948,9 +948,9 @@ MESSAGE
|
|
|
948
948
|
expected_source_options = { artifactserver: "https://chef.example/url", version: "1.1.1" }
|
|
949
949
|
|
|
950
950
|
expect(community_source).to be_a(ChefDK::Policyfile::CommunityCookbookSource)
|
|
951
|
-
expect(community_source).to receive(:source_options_for)
|
|
952
|
-
with("remote-cb", "1.1.1")
|
|
953
|
-
and_return(expected_source_options)
|
|
951
|
+
expect(community_source).to receive(:source_options_for)
|
|
952
|
+
.with("remote-cb", "1.1.1")
|
|
953
|
+
.and_return(expected_source_options)
|
|
954
954
|
|
|
955
955
|
location_spec = policyfile.create_spec_for_cookbook("remote-cb", "1.1.1")
|
|
956
956
|
expect(location_spec.source_options).to eq(expected_source_options)
|
|
@@ -968,9 +968,9 @@ MESSAGE
|
|
|
968
968
|
expected_repo_options = { path: "path/to/cookbook", version: "1.0.0" }
|
|
969
969
|
repo_source = policyfile.default_source.last
|
|
970
970
|
expect(repo_source).to be_a(ChefDK::Policyfile::ChefRepoCookbookSource)
|
|
971
|
-
expect(repo_source).to receive(:source_options_for)
|
|
972
|
-
with("repo-cookbook-one", "1.0.0")
|
|
973
|
-
and_return(expected_repo_options)
|
|
971
|
+
expect(repo_source).to receive(:source_options_for)
|
|
972
|
+
.with("repo-cookbook-one", "1.0.0")
|
|
973
|
+
.and_return(expected_repo_options)
|
|
974
974
|
|
|
975
975
|
repo_cb_location = policyfile.create_spec_for_cookbook("repo-cookbook-one", "1.0.0")
|
|
976
976
|
expect(repo_cb_location.source_options).to eq(expected_repo_options)
|
|
@@ -978,9 +978,9 @@ MESSAGE
|
|
|
978
978
|
expected_server_options = { artifactserver: "https://chef.example/url", version: "1.1.1" }
|
|
979
979
|
community_source = policyfile.default_source.first
|
|
980
980
|
expect(community_source).to be_a(ChefDK::Policyfile::CommunityCookbookSource)
|
|
981
|
-
expect(community_source).to receive(:source_options_for)
|
|
982
|
-
with("remote-cb-two", "1.1.1")
|
|
983
|
-
and_return(expected_server_options)
|
|
981
|
+
expect(community_source).to receive(:source_options_for)
|
|
982
|
+
.with("remote-cb-two", "1.1.1")
|
|
983
|
+
.and_return(expected_server_options)
|
|
984
984
|
|
|
985
985
|
remote_cb_location = policyfile.create_spec_for_cookbook("remote-cb-two", "1.1.1")
|
|
986
986
|
expect(remote_cb_location.source_options).to eq(expected_server_options)
|
|
@@ -1053,16 +1053,16 @@ MESSAGE
|
|
|
1053
1053
|
it "raises an error describing the conflict" do
|
|
1054
1054
|
repo_path = File.expand_path("path/to/repo")
|
|
1055
1055
|
|
|
1056
|
-
expected_err =
|
|
1057
|
-
Source supermarket(https://supermarket.chef.io) and chef_repo(#{repo_path}) contain conflicting cookbooks:
|
|
1058
|
-
- remote-cb
|
|
1059
|
-
- remote-cb-two
|
|
1056
|
+
expected_err = <<~ERROR
|
|
1057
|
+
Source supermarket(https://supermarket.chef.io) and chef_repo(#{repo_path}) contain conflicting cookbooks:
|
|
1058
|
+
- remote-cb
|
|
1059
|
+
- remote-cb-two
|
|
1060
1060
|
|
|
1061
|
-
You can set a preferred source to resolve this issue with code like:
|
|
1061
|
+
You can set a preferred source to resolve this issue with code like:
|
|
1062
1062
|
|
|
1063
|
-
default_source :supermarket, "https://supermarket.chef.io" do |s|
|
|
1064
|
-
|
|
1065
|
-
end
|
|
1063
|
+
default_source :supermarket, "https://supermarket.chef.io" do |s|
|
|
1064
|
+
s.preferred_for "remote-cb", "remote-cb-two"
|
|
1065
|
+
end
|
|
1066
1066
|
ERROR
|
|
1067
1067
|
|
|
1068
1068
|
expect { policyfile.remote_artifacts_graph }.to raise_error do |error|
|
|
@@ -1156,15 +1156,15 @@ ERROR
|
|
|
1156
1156
|
it "raises an error describing the conflict" do
|
|
1157
1157
|
repo_path = File.expand_path("path/to/repo")
|
|
1158
1158
|
|
|
1159
|
-
expected_err =
|
|
1160
|
-
Source supermarket(https://supermarket.chef.io) and chef_repo(#{repo_path}) contain conflicting cookbooks:
|
|
1161
|
-
- remote-cb-two
|
|
1159
|
+
expected_err = <<~ERROR
|
|
1160
|
+
Source supermarket(https://supermarket.chef.io) and chef_repo(#{repo_path}) contain conflicting cookbooks:
|
|
1161
|
+
- remote-cb-two
|
|
1162
1162
|
|
|
1163
|
-
You can set a preferred source to resolve this issue with code like:
|
|
1163
|
+
You can set a preferred source to resolve this issue with code like:
|
|
1164
1164
|
|
|
1165
|
-
default_source :supermarket, "https://supermarket.chef.io" do |s|
|
|
1166
|
-
|
|
1167
|
-
end
|
|
1165
|
+
default_source :supermarket, "https://supermarket.chef.io" do |s|
|
|
1166
|
+
s.preferred_for "remote-cb-two"
|
|
1167
|
+
end
|
|
1168
1168
|
ERROR
|
|
1169
1169
|
|
|
1170
1170
|
expect { policyfile.remote_artifacts_graph }.to raise_error do |error|
|