diff options
Diffstat (limited to 'spec/unit/knife/cookbook_download_spec.rb')
-rw-r--r-- | spec/unit/knife/cookbook_download_spec.rb | 148 |
1 files changed, 74 insertions, 74 deletions
diff --git a/spec/unit/knife/cookbook_download_spec.rb b/spec/unit/knife/cookbook_download_spec.rb index 64b754d173..baa8acc6f4 100644 --- a/spec/unit/knife/cookbook_download_spec.rb +++ b/spec/unit/knife/cookbook_download_spec.rb @@ -16,7 +16,7 @@ # limitations under the License. # -require 'spec_helper' +require "spec_helper" describe Chef::Knife::CookbookDownload do before(:each) do @@ -25,66 +25,66 @@ describe Chef::Knife::CookbookDownload do allow(@knife.ui).to receive(:stderr).and_return(@stderr) end - describe 'run' do - it 'should print usage and exit when a cookbook name is not provided' do + describe "run" do + it "should print usage and exit when a cookbook name is not provided" do @knife.name_args = [] expect(@knife).to receive(:show_usage) expect(@knife.ui).to receive(:fatal).with(/must specify a cookbook name/) expect { @knife.run }.to raise_error(SystemExit) end - it 'should exit with a fatal error when there is no cookbook on the server' do - @knife.name_args = ['foobar', nil] + it "should exit with a fatal error when there is no cookbook on the server" do + @knife.name_args = ["foobar", nil] expect(@knife).to receive(:determine_version).and_return(nil) - expect(@knife.ui).to receive(:fatal).with('No such cookbook found') + expect(@knife.ui).to receive(:fatal).with("No such cookbook found") expect { @knife.run }.to raise_error(SystemExit) end - describe 'with a cookbook name' do + describe "with a cookbook name" do before(:each) do - @knife.name_args = ['foobar'] - @knife.config[:download_directory] = '/var/tmp/chef' - @rest_mock = double('rest') + @knife.name_args = ["foobar"] + @knife.config[:download_directory] = "/var/tmp/chef" + @rest_mock = double("rest") allow(@knife).to receive(:rest).and_return(@rest_mock) @manifest_data = { :recipes => [ - {'path' => 'recipes/foo.rb', - 'url' => 'http://example.org/files/foo.rb'}, - {'path' => 'recipes/bar.rb', - 'url' => 'http://example.org/files/bar.rb'}, + {"path" => "recipes/foo.rb", + "url" => "http://example.org/files/foo.rb"}, + {"path" => "recipes/bar.rb", + "url" => "http://example.org/files/bar.rb"}, ], :templates => [ - {'path' => 'templates/default/foo.erb', - 'url' => 'http://example.org/files/foo.erb'}, - {'path' => 'templates/default/bar.erb', - 'url' => 'http://example.org/files/bar.erb'}, + {"path" => "templates/default/foo.erb", + "url" => "http://example.org/files/foo.erb"}, + {"path" => "templates/default/bar.erb", + "url" => "http://example.org/files/bar.erb"}, ], :attributes => [ - {'path' => 'attributes/default.rb', - 'url' => 'http://example.org/files/default.rb'}, + {"path" => "attributes/default.rb", + "url" => "http://example.org/files/default.rb"}, ], } - @cookbook_mock = double('cookbook') - allow(@cookbook_mock).to receive(:version).and_return('1.0.0') + @cookbook_mock = double("cookbook") + allow(@cookbook_mock).to receive(:version).and_return("1.0.0") allow(@cookbook_mock).to receive(:manifest).and_return(@manifest_data) expect(Chef::CookbookVersion).to receive(:load).with("foobar", "1.0.0"). and_return(@cookbook_mock) end - it 'should determine which version if one was not explicitly specified'do + it "should determine which version if one was not explicitly specified"do allow(@cookbook_mock).to receive(:manifest).and_return({}) - expect(@knife).to receive(:determine_version).and_return('1.0.0') - expect(File).to receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(false) + expect(@knife).to receive(:determine_version).and_return("1.0.0") + expect(File).to receive(:exists?).with("/var/tmp/chef/foobar-1.0.0").and_return(false) allow(Chef::CookbookVersion).to receive(:COOKBOOK_SEGEMENTS).and_return([]) @knife.run end - describe 'and a version' do + describe "and a version" do before(:each) do - @knife.name_args << '1.0.0' - @files = @manifest_data.values.map { |v| v.map { |i| i['path'] } }.flatten.uniq + @knife.name_args << "1.0.0" + @files = @manifest_data.values.map { |v| v.map { |i| i["path"] } }.flatten.uniq @files_mocks = {} @files.map { |f| File.basename(f) }.flatten.uniq.each do |f| @files_mocks[f] = double("#{f}_mock") @@ -92,13 +92,13 @@ describe Chef::Knife::CookbookDownload do end end - it 'should print an error and exit if the cookbook download directory already exists' do - expect(File).to receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(true) + it "should print an error and exit if the cookbook download directory already exists" do + expect(File).to receive(:exists?).with("/var/tmp/chef/foobar-1.0.0").and_return(true) expect(@knife.ui).to receive(:fatal).with(/\/var\/tmp\/chef\/foobar-1\.0\.0 exists/i) expect { @knife.run }.to raise_error(SystemExit) end - describe 'when downloading the cookbook' do + describe "when downloading the cookbook" do before(:each) do @files.map { |f| File.dirname(f) }.flatten.uniq.each do |dir| expect(FileUtils).to receive(:mkdir_p).with("/var/tmp/chef/foobar-1.0.0/#{dir}"). @@ -117,20 +117,20 @@ describe Chef::Knife::CookbookDownload do end it "should download the cookbook when the cookbook download directory doesn't exist" do - expect(File).to receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(false) + expect(File).to receive(:exists?).with("/var/tmp/chef/foobar-1.0.0").and_return(false) @knife.run - ['attributes', 'recipes', 'templates'].each do |segment| + ["attributes", "recipes", "templates"].each do |segment| expect(@stderr.string).to match /downloading #{segment}/im end expect(@stderr.string).to match /downloading foobar cookbook version 1\.0\.0/im expect(@stderr.string).to match /cookbook downloaded to \/var\/tmp\/chef\/foobar-1\.0\.0/im end - describe 'with -f or --force' do - it 'should remove the existing the cookbook download directory if it exists' do + describe "with -f or --force" do + it "should remove the existing the cookbook download directory if it exists" do @knife.config[:force] = true - expect(File).to receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(true) - expect(FileUtils).to receive(:rm_rf).with('/var/tmp/chef/foobar-1.0.0') + expect(File).to receive(:exists?).with("/var/tmp/chef/foobar-1.0.0").and_return(true) + expect(FileUtils).to receive(:rm_rf).with("/var/tmp/chef/foobar-1.0.0") @knife.run end end @@ -141,94 +141,94 @@ describe Chef::Knife::CookbookDownload do end - describe 'determine_version' do + describe "determine_version" do - it 'should return nil if there are no versions' do + it "should return nil if there are no versions" do expect(@knife).to receive(:available_versions).and_return(nil) expect(@knife.determine_version).to eq(nil) expect(@knife.version).to eq(nil) end - it 'should return and set the version if there is only one version' do - expect(@knife).to receive(:available_versions).at_least(:once).and_return(['1.0.0']) - expect(@knife.determine_version).to eq('1.0.0') - expect(@knife.version).to eq('1.0.0') + it "should return and set the version if there is only one version" do + expect(@knife).to receive(:available_versions).at_least(:once).and_return(["1.0.0"]) + expect(@knife.determine_version).to eq("1.0.0") + expect(@knife.version).to eq("1.0.0") end - it 'should ask which version to download and return it if there is more than one' do - expect(@knife).to receive(:available_versions).at_least(:once).and_return(['1.0.0', '2.0.0']) - expect(@knife).to receive(:ask_which_version).and_return('1.0.0') - expect(@knife.determine_version).to eq('1.0.0') + it "should ask which version to download and return it if there is more than one" do + expect(@knife).to receive(:available_versions).at_least(:once).and_return(["1.0.0", "2.0.0"]) + expect(@knife).to receive(:ask_which_version).and_return("1.0.0") + expect(@knife.determine_version).to eq("1.0.0") end - describe 'with -N or --latest' do - it 'should return and set the version to the latest version' do + describe "with -N or --latest" do + it "should return and set the version to the latest version" do @knife.config[:latest] = true expect(@knife).to receive(:available_versions).at_least(:once). - and_return(['1.0.0', '1.1.0', '2.0.0']) + and_return(["1.0.0", "1.1.0", "2.0.0"]) @knife.determine_version - expect(@knife.version.to_s).to eq('2.0.0') + expect(@knife.version.to_s).to eq("2.0.0") end end end - describe 'available_versions' do + describe "available_versions" do before(:each) do - @knife.cookbook_name = 'foobar' + @knife.cookbook_name = "foobar" end - it 'should return nil if there are no versions' do + it "should return nil if there are no versions" do expect(Chef::CookbookVersion).to receive(:available_versions). - with('foobar'). + with("foobar"). and_return(nil) expect(@knife.available_versions).to eq(nil) end - it 'should return the available versions' do + it "should return the available versions" do expect(Chef::CookbookVersion).to receive(:available_versions). - with('foobar'). - and_return(['1.1.0', '2.0.0', '1.0.0']) - expect(@knife.available_versions).to eq([Chef::Version.new('1.0.0'), - Chef::Version.new('1.1.0'), - Chef::Version.new('2.0.0')]) + with("foobar"). + and_return(["1.1.0", "2.0.0", "1.0.0"]) + expect(@knife.available_versions).to eq([Chef::Version.new("1.0.0"), + Chef::Version.new("1.1.0"), + Chef::Version.new("2.0.0")]) end - it 'should avoid multiple API calls to the server' do + it "should avoid multiple API calls to the server" do expect(Chef::CookbookVersion).to receive(:available_versions). once. - with('foobar'). - and_return(['1.1.0', '2.0.0', '1.0.0']) + with("foobar"). + and_return(["1.1.0", "2.0.0", "1.0.0"]) @knife.available_versions @knife.available_versions end end - describe 'ask_which_version' do + describe "ask_which_version" do before(:each) do - @knife.cookbook_name = 'foobar' - allow(@knife).to receive(:available_versions).and_return(['1.0.0', '1.1.0', '2.0.0']) + @knife.cookbook_name = "foobar" + allow(@knife).to receive(:available_versions).and_return(["1.0.0", "1.1.0", "2.0.0"]) end - it 'should prompt the user to select a version' do + it "should prompt the user to select a version" do prompt = /Which version do you want to download\?.+1\. foobar 1\.0\.0.+2\. foobar 1\.1\.0.+3\. foobar 2\.0\.0.+/m - expect(@knife).to receive(:ask_question).with(prompt).and_return('1') + expect(@knife).to receive(:ask_question).with(prompt).and_return("1") @knife.ask_which_version end it "should set the version to the user's selection" do - expect(@knife).to receive(:ask_question).and_return('1') + expect(@knife).to receive(:ask_question).and_return("1") @knife.ask_which_version - expect(@knife.version).to eq('1.0.0') + expect(@knife.version).to eq("1.0.0") end it "should print an error and exit if a version wasn't specified" do - expect(@knife).to receive(:ask_question).and_return('') + expect(@knife).to receive(:ask_question).and_return("") expect(@knife.ui).to receive(:error).with(/is not a valid value/i) expect { @knife.ask_which_version }.to raise_error(SystemExit) end - it 'should print an error if an invalid choice was selected' do - expect(@knife).to receive(:ask_question).and_return('100') + it "should print an error if an invalid choice was selected" do + expect(@knife).to receive(:ask_question).and_return("100") expect(@knife.ui).to receive(:error).with(/'100' is not a valid value/i) expect { @knife.ask_which_version }.to raise_error(SystemExit) end |