diff options
Diffstat (limited to 'spec/unit/cookbook_uploader_spec.rb')
-rw-r--r-- | spec/unit/cookbook_uploader_spec.rb | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/spec/unit/cookbook_uploader_spec.rb b/spec/unit/cookbook_uploader_spec.rb index af25baff13..152e5373f0 100644 --- a/spec/unit/cookbook_uploader_spec.rb +++ b/spec/unit/cookbook_uploader_spec.rb @@ -45,7 +45,13 @@ describe Chef::CookbookUploader do let(:sandbox_commit_uri) { "https://chef.example.org/sandboxes/abc123" } - let(:uploader) { described_class.new(cookbooks_to_upload, :rest => http_client) } + let(:policy_mode) { false } + + let(:uploader) { described_class.new(cookbooks_to_upload, rest: http_client, policy_mode: policy_mode) } + + it "defaults to not enabling policy mode" do + expect(described_class.new(cookbooks_to_upload, rest: http_client).policy_mode?).to be(false) + end it "has a list of cookbooks to upload" do expect(uploader.cookbooks).to eq(cookbooks_to_upload) @@ -61,7 +67,7 @@ describe Chef::CookbookUploader do describe "uploading cookbooks" do def url_for(cksum) - "https://storage.example.com/#{cksum}" + "https://storage.example.com/#{cksum}" end let(:sandbox_response) do @@ -94,6 +100,10 @@ describe Chef::CookbookUploader do end end + def expected_save_url(cookbook) + "cookbooks/#{cookbook.name}/#{cookbook.version}" + end + def expect_sandbox_commit expect(http_client).to receive(:put).with(sandbox_commit_uri, {:is_completed => true}) end @@ -102,7 +112,7 @@ describe Chef::CookbookUploader do cookbooks_to_upload.each do |cookbook| expect(http_client).to receive(:put). - with(cookbook.save_url, cookbook) + with(expected_save_url(cookbook), cookbook) end end @@ -155,6 +165,30 @@ describe Chef::CookbookUploader do end end + + context "when policy_mode is specified" do + + let(:cksums_not_on_remote) do + checksums_of_cookbook_files.keys + end + + let(:policy_mode) { true } + + def expected_save_url(cookbook) + "cookbook_artifacts/#{cookbook.name}/#{cookbook.version}" + end + + it "uploads all files in a sandbox transaction, then creates cookbooks on the server using cookbook_artifacts API" do + expect_sandbox_create + expect_checksum_upload + expect_sandbox_commit + expect_cookbook_create + + uploader.upload_cookbooks + end + + + end end end |